繁体   English   中英

从CRM插件调用Web服务

[英]Calling web services from a CRM Plugin

我们正在设计一个系统,其中业务计算将封装在CRM插件中,然后从CRM的工作流中调用。

这些业务计算中有许多是采用多种不同技术的旧系统。

问题是:我们是否必须将此代码作为C#代码移动到插件中,还是可以通过插件中的Web服务调用它?

自定义工作流程插件是Windows Workflow Foundation活动。 无论您在工作流活动中可以做什么,都可以作为工作流插件进行操作-因此,答案是肯定的。 但是,您可能希望将配置参数作为工作流活动的输入(即,服务的URL)或将其存储在自定义实体中。 这样,可以从CRM配置所有内容。 您甚至可以导出工作流程xaml,在设计器中对其进行修改,然后将其重新导入到CRM中。 他们说,在CRM 2011中,这甚至是受支持的方法。 请注意,对于在线CRM,不支持自定义工作流程活动。

您可以从插件调用Web服务,然后从工作流调用这些插件。 自接触CRM以来已有很多年了,但我曾经这样做过,应该没有任何问题。

您提到插件将“从CRM的工作流中调用”,这可能意味着一些不同的事情:

  1. 您已经在特定实体/消息上注册了插件,并且工作流程将导致该消息触发,从而调用您的插件。
  2. 您已经注册了“自定义工作流程活动”,并将在工作流程中调用它作为步骤。

您可以使用几种不同的选项来存储配置信息(例如,服务端点URL等):

  1. 将该数据硬编码到程序集中。
  2. 在CRM中创建配置实体,并在运行时使用CRM Web服务(即,上下文中的IOrganizationService实例)检索适当的配置记录。
  3. 在CRM中创建一个自定义操作,该操作返回配置信息( link )。
  4. 对于插件,通过使用插件注册工具将信息添加到插件程序集的注册步骤中的“不安全配置”或“安全配置”步骤中,将配置信息传递给插件的构造函数。
  5. 对于自定义工作流活动,请通过InParameter参数将配置信息传递给活动。

每种方法的优缺点都取决于与您的方案有关的多种因素:

  • 您如何处理部署中的其他配置信息?
    • 如果您已经在使用配置实体或自定义操作,则最好在其中添加新字段,而不是在插件的注册步骤中“隐藏”配置信息(反之亦然)。
  • 配置信息将如何在不同的环境/组织中变化?
    • 如果配置是静态的,并且“永远”都不需要修改,则可以将其硬编码到程序集中。
    • 如果配置是静态的,并且您正在使用插件,则可以将信息放入插件的注册中,并且可以将其作为解决方案的一部分进行迁移。
  • 您正在使用哪个版本的CRM?
    • 自定义操作仅从CRM 2013起可用。
  • 解决方案是否需要在离线情况下工作?
    • 自定义操作在这种情况下可能不起作用。
  • 需要注册多少个不同的插件步骤? /多少个流程将使用自定义工作流程活动?
    • 如果有很多,那么在每个需要信息的地方指定信息可能变得难以维护,因此配置实体/操作可能更可取。
  • 谁将有权(并且将需要)修改配置信息?
    • 如果您使用的是自定义活动,并且非技术业务用户有权修改使用该活动的工作流,那么您可能不想将信息作为参数传递给活动(由于可能会引入用户错误) 。
  • 插件/定制活动的性能概况是什么?
    • 如果要获得最佳性能,则可能不希望从自定义实体或操作中检索配置信息的开销。

等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM