【问题标题】:Calling Microsoft Dynamics CRM 2011 online from JAVA从 JAVA 在线调用 Microsoft Dynamics CRM 2011
【发布时间】:2013-01-04 00:08:43
【问题描述】:

我正在通过 Java 应用程序进行 Dynamics CRM 集成,并且我已经按照 CRM 培训工具包中的示例进行了操作,并成功地连接并创建了客户和联系人。 现在,在创建帐户以及将联系人与帐户连接时,我遇到了一些问题。 例如,我无法使用作为选项列表的“address1_freighttermscode”创建帐户。 我的代码如下:

private static OrganizationServiceStub.Guid createAccount(OrganizationServiceStub serviceStub, String[] args) {
    try {
        OrganizationServiceStub.Create entry = new OrganizationServiceStub.Create();
        OrganizationServiceStub.Entity newEntryInfo = new OrganizationServiceStub.Entity();
        OrganizationServiceStub.AttributeCollection collection = new OrganizationServiceStub.AttributeCollection();
        if (! (args[0].equals("null") )) {
          OrganizationServiceStub.KeyValuePairOfstringanyType values = new OrganizationServiceStub.KeyValuePairOfstringanyType();
          values.setKey("name");
          values.setValue(args[0]);
          collection.addKeyValuePairOfstringanyType(values);
        }
     if (! (args[13].equals("null"))){
          OrganizationServiceStub.KeyValuePairOfstringanyType incoterm = new OrganizationServiceStub.KeyValuePairOfstringanyType();
          incoterm.setKey("address1_freighttermscode");
          incoterm.setValue(args[13]);
          collection.addKeyValuePairOfstringanyType(incoterm);
        }

        newEntryInfo.setAttributes(collection);

        newEntryInfo.setLogicalName("account");

        entry.setEntity(newEntryInfo);

        OrganizationServiceStub.CreateResponse createResponse = serviceStub.create(entry);
        OrganizationServiceStub.Guid createResultGuid = createResponse.getCreateResult();

        System.out.println("New Account GUID: " + createResultGuid.getGuid());

        return createResultGuid;
    } catch (IOrganizationService_Create_OrganizationServiceFaultFault_FaultMessage e) {
        logger.error(e.getMessage());
    } catch (RemoteException e) {
        logger.error(e.getMessage());
    }

    return null;
}

当它执行时,我得到这个错误

[ERROR] Incorrect attribute value type System.String

有人有关于如何处理选项列表或查找的示例吗?

为了将联系人与帐户联系起来,我使用来自帐户的 GUID 和“帐户”填充字段 parentcustomeridparentcustomeridtype,但联系人没有与帐户关联。

【问题讨论】:

  • 请问您为什么要从 Java 中执行此操作?我能想到几个原因,但我想知道你的具体原因。
  • 您的答案得到答复了吗?如果是这样,请检查回复作为答案。否则,请告诉您还需要什么。
  • 嗨康拉德,我仍然没有答案。我是从 java 中这样做的,因为我是从 oracle 存储过程中调用的,这就是我从那里调用 web 服务的方式。
  • 我虽然是这样的情况。好吧,我在下面给你一个答案,不知道你是否看过。如果您需要更多帮助,请在其中添加评论(以保持线程的结构)。

标签: java dynamics-crm-2011


【解决方案1】:

要设置选项列表值,您必须使用 OptionSet,对于查找,您必须使用 EntityReference。请参阅 SDK 的 C# 文档,使用 Axis 生成的 Java 代码应该以相同的方式工作。

incoterm.setKey("address1_freighttermscode")   
//assuming the arg is an integer value that matches a picklist value for the attribute    
OptionSetValue freight = new OptionSetValue();
freight.Value = args[13];
incoterm.setValue(freight);    
collection.addKeyValuePairOfstringanyType(incoterm);

【讨论】:

  • 谢谢,选项集提示工作得很好。 Java 等效类是 OptionSetValue。现在我正在尝试实体引用,但同样这些类与 C# 不同。我有一个 EntityReference 类,我认为必须从我想要引用的实体中设置逻辑名称和 guid。是这样吗?
  • 为了将联系人与帐户关联,我还应该使用 parentcustomerid 的实体引用吗?
  • 我在 OptionSetValue 上的错误,在 Java 中与 C# 相同 - 我昨晚刚刚犯了一个错误,我已经更正了我的答案。查找应该是 EntityReference:msdn.microsoft.com/en-us/library/…。需要设置LogicalName属性和Id属性(LogicalName是字符串,Id是Guid)
  • thx,并且 parentcustomerid 我也应该作为 EntityReference 吗?我看到还有一个 parentcustomeridtype 将父级定义为帐户或联系人是字符串吗?
  • 终于搞定了,谢谢支持。只是关于更多问题,在选项集中我有描述无论如何我可以查询它们以获取值?谢谢
【解决方案2】:

我已经有十多年没有使用 Java 了(也从未使用过像 Dynamics 这样的 MS 创建),所以它可能与您喜欢的东西相去甚远。 :)

您可以使用 REST Web 服务并直接调用 CRM 创建您的实例。据我所知,这是独立于平台的,只要您可以连接到公开的服务 OrganizationData,它就应该可以工作。

【讨论】:

  • 据我所见,从 CRM 外部调用其余的 Web 服务可能比 SOAP 更具挑战性。目前,如果我可以举个例子来说明如何处理选项列表、查找和引用实体等对象,我想我可以让它正常工作。
  • 查找很容易。它基本上是一个实体的指南(加上一些基本信息、类型和名称等)。选项列表更加棘手,因为它们的值通常与组织名称哈希结合在一起。您是否对联系人实体进行了基本连接/过滤?这是一个很好的起点。
  • 不支持从 Java 调用 Dynamics CRM 2011 中的 REST Web 服务,因为 SDK 声明您必须从应用程序内访问 REST 服务(即经过身份验证的浏览器会话)。跨度>
  • 尼克的提示,与选项列表一起工作,试图解决剩下的问题。谢谢
  • 您引用的 IFRAME 正在浏览器会话中运行,该浏览器会话已通过其调用的 Dynamics CRM 实例的身份验证。这将使它在应用程序中。它记录在msdn.microsoft.com/en-us/library/gg334279.aspx。我并不是说它不能完成,只是它不受支持。使用 SOAP 端点是正确的方法。
猜你喜欢
  • 2011-12-17
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多