Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从CRM插件调用web服务_C#_Web Services_Dynamics Crm - Fatal编程技术网

C# 从CRM插件调用web服务

C# 从CRM插件调用web服务,c#,web-services,dynamics-crm,C#,Web Services,Dynamics Crm,我们正在设计一个系统,其中业务计算将封装在CRM插件中,这些插件是从CRM中的工作流调用的 这些业务计算中有许多是在几种不同技术的遗留系统中进行的 问题是:我们是否必须将此代码作为C#代码移动到插件中,或者我们可以通过插件中的web服务调用它?您可以从插件中调用web服务,然后从工作流中调用这些插件。自从我接触CRM已经很多年了,但我过去经常这样做,应该不会有任何问题。您可以从插件调用web服务,然后从工作流调用这些插件。自从我接触CRM以来,已经有很多年了,但是我曾经做过,并且不应该有任何问题

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

这些业务计算中有许多是在几种不同技术的遗留系统中进行的


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

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

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

< P>自定义工作流插件是Windows工作流基础活动。无论您在工作流活动中可以做什么,都可以作为工作流插件来做——因此,答案是肯定的。但是,您可能希望将配置参数作为工作流活动的输入(即服务的URL)或将其存储在自定义实体中。通过这种方式,可以从CRM配置所有内容。您甚至可以导出工作流xaml,在设计器中修改它并将其重新导入CRM。在CRM 2011中,这甚至是一种受支持的方法(他们这么说)。注意,对于CRM在线,不支持自定义工作流活动。

< P>自定义工作流插件是Windows工作流基础活动。无论您在工作流活动中可以做什么,都可以作为工作流插件来做——因此,答案是肯定的。但是,您可能希望将配置参数作为工作流活动的输入(即服务的URL)或将其存储在自定义实体中。通过这种方式,可以从CRM配置所有内容。您甚至可以导出工作流xaml,在设计器中修改它并将其重新导入CRM。在CRM 2011中,这甚至是一种受支持的方法(他们这么说)。请注意,对于CRM online,不支持自定义工作流活动。

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

  • 您已经在特定实体/消息上注册了插件,工作流将触发该消息,从而调用您的插件
  • 您已经注册了一个自定义工作流活动,您将在工作流中作为一个步骤调用它
  • 您有几个不同的选项来存储配置信息(例如,服务端点URL等):

  • 在程序集中硬编码此数据
  • 在CRM中创建配置实体,并在运行时使用CRM web服务(即上下文中的IOOrganizationService实例)检索适当的配置记录
  • 在CRM中创建一个自定义操作,返回配置信息()
  • 对于插件,通过插件注册工具将配置信息添加到插件程序集步骤注册中的“不安全配置”或“安全配置”步骤,将配置信息传递给插件的构造函数
  • 对于自定义工作流活动,通过InParameter参数将配置信息传递给该活动
  • 每种方法都有其优缺点,这取决于多种因素,这些因素取决于您的场景:

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

    等等。

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

  • 您已经在特定实体/消息上注册了插件,工作流将触发该消息,从而调用您的插件
  • 您已经注册了一个自定义工作流活动,您将在工作流中作为一个步骤调用它
  • 您有几个不同的选项来存储配置信息(例如,服务端点URL等):

  • 在程序集中硬编码此数据
  • 在CRM中创建配置实体,并在运行时使用CRM web服务(即上下文中的IOOrganizationService实例)检索适当的配置记录
  • <