1

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

我有一个数据类型菜单的自定义字段,例如:

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

数据类型:菜单

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

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

提前致谢

4

1 回答 1

0

以下链接来自 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";
    }
于 2015-10-14T16:15:46.237 回答