CRM 4.0: How to Write and Deploy a Plug-In

   CRM4.0 里放弃了使用 CRM3.0 常用的 Callout 功能,取而代之的是 Plug-In Plug-In 是一个外部的 Assembly 被置入到 CRM 内部用来截取事件并可以和 CRM 进行交互,处理一些复杂逻辑。常见的可以截取的事件有一个实体的created, updated, or deleted 等。 Plug-In 支持多重租赁,同步和异步运行,离线支持以及统一事件框架等。 Plug-in 通常会被应用于以下场景:

执行一个复杂的业务逻辑-在无法使用或很难使用JavascriptWorkflow来处理时

在创建/更新实体时从其它系统获取数据

CRM中更新其它系统

创建CRM4.0Plug-In通常需要创建一个类库(Class Library)类型的项目。Microsoft Dynamics CRM 4.0是基于.NET Framework 2.0的,所以我们需要创建基于.NET Framework 2.0的项目,但是你可以用Visual Basic或者C#. Microsoft Dynamics CRM 3.0 是基于.NET Framework 1.1的,所以对于CRM 3.0Callout我们必须创建基于.NET Framework 1.1的项目。

Develop A Custom Plug-in

以下步骤演示了如何创建一个简单的CRM 4.0 plug-in 项目。

1.       创建C# Class Library类型项目,命名为myPlugIn

2.       添加对”Microsoft.Crm.Sdk.dll””Microsoft.Crm.SdkTypeProxy.dll”的引用。这两个DLLSDK"Bin目录中。

3.       在类文件中添加对Microsoft.Crm.SdkMicrosoft.Crm.SdkTypeProxy命名空间的应用,并且将类继承于IPlugin接口。

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.Crm.Sdk;

using Microsoft.Crm.SdkTypeProxy;

namespace myPlugIn

{

    public class Class1 : IPlugin

    {

    }

}

4.       实现IPlugin接口的方法-如果你的类继承了IPlugin接口,那么Execute方法是必须被实现的。

作为演示我们让这个Plugin在创建一个Account时(后)将它的Unique Identifier(AccountID)更新到Account Description字段里。

#region IPlugin Members

    public void Execute(IPluginExecutionContext context)

{

   DynamicEntity entity = (DynamicEntity)context.InputParameters.Properties["Target"];

        if (entity.Name == EntityName.account.ToString())

        {

            Guid id = (Guid)context.OutputParameters.Properties["Id"];

            Key myKey = new Key(id);

            if (!entity.Properties.Contains("accountid"))

            {

                entity.Properties["accountid"] = myKey;

            }

            if (!entity.Properties.Contains("description"))

            {

                entity.Properties["description"] = "GUID = " + id.ToString();

                ICrmService service = context.CreateCrmService(true);

                service.Update(entity);

            }

        }

    }

    #endregion

5.       程序功能的实现就算完成了。但作为可以部署的DLL(为了安全的缘故)我们必须对这个项目实行强命名。

对项目进行强命名,在Solution Explorer中右键点击项目名称然后选择Properties -> Signing. 选择”Sign the assembly”复选框并通过”New…”下拉选项来添加新的SNK文件。保存各种更改,Build项目,下一步就是部署了。

编译PluginRegistration工具

为了部署我们的Plugin,我们需要注册它。两种方法可以选择:编程方式或者用PluginRegistratin工具。PluginRegistration看起来有点奇怪,说是个工具,实际上提供的是源代码,它也是由SDK提供的,地址在:CrmSdk4"SDK"Tools"PluginRegistration. 因为是源码,所以我们首先需要用Visual Studio 2005打开PluginRegistration.sln解决方案文件。

打开解决方案后,首先需要添加两个丢失的Web References.

http://<servername>/MSCRMServices/2007/CrmServiceWsdl.aspx

http://<servername>/MSCRMServices/2007/AD/CrmDiscoveryService.asmx

