如何在 Oracle 的 Rightnow API 中设置自定义菜单字段值?
我有一个数据类型菜单的自定义字段,例如:
自定义字段名称:用户类型
数据类型:菜单
价值可以是:免费、付费或高级
任何人都可以通过解决这个问题将java代码发送给我吗?
提前致谢
如何在 Oracle 的 Rightnow API 中设置自定义菜单字段值?
我有一个数据类型菜单的自定义字段,例如:
自定义字段名称:用户类型
数据类型:菜单
价值可以是:免费、付费或高级
任何人都可以通过解决这个问题将java代码发送给我吗?
提前致谢
以下链接来自 Oracle Service Cloud 开发人员文档。它有一个使用 Java 和 Axis2 设置联系人自定义字段的示例,这可能会为您提供设置自定义字段所需的大部分信息。
概括地说,您必须创建一个事件对象并指定要更新的事件的 ID。然后,您必须使用通用对象创建自定义字段对象结构(因为每个站点都可以有自己独特的自定义字段)。最终,您的 SOAP 信封将包含您通过 java 代码构建的节点结构。由于您尝试设置菜单,因此最终结果是您的自定义字段是 NamedID 对象。您将菜单的查找名称设置为上面给出的三个值之一。
我自己是一个 C# 人,所以我的示例使用 C#,但是使用上面的链接作为示例也应该很容易移植到 Java。
public static void SetMenuTest()
{
Incident incident = new Incident();
incident.ID = new ID();
incident.ID.id = 1234;
incident.ID.idSpecified = true;
GenericField customField = new GenericField();
customField.name = "user_type";
customField.dataType = DataTypeEnum.NAMED_ID;
customField.dataTypeSpecified = true;
customField.DataValue = new DataValue();
customField.DataValue.Items = new object[1];
customField.DataValue.ItemsElementName = new ItemsChoiceType[18]; //18 is a named ID value. Inspect ItemChoiceTypes for values.
customField.DataValue.Items[0] = "Free"; //Or Paid, or Premium
customField.DataValue.ItemsElementName[0] = ItemsChoiceType.NamedIDValue;
GenericObject customFieldsc = new GenericObject();
customFieldsc.GenericFields = new GenericField[1];
customFieldsc.GenericFields[0] = customField;
customFieldsc.ObjectType = new RNObjectType();
customFieldsc.ObjectType.TypeName = "IncidentCustomFieldsc";
GenericField cField = new GenericField();
cField.name = "c";
cField.dataType = DataTypeEnum.OBJECT;
cField.dataTypeSpecified = true;
cField.DataValue = new DataValue();
cField.DataValue.Items = new object[1];
cField.DataValue.Items[0] = customFieldsc;
cField.DataValue.ItemsElementName = new ItemsChoiceType[1];
cField.DataValue.ItemsElementName[0] = ItemsChoiceType.ObjectValue;
incident.CustomFields = new GenericObject();
incident.CustomFields.GenericFields = new GenericField[1];
incident.CustomFields.GenericFields[0] = cField;
incident.CustomFields.ObjectType = new RNObjectType();
incident.CustomFields.ObjectType.TypeName = "IncidentCustomFields";
}