微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > 企业开发 > DynamicsCRM >

MS CRM 2011的自定义和开发(11)——插件(plugin)开

时间:2017-01-23 03:31  浏览:努力统计中...
上一篇文章《MS CRM 2011的自定义和开发(11)插件(plugin)开发(一)》,介绍了Microsoft Dynamics CRM 2011中插件plugin的基本概念,事件处理子系统的概念,本篇文章将介绍插件的开发的方法。

    上一篇文章《MS CRM 2011的自定义和开发(11)——插件(plugin)开发(一)》,介绍了Microsoft Dynamics CRM 2011中插件plugin的基本概念,事件处理子系统的概念,本篇文章将介绍插件的开发的方法。

    可以使用与.Net Framework 4.0 CLR兼容的任何开发语言编写插件代码,笔者我只会C#,所以后续代码都是C#代码,如果是VB.Net或者精通其他语言的程序员同学,我就爱莫能助啦。

    为了编写插件,需要在插件的Project中添加Microsoft.Xrm.SDK.dll以及Microsoft.Crm.Sdk.Proxy.dll两个程序集的引用。这两个程序集可以在SDK\bin目录下面找到。

    插件都是Microsoft.Xrm.Sdk.IPlugin接口的实现类,所有的插件类都必须实现IPlugin接口。IPlugin接口只有一个Execute方法。该接口的代码如下所示:

1 public interface IPlugin
2 {
3 void Execute(IServiceProvider serviceProvider);
4 }

    从上面代码可以看出Execute方法只有一个输入参数serviceProvider,该参数的类型是IServiceProvider,是事件执行管道传递给当前插件的所有消息的容器,存储了在插件中可能要使用到的各类对象。通过IServiceProvider接口的GetService方法,可以获取执行上下文IPluginExecutionContext、组织服务工厂IOrganizationServiceFactory以及跟踪服务ITracingService等实例。

    一个插件的样例代码如下所示:

 1 public class SamplePlugin: IPlugin
2 {
3 public void Execute(IServiceProvider serviceProvider)
4 {
5 // 获取插件执行上下文
6
7 IPluginExecutionContext context =
8 (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
9
10 // 获取组织服务工厂实例
11
12 IOrganizationServiceFactory factory =
13 (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
14 //获取组织服务实例
15 IOrganizationService service = factory.CreateOrganizationService(context.UserId);
16
17 //获取跟踪服务
18 ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
19
20 try
21 {
22 // 插件业务逻辑代码
23 }
24 catch (FaultException<OrganizationServiceFault> ex)
25 {
26 //异常处理代码
27 }
28 }
29 }

 

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------