通过Web服务提供CRM 2011功能

时间:2013-09-06 07:41:27

标签: web-services dynamics-crm-2011

合作伙伴向我提供了他希望在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服务器中是否有一些应该修改的文件?这是否受微软支持? 还有其他选择吗?

2 个答案:

答案 0 :(得分:3)

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

对于CRM Online您可以提供这样的东西的唯一方法是扩展平台以及在这方面可用的内容。基于“代码”的主要领域,我相信可能对您有意义:

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

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

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

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

更新了有关更新问题的答案:

绝对没有支持的方法来扩展Microsofts提供的webservices。而且我没有办法在没有物理攻击他们的DLL的情况下不支持它。

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

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

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

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

这就像你要获得支持Crm Online和OnPremise的解决方案一样接近

答案 1 :(得分:0)

在这种情况下你真正需要的是服务总线,比如BizTalk,它是这些所需消息格式的中间人。以您想要的任何格式向BUS发送请求,BUS知道如何将其路由到请求中的系统,以及如何将请求从发送的格式转换为接收系统理解的格式。 / p>

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