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学习笔记 系列汇总

时间: 2024-10-13 08:57:50

Dynamic CRM 2013学习笔记(四十三)流程6 - 自定义流程活动的相关文章

Dynamic CRM 2013学习笔记(三十七)自定义审批流7 - 初始化(整套审批流下载、安装)

  前面介绍了自定义审批流的配置.使用,这篇介绍下如何进行初始化.   一. 下载   从下面的地址下载整个审批流: http://yunpan.cn/cJR65k2Grj3Ss  访问密码 8065 下载完后,一共有三块内容:   二.初始化 1. Web 把CRMWFExtends文件夹copy到ISV目录下 默认的目录应该是C:\Program Files\Microsoft Dynamics CRM\CRMWeb\ISV   2. 解决方案 导入solution:ApprovalWork

Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮

上次介绍了 Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 现在开始介绍如何配置审批流,首先在form上添加三个按钮,Submit, Agree, Reject:   1. submit 按钮 $webresource:crm_PNG_approvaltemplate_16 $webresource:crm_PNG_approvaltemplate_32   SubmitBill $webresource:neu_wf_utility     2. Agree 按钮

Dynamic CRM 2013学习笔记(三十八)流程1 - 操作(action)开发与配置详解

CRM 2013 里流程有4个类别:操作(action).业务流程(business process flow).对话(dialog)和工作流(workflow).它们都是从 setting –> Process 进入,然后点击New按钮来创建: 这篇主要介绍操作:什么是操作.什么时候使用操作.如何创建以及如何调用 一.什么是操作 操作是CRM 2013 新增加的一个功能,用来扩展系统的标准功能.业务人员可以用它来实现业务逻辑,然后开发人员可以在系统事件里(比如update,create)来使用

Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件

上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传.显示及下载.包括以下几个步骤: 附件上传的web页面 附件显示及下载的附件实体 调用上传web页面的JS文件 实体上r的上传按钮   首先来看一下效果: 先点击上面的上传按钮,然后就会弹出一个上传附件的界面,选择需要上传的文件,填写文件名,点击上传,成功后会在下面的文件grid里显示已上传的文件,双击下面的文件就会打开文件的详细信息: 然后还可以下载文件.   下面来看下实现方法 1. 附件上传的web页面 新建

Dynamic CRM 2013学习笔记(十九)自定义审批流 - 效果演示

CRM的项目,审批流是一个必须品.为了更方便灵活地使用.配置审批流,我们自定义了一整套审批流.首先来看下它的效果: 1. 审批模板 这是一个最简单的审批流,首先指定审批实体,及相关字段,再配置流程节点,这里只有5个节点,而且没有规则节点(后面会介绍):   接着就是对上面的流程节点配置关系,这里就指定流程节点的走向:   运行一段时间后,可以查看审批的实例:   2. 操作审批流 审批流模板创建完后,我们就可以进行审批活动了. 开始的状态是Draft,这时可以提交审批: 点击Submit 按钮后

Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示

CRM的项目,审批流是一个必须品.为了更方便灵活地使用.配置审批流,我们自定义了一整套审批流.首先来看下它的效果: 1. 审批模板 这是一个最简单的审批流,首先指定审批实体,及相关字段,再配置流程节点,这里只有5个节点,而且没有规则节点(后面会介绍): 接着就是对上面的流程节点配置关系,这里就指定流程节点的走向: 运行一段时间后,可以查看审批的实例: 2. 操作审批流 审批流模板创建完后,我们就可以进行审批活动了. 开始的状态是Draft,这时可以提交审批: 点击Submit 按钮后,会提示是否

Dynamic CRM 2013学习笔记(三十一)自定义用excel导入实体数据

有一个实体的子表数据量太大,于是客户想用execel来导入实体数据.首先想到的是用系统自带的Import Data,客户嫌太麻烦,比如lookup字段要做map等. 下面是具体的实现步骤: 一.定义excel数据模板 1. 利用系统自带的Download Template For Import下载系统自带的模板 2. 去掉不需要的列,比如有些列是自动计算,自动赋值 3. 保存为excel文件,并copy到crm server里的isv目录下 4. 定义一个按钮,并指定调用下面的js: // ex

Dynamic CRM 2013学习笔记(四十六)简单审批流的实现

前面介绍过自定义审批流: Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮 Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置 Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理 Dynamic CRM 2013学习笔记(三十四)自定义审批流5 - 自动邮件通知 Dynamic CRM 2013学习笔记(三十

Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置

上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮>,这次接着介绍如何配置审批流的节点及节点关系.     一. 模板头: 二.流程节点:        一共有三种节点:开始节点,中间节点,结束节点: 1.  开始节点: 2. 中间节点: .3.  结束节点:       三.流程节点关系:   四.实体配置 1.添加二个字段: