Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动
当我们在流程里添加步骤时,有一些默认的步骤,像创建、更新、发邮件等,但如果你想加一个里面没有的步骤,比如发SMS消息,或者调用一个外部的web service,怎么办?这时就只能自定义一个流程活动了。下面将详细介绍如何创建一个自定义的流程活动。
1. 打开vs2012,新建一个项目:
需要引用CRM 的二个dll : Microsoft.Xrm.Sdk; Microsoft.Xrm.Sdk.Workflow;
2. 删除默认的 Activity1. xaml ,新建一个类:
using System;
using System.Activities;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Workflow;
namespace CustomActivityLibrary
{
public class CustomActityLibrary : CodeActivity
{
[Input(" My contact")]
[ReferenceTarget(" contact")]
[Default("{ 575A8B41-F8D7-4DCE-B2EA-3FFDE936AB1B}", "contact")]
public InArgument < EntityReference > inContact { get; set; }
protected override void Execute( CodeActivityContext context)
{
ITracingService tracingService = context.GetExtension < ITracingService >();
IWorkflowContext mycontext = context.GetExtension < IWorkflowContext >();
IOrganizationServiceFactory serviceFactory = context.GetExtension < IOrganizationServiceFactory >();
IOrganizationService crmService = serviceFactory.CreateOrganizationService( mycontext.UserId);
Contact myContact = new Contact();
myContact.ContactId = inContact.Get( context). Id;
PhoneCall myPhoneCall = new PhoneCall();
myPhoneCall.Subject = "Call this new contact";
myPhoneCall.RegardingObjectId = new EntityReference( Contact.EntityLogicalName, (Guid) myContact.ContactId);
crmService.Create( myPhoneCall);
tracingService.Trace(" PhoneCall created.");
}
}
}
注意这里的代码用到了Linq,要在CRM里使用Linq,用下面的方法先生成一个类,并引用到项目里:
crmsvcutil.exe /url:http:// localhost/ Organization1/ XRMServices/ 2011/ Organization.svc /out:GeneratedCode.cs
crmsvcutil.exe 在SDK/Bin下面,这个生成的类包括所有的实体类,并支持Linq。
3. 生成的dll,像插件一样注册,注册完后,就可以在添加流程步骤里找到它了:
4. 选择这个自定义的步骤,然后点击 设置属性 按钮
注意,如果你修改了项目,重新编译后,你需要重启windows服务 Microsoft CRM Asynchronous Processing Service。有时在重新发布这个修改的dll时可能还要重启IIS。当然实时工作流不需要开启windows服务 Microsoft CRM Asynchronous Processing Service。
前后一共写了6篇流程,说明怎样在CRM 2013 里使用流程。业务人员现在可以很灵活地实现指定的业务逻辑。 对话(Dialog)是同步并且是可以交互的流程;工作流可以是同步也可以是异步;操作(Action)可以当作是一个实时的工作流。以前开发人员需要加一个按钮和实体字段(Flag)来触发插件来实现的功能,现在就可以考虑用操作了;另外操作还是一个很好的方式把javascript的逻辑移到插件里,以保护IP。
Dynamic CRM 2013学习笔记 系列汇总
转载于:https://www.cnblogs.com/fengwenit/p/4317152.html
Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动相关推荐
- Dynamic CRM 2013学习笔记(四十二)流程5 - 实时/同步工作流(Workflow)用法图解...
实时工作流跟插件一样,也是用事件执行管道来执行,能在pre,post或核心操作中执行.跟插件一样,不能在创建之前和删除之后执行.如果执行过程中有异常发生,会取消并回滚整个操作.实时工作流里所有的活动和 ...
- Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理...
上次介绍过节点的基本配置<Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置>,这次介绍下规则节点,因为有时流程里会有一些分支.合并,这时就要用到规则节点 ...
- Dynamic CRM 2013学习笔记(十八)根据主表状态用JS控制子表自定义按钮
有时要根据主表的审批状态来控制子表上的按钮要不要显示,比如我们有一个需求审批通过后就不能再上传文件了. 首先打开Visual Ribbon Editor, 如下图,我们可以利用Enable Rules ...
- Dynamic CRM 2013学习笔记(一)插件输入实体参数解析
1. 问题描述 最近新建了一个post事件的插件,传入的参数处理如下: 1: if (context.InputParameters.Contains("Target") & ...
- Dynamic CRM 2013学习笔记(二十二)插件里调用WCF服务
1. 添加service: 2.调用WCF BasicHttpBinding myBinding = new BasicHttpBinding(); myBinding.Name = "Ba ...
- fetchxml 汇总_Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧
我们经常要对表单里各种类型的字段进行读取或赋值,下面列出各种类型的读写方法及注意事项: 1. lookup 类型 清空值 var state = Xrm.Page.getAttribute(" ...
- Spring Security技术栈学习笔记(十三)Spring Social集成第三方登录验证开发流程介绍
开发第三方登录,我们必须首先要了解OAuth协议(本文所讲述的OAuth协议指的是OAuth2协议),本文首先简单介绍OAuth协议,然后基于Spring Social来阐述开发第三方登录需要做哪些准 ...
- 2022Java学习笔记七十三(异常处理:运行时异常、编译时异常、异常的默认处理的流程)
2022Java学习笔记七十三(异常处理:运行时异常.编译时异常.异常的默认处理的流程) 一.异常体系 1.Exception:java.lang包下,称为异常类,它表示程序本身可以处理的问题 2.R ...
- Python学习笔记(十三):异常处理机制
Python学习笔记(十三):异常处理机制 关于Python的异常处理机制 Python学习笔记(十三):异常处理机制 一.异常处理机制 常见异常类型 二.异常处理 try...except 异常类的 ...
最新文章
- 斯坦福2019秋季课程CS224W
- 存在于实数域的微观粒子
- labview在2048中添加时间滚动条_Axure 教程:不可见滚动条的页面滚动效果
- VB程序逆向常用的函数
- 几种流行的AJAX框架:jQuery,Mootools,Dojo,Ext JS的对比
- Spark笔记:复杂RDD的API的理解(下)
- html5 自定义 datepicker,如何使用 React 构建自定义日期选择器(3)
- matlab实现频域率滤波,基于Matlab的图像的频域滤波实现及研究.doc
- 开课吧:数据分析的价值体现在哪些方面?
- debug安装包安装在别人手机上闪退?
- python字符串长度排序_python-对混合类型和不同长度的字符串进行排序
- 拓端tecdat|R语言中基于混合数据抽样(MIDAS)回归的HAR-RV模型预测GDP增长
- RabbitMQ-理解消息通信-虚拟主机和隔离
- html入门教程博客,HTML基础教程
- Vue源码学习1--获取源码和查找入口文件
- 卡刷su+android7,supersu最新版卡刷包
- S MT 精密电阻 对照 表
- 清洁机器人--屏幕显示方案之屏幕的那些事
- Python 时间标准化
- vue中image 的:src 与 src
热门文章
- DB2数据库V8.2版本远程连接方法
- Ubuntu中Netbeans的中文问题彻底解决
- 存储过程和函数——概述||创建存储过程||调用存储过程||查看存储过程||删除存储过程
- 常用基础参数SurvivorRatio讲解 || NewRatio讲解 || MaxTenuringThreshold讲解
- VSCode 自定义html5模板
- Web.xml 文件与server.xml 文件使用总结
- 创建CSS和处理的一些方法
- jQuery中wrap、wrapAll和wrapInner用法以及区别
- Git 技术篇-GitHub免费私有库设置方法实例演示,GitHub私有库时代来临
- 23种设计模式(下)