如何在Oracle的Rightnow API中设置自定义菜单字段值?
我有一个数据类型为Menu的自定义字段,如:
自定义字段名称:用户类型
数据类型:菜单
价值可以是:免费,付费或高级
任何人都可以通过解决这个问题向我发送java代码吗?
先谢谢
答案 0 :(得分:0)
following link来自Oracle Service Cloud开发人员文档。它有一个使用Java和Axis2设置联系人自定义字段的示例,它可能会为您提供设置自定义字段所需的大部分信息。
在较高级别,您必须创建一个Incident对象并指定要更新的事件的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";
}