其他分享
首页 > 其他分享> > Dynamics 365(二)插件开发

Dynamics 365(二)插件开发

作者:互联网

基本概念

D365平台与传统平台

​ D365平台与传统平台,在功能和页面开发层面均有不同之处。比如说在功能开发层面:传统平台需要自己开发,而365平台是系统标准的功能,不需要开发。在页面开发层面:传统平台需要自己开发,而365平台只需简单配置即可;

插件

​ Plugin(插件),它是一种事件处理程序,通过它可以修改或扩充Dynamics 365标准的业务流程,如创建时执行自定义逻辑。另外是SDK Message(SDK消息),通过它可以获取CRM标准功能中CreateUpdateDelete等相关操作的事件信息;

执行顺序

​ 有消息就会有事件先后的顺序,所以这边就会涉及两个名词,Pre-operationPost-operationPre-operation :消息事件触发前执行一个动作;Post-operation :消息事件触发后执行一个动作;

开发插件

1.新建VS解决方案项目类库

​ 首先需要创建一个 .NET Framework 的 Class Library类库项目,这里要为不同版本的Dynamics365选择的Framework不尽相同,请根据官方文档说明;

2.添加项目依赖包

​ 通过NuGet添加对Microsoft.CrmSdk.CoreAssemblies的引用,如下图,当然也要选择合适的版本。如果不能上网的话,就需要添加对 Microsoft.Xrm.Sdk.dll 和 Microsoft.Crm.Sdk.Proxy.dll 的引用;

3.新建插件

​ 插件文件本质也是类文件,只不过这个类继承IPlugin接口,且实现Execute方法,在此方法中编写插件代码,实现业务逻辑;建议:插件命名:执行时机+功能/作用英文+实体名+Plugin,例:CreateNew_StudentPlugin

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

public void Execute(IServiceProvider serviceProvider)
{
    // 获取插件执行上下文
    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

    // 获取组织服务工厂实例
    IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

    // 获取组织服务实例
    IOrganizationService service = factory.CreateOrganizationService(context.UserId);

    // 获取跟踪服务
    ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

    try
    {
        // 插件业务逻辑代码
    }
    catch (FaultException<OrganizationServiceFault> ex)
    {
        // 异常处理代码
    }
}

.插件签名

​ 在Visual Studio中右击该项目,选择属性(Properties) > 签名(Signing),选中 Sign the assembly,我这里新建一个Key file

Key file我的设置如下,为了简便,我就不设置密码保护了,保存后编译插件项目,确定没有编译错误

注册插件

1.下载注册工具

​ 从Dynamics 365 Customer Engagement (V9.0)开始,不再像以前一样提供SDK下载了,应该学习在线文档 中下载方式,以下下载方式主要是根据在线文章中命令方式下载:

本文提到下载的工具包括如下:

ToolNuGet Package
Code generation tool CrmSvcUtil.exe Microsoft.CrmSdk.CoreTools
Configuration Migration tool DataMigrationUtility.exe Microsoft.CrmSdk.XrmTooling.ConfigurationMigration.Wpf
Package Deployer PackageDeployer.exe Microsoft.CrmSdk.XrmTooling.PackageDeployment.WPF
Plug-in Registration Tool PluginRegistration.exe Microsoft.CrmSdk.XrmTooling.PluginRegistrationTool
SolutionPackager tool SolutionPackager.exe Microsoft.CrmSdk.CoreTools

转发来源:https://www.cnblogs.com/weiyongguang/p/14060783.html

标签:插件,serviceProvider,context,new,Dynamics,365,Tools,Microsoft
来源: https://www.cnblogs.com/wulala9/p/16105667.html