在Oracle的Rightnow API中设置自定义菜单字段值

时间:2015-10-08 15:05:48

标签: rightnow-crm

如何在Oracle的Rightnow API中设置自定义菜单字段值?

我有一个数据类型为Menu的自定义字段,如:

  

自定义字段名称:用户类型

     

数据类型:菜单

     

价值可以是:免费,付费或高级

任何人都可以通过解决这个问题向我发送java代码吗?

先谢谢

1 个答案:

答案 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";
    }