2024年5月30日发(作者:)
Dynamics CRM自定义开发—Plug-in
1、Dynamics CRM的背景与发展
Dynamics 365是微软的最新一代客户关系管理(CRM)系统,提供了从第一次接触客户
开始,经过商机创建,采购单生成到订单完成的整个购买流程的清晰管理。并且与Office
完美集成,可以快速地编辑管理数据。从业务角度,Dynamics 365可以强化和改进公司的
销售、营销和客户服务流程,并且可以通过报表来直观获取销售数据,提供快速、灵活的解
决方案。
从2017年11月份正式加入P-Dash项目组开始使用Dynamics 365以来,通过学习
和探索,对标准功能的流程和逻辑都有了一定的理解,同时,在标准功能的基础上,实际项
目中,我们可能还需要定制化功能来满足客户的需求。这篇主要介绍目前普遍应用于自定义
开发扩展Dynamics 365的Plug-in。
2、Plug-in介绍
Plug-in是能够与Dynamics 365集成的自定义逻辑代码,使用.Net进行开发和编译,
用于修改平台的标准行为或新建执行程序。 也可以理解成是针对Dynamics 365 触发的事
件的处理程序。可以让Plug-in注册已知事件集,以便在事件发生时运行自定义代码。
2.1 Plug-in Message
Message是Plug-in的触发事件,有数以百计的触发事件可以使用。下面介绍一些我
们常用的Message。
Create:在记录被创建时触发。所有的字段都包括在目标实体里,不可选择。
Update:在记录被更新时触发。可以自定义目标实体包括哪些字段,并且,只有选中
的字段发生更新时才会触发Plug-in执行。
Delete:在记录被删除时触发。需要注意的是,DeleteRequest虽然也有Target属性,
但是它的类型是EntityReference,而不是Entity。
Retrieve:在记录被检索时触发。例如在用户操作打开某条记录时。
RetrieveMultiple: 在多条记录被批量检索时触发。例如在用户打开系统View查看
时。
2.2 Plug-in Image
这个Image并不是图像的意思,可以理解成是程序执行前后实体的所有字段的数据备
份。下面的表格给出了不同类型事件的Image。
Image在执行Update的Plug-in时用的比较多。上面提到Update的目标实体只包
含指定字段,但是在执行Plug-in时很可能会需要其他字段的信息。这个时候Image就可
以避免再次从系统进行二次查询的麻烦。
3、开发一个Plug-in
Plug-in是实现 IPlugin 接口的自定义类。可以使用Visual Studio用C#语言来编写
代码。为了能够编译,必须添加和 程
序集的引用。
命名空间提供了Plug-in开发所需要的类和接口。是必须要有的。
扩展n类也是必须的,需要注意要定义public类。
IPluginExecutionContext包含描述执行插件的运行时环境的信息、与执行管道相关的
信息以及实体业务信息。包含在ceProvider参数中,该参数通过Execute
方法在执行时传递到插件。
代码示例:
在这里编写业务逻辑代码
4、注册和部署Plug-in
在完成代码编写之后,要使用Plug-in还需要把它注册到服务器。SDK提供了Plug-in
注册部署的专门工具:PluginRegistration。我们需要使用这个工具,把自定义代码编译之
后的dll部署到服务器。步骤如下:
(1) 连接到所属组织:
(2) 如果所属组织没有Assembly,需要首先注册一个Assembly。如果有则只需
要更新即可。选择编译完成的dll文件,勾选Plugin即可。
(3) 选择注册好的Assembly。一个Assembly可能包含多个Plug-in,选中需要添
加Step的,注册Step。
Step示例:其中Message是上面介绍过的,此处是Update,可以看见字段
是做了筛选的。
(4) 如果需要的话,可以对这个Step注册Image。Update经常会用到Image。
Image示例:这个Step注册了Pre Image,通过字段选择,来实现变更前后
字段信息的获取。
(5) 在完成了完整的注册Assembly-注册Step-注册Image(可选)的流程之后,现
在这个插件已经是在使用中了。
5、总结和一些感悟
本篇主要介绍了Dynamics 365的Plug-in自定义开发的背景和基本的操作。之后也
会进一步结合项目中的案例,详细地说明开发过程中什么样的需求需要Plug-in来实现、如
何实现等等。
对于我个人而言,在接触Dynamics 365之前完全从事的是从零开始的开发项目和保
守,而随着越来越多的优秀的产品的涌现,平台化产品化也是目前IT领域的发展方向。在
产品基础上的二次开发是需要对现有标准功能有着扎实的掌握的,在实际的开发过程中,可
能会遇到一些小难题,也会总结出来自己的一些小技巧。Anyway,Practice makes perfect.


发布评论