并且将Web ReferenceURL Behavior设置为Static. 最终完成的结果类似如下图所示:


现在我们可以成功的编译项目了,当编译完项目后我们可以在
CrmSdk4"SDK"Tools"PluginRegistration"bin"Debug目录下找到PluginRegistration.exe文件,为了更方便的使用,你可以将这个工具集成到Visual Studio IDE中,这里我们就不讲这个了,可以直接通过运行PluginRegistration.exe来启动我们的注册过程。

注册Plug-in

运行PluginRegistration工具之后,连接CRM Server的窗体就会出现。在这个窗体中输入你的用户名和密码来连接到你的CRM Server上。注意:这里输入的用户名密码必须是有效的登录到CRM 里的帐户(同时也是一个邮箱的Windows(Domain)帐户)。然后可以通过”Get Organizations”按钮来获取CRM里的组织。如果不能连接,将会提示错误。

        

选择你需要将Plugin注册到的Organization并且点击”Get Connection”按钮。如果成功连接这个Organization将会弹出如下图所示的提示框:


并且同时会将窗体上放的
”Assembly Registration””Step Registration”按钮Enable. 点击”Assembly Registration”按钮开始我们的注册。通过点击Assembly Location旁边的”…”浏览按钮选择我们的Plugin类库DLL, 然后点击”Register”按钮来注册。注册完毕后,PluginRegistration会弹出一个对话框来提示是否成功。如果成功的话,对话框里会含有一个Assembly ID,如下图所示:

我们可以通过”Get Assemblies”来验证我们上面的注册过程。如果注册成功,你会在下边的Plugin List里边看到刚才注册的信息:


既然我们已经将自定义的插件程序集注册给了
CRM,其实这就相当于我们给一个普通的项目加了引用。但是由于插件是个特定的动作关联的,所以我们接下来要做的事情就是将这个DLL和某个EntityEvent关联在一起。在我们的特定示例里,我们需要关联Account实体的Create事件:创建Account实体的一条记录时会触发我们的Plug-in. 如下图所示,选择相关的”MessageName””EntityName”并通过点击”Register Step on the PluginType”按钮结束注册。

明白了如何创建一个简单的Plug-in, 同样的方法可以去创建更为复杂的逻辑去集成各种业务和外部系统,甚至用异步方式去创建更好用户体验。

CRM也支持从命令行通过配置文件的方式来注册Plug-In,这个话题我们以后再叙:)

乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
"Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project" 是一个 Maven 构建工具的错误信息,它表示在执行 Maven 构建过程中出现了问题。具体来说,这个错误信息表明在执行 deploy 目标时出现了问题。 Maven 是一个用于构建和管理 Java 项目的工具,它使用基于项目对象模型(Project Object Model,POM)的概念来管理项目的依赖关系、构建过程和部署等任务。 在 Maven 的构建过程中,deploy 目标用于将构建好的项目部署到远程仓库中,以供其他项目或者团队使用。然而,当出现 "Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project" 错误时,通常是由于以下原因之一: 1. 无法连接到远程仓库:可能是由于网络问题或者仓库配置错误导致 Maven 无法连接到指定的远程仓库。 2. 权限问题:可能是由于没有足够的权限将构建好的项目部署到远程仓库。 3. 依赖关系错误:可能是由于项目的依赖关系配置错误导致 Maven 在部署过程中无法解析依赖项。 为了解决这个问题,你可以尝试以下几个步骤: 1. 检查网络连接:确保你的网络连接正常,并且可以访问远程仓库。 2. 检查仓库配置:检查你的 Maven 配置文件(settings.xml)中的仓库配置是否正确,并且你有足够的权限进行部署操作。 3. 检查依赖关系:检查项目的依赖关系配置是否正确,并且所有的依赖项都能够正确解析。 如果以上步骤都没有解决问题,你可以尝试搜索具体的错误信息或者提供更多的错误日志信息,以便更好地定位和解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值