Dynamics CRM 2011 编程系列(20):插件队列
来源:互联网 发布:nginx解析其他网站 编辑:程序博客网 时间:2024/06/06 03:20
Dynamics CRM 2011中的插件支持队列执行,假如你的业务依赖执行上下文的先后顺序则将插件配置成队列执行将是个不错的选择。
涉及的实体
联系人
客户
商机
需要实现的需求
1.创建联系人的时候自动根据该联系人的名称创建一条客户记录。
2.创建一条商机记录,并将该商机记录关联到创建的客户上。
实现方案
在联系人的Create事件中开发2个插件:1负责创建客户记录的插件,2负责创建商机记录的插件。但是这两个插件必须按照先执行插件1再执行插件2的顺序执行。
实现步骤
图1 为插件注册步骤
图2
图3
图4
图5
图6
使用到的代码
TestQueue.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Xrm.Sdk;using Microsoft.Xrm.Sdk.Query;using Microsoft.Xrm.Sdk.Messages;namespace Plugin20{ public class TestQueue:IPlugin { public void Execute(IServiceProvider serviceProvider) { IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = factory.CreateOrganizationService(null); Entity curEntity = (Entity)context.InputParameters["Target"]; //创建客户 Entity account = new Entity(); account.LogicalName = "account"; account["name"] ="公司主要联系人:"+curEntity["lastname"].ToString(); Guid accountid= service.Create(account); context.SharedVariables.Add("AccountId", accountid); } }}
TestQueue2.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Xrm.Sdk;using Microsoft.Xrm.Sdk.Query;using Microsoft.Xrm.Sdk.Messages;namespace Plugin20{ public class TestQueue2 : IPlugin { public void Execute(IServiceProvider serviceProvider) { IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = factory.CreateOrganizationService(null); Entity curEntity = (Entity)context.InputParameters["Target"]; //创建商机 Entity opportunity = new Entity(); opportunity.LogicalName = "opportunity"; opportunity["name"] = "商机-主要客户:" + curEntity["lastname"].ToString(); Guid curAccId = (Guid)context.SharedVariables.Where((p) => { if (p.Key.ToLower() == "accountid") { return true; } else { return false; } }).First().Value; opportunity["customerid"] = new EntityReference("account", curAccId); service.Create(opportunity); } }}
小结
使用context.SharedVariables的时候必须格外小心,必须明白你现在调用的元素是你需要的。
- Dynamics CRM 2011 编程系列(20):插件队列
- Dynamics CRM 2011 编程系列(16):插件
- Dynamics CRM 2011编程系列
- Dynamics CRM 2011编程系列
- Dynamics CRM 2011 编程系列(18):插件中的Read操作
- Dynamics CRM 2011 编程系列(19):插件中的事务
- Dynamics CRM 2011 编程系列(21):插件调试
- Dynamics CRM 2011 编程系列(25):插件的依赖注入
- Dynamics CRM 2011 编程系列(23):用插件调用WCF
- Dynamics CRM 2011 编程系列:自定义工作流
- Dynamics CRM 2011 编程系列(17):用插件来实现实体的CRUD
- Dynamics CRM 2011 编程系列(24):在插件中使用早期绑定
- Dynamics CRM 2011 编程系列(22):用插件调用Web Service
- Dynamics CRM 2011编程系列(55):Dynamics CRM 集成开发简述
- Dynamics CRM 2011 编程系列(26):自定义工作流
- Dynamics CRM 2011 编程系列(27):使用触发器
- Dynamics CRM 2011 编程系列(29):自定义页面
- Dynamics CRM 2011编程系列(39):Ribbon Button + GhostHook
- Dynamics CRM 2011 编程系列(17):用插件来实现实体的CRUD
- 中文文本关键字分割算法
- Dynamics CRM 2011 编程系列(18):插件中的Read操作
- Dynamics CRM 2011 编程系列(19):插件中的事务
- python中的格式字符串标识符
- Dynamics CRM 2011 编程系列(20):插件队列
- 获取指定年、月的具体天数
- UIView过渡动画整理
- windows 下 c/c++ pragma 用法实例
- WINCE 获取智能设备唯一编号
- Dynamics CRM 2011 编程系列(24):在插件中使用早期绑定
- 放弃使用linuxmint,转向opensuse
- ${param.id}页面跳页面 param应该是el表达式封装的
- CKEditor和CKFinder 解决图片上传