0

一位合作伙伴向我提供了一系列他希望在 CRM 2011 Web 服务中具有的功能。

它们都不是真的很难编写,但我不知道如何扩展 Web 服务功能。

我应该编写的方法实现示例如下:

<wsdl:operation name="GetUnitConversions">
    <soap:operation style="document" soapAction="http://tempuri.org/ISales/GetUnitConversions"/>
    <wsdl:input>
        <soap:header message="tns:ServiceHeader" use="literal" part="Header"/>
        <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output>
        <soap:header message="tns:ServiceHeader" use="literal" part="Header"/>
        <soap:body use="literal"/>
    </wsdl:output>
</wsdl:operation>

CRM 服务器中是否有一些文件需要修改?微软支持吗?有什么选择吗?

4

2 回答 2

3

没有真正的方法可以“扩展”Microsoft Web 服务本身。它是一个固定框架,提供一组固定的 Web 服务和方法。

对于 CRM Online 提供此类服务的唯一方法是扩展平台以及在这方面对您可用的内容。基于“代码”的主要领域,我认为可能对您很重要的是:

  • 插件
  • 自定义工作流活动
  • HTML/Javascript/Silverlight 网络资源

其中一些需要实体支持(例如插件),但其他可以独立完成一些通用工作(例如 HTML 和 Silverlight 页面)

因此,基本上,如果他们需要将一组标准的“功能”添加到框架中,那么您必须使用上述方法创造性地为他们提供此功能。

如果它是内部部署的,那么您可能会编写一个外部服务,该服务反过来知道如何对 CRM 进行身份验证和执行操作。

更新答案以涵盖更新的问题:

绝对没有支持的方式来扩展 Microsoft 提供的 Web 服务。而且我不知道在没有物理破解他们的 DLL 的情况下甚至不支持它。

支持的方式是使用上述方法之一。为您提供一个支持方式的示例,该方式将允许您实现上述方法:

  • 创建一个名为“WebServiceCall”的实体
  • 在此创建 2 个属性:“方法”和“结果”
  • 在这个实体的 on PreCreate 中创建一个同步插件
  • 当插件触发时,它会读取方法、执行相关代码并设置结果。

要执行名为“GetUnitConversions”的方法,您所要做的就是:

  • 创建 WebServiceCall 类型的新记录并将方法设置为“GetUnitConversions”
  • 完成后,它将返回创建的记录的 id
  • 使用 id 检索实体并读取结果。

这与您将获得支持 Crm Online 和 OnPremise 的解决方案一样接近

于 2013-09-06T08:32:00.400 回答
0

在这种情况下,您真正​​需要的是一个服务 BUS,例如 BizTalk,它充当这些所需消息格式的中间人。以您想要的任何格式向 BUS 发送请求,BUS 知道如何将请求路由到请求中的任何系统,以及如何将请求从发送的格式转换为接收系统可以理解的格式。

在您的请求中,您没有理由必须创建插件。创建一个接收 Web 服务(理想情况下是 BUS)来接收消息,并使用 CRM SDK 来确定结果。

于 2013-09-06T12:14:13.983 回答