Dynamics CRM 2015-Custom Workflow Activity

CRM的Workflow给我们的流程处理带来不少便利,但是这种自带的Workflow并不是万能的,中间某一step不能支持,往往会牵一发而动全身,可能造成整个Workflow Steps的重新设计。幸好CRM还提供了其它的方案来实现这类需求,这里要说的就是Custom Workflow Activity。

下面用个具体的实例来说明下,现在有Entity A,B,C,D,它们的关系是,A上有对B的Lookup字段BLookup,B上有C的Lookup字段CLookup,C上有D的Lookup字段DLookup,希望由A的某个字段的变动触发Workflow,发送邮件,而邮件的接收人是D上的某个User字段的值。配置过Workflow的人都知道,CRM的Workflow是不能跨多层去指定这个User的,所以这里我们可以借助Custom Workflow Activity来实现。

首先在Visual Studio Project的配置上,Custom Workflow跟Plugin是相似的,需要额外引用一些dll,比如microsoft.xrm.sdk.workflow.dll,System.Activities.dll等

接着是指定类的继承,与Plugin需要继承IPlugin相似,这里需要继承CodeActivity(System.Activities.dll)

再然后,就是指定输入参数和输出参数了,毕竟我们是要根据一定的规则去获取最终的User。

指定输入参数:

指定输出参数:

指定输入输出Attribute,并使用InArgument<Type>和OutArgument<Type>,在这里需要注意的是,Custom Workflow仅支持如下的Type

还有一点就是,有一些特殊的类型,需要指定额外的Attribute:EntityReference,需要指定ReferenceTarget;OptionSetValue,需要指定AttributeTarget。

最后就是方法实现

protected override void Execute(CodeActivityContext executionContext)
{
            try
            {
                IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
                IOrganizationServiceFactory factory = executionContext.GetExtension<IOrganizationServiceFactory>();
                IOrganizationService service = factory.CreateOrganizationService(null);
                //service.Execute 获取user
                ReferringOfficer.Set(executionContext, user);
           }
            catch{...}
}

Project完工之后,可以使用Plugin注册Tool注册这个,不用添加任何Step。而Debug Custom Workflow,也是跟Plugin相似的套路,这里就不再多赘述了。

之后就可以在CRM自带的Workflow->Add Step中看到这个Custom Workflow了,配置好输入信息,并在Send Email Step中,配置返回值作为邮件的To,就达到了我们想要的效果了。

在使用Custom Workflow的时候,一定要注意返回值是空的情况,毕竟我们不能保证所有的数据都是完整的,比如D上的User是空,那么这个时候,需要注意配置默认值,也就是我在上面截图中的[Default]。

时间: 2024-11-03 22:08:02

Dynamics CRM 2015-Custom Workflow Activity的相关文章

Dynamics CRM 2015 New Feature (4): Calculate Field &amp; Rollup Field

Calculate Field & Rollup Field 可以说是2个比较给力的Feature,随着Dynamics CRM版本的不断更新,这样激动人心的feature可是一个接一个的冒出来.就Calculate Field和Rollup Field来说,之前实现这样的功能都需要开发人员参与,但是现在只需要简单的手工配置就可以简单完成. Calculate Field--故名思意,就是级联字段,通过多个字段的值计算并将结果赋值给最终字段,之前做这样的开发是离不开Javascript,并且更给

Dynamics CRM 2015 Update 1 系列(7): 消息事务 - ExecuteTransactionRequest

Dynamics CRM 2015 Update1 现在能将多个消息放在同一个事务管道里面执行了.这确实是个极好的Feature呀,这样我们可以灵活的组合不同的消息来实现复杂的业务需求而不用担心处理失败后的回滚细节. 使用方法也是非常的简单,调用ExecuteTransactionRequest消息,并将想要放入事务的消息放入该事务中,并提交至服务器,统一执行.我们看看下面的代码片段: ExecuteTransactionRequest req = new ExecuteTransactionR

Dynamics CRM 2015 New Feature (2): Hierarchical Data

在Dynamics CRM 2015中引入了一个比较有意思的Feature:Hierarchical Data.用户可以用直观的树形图来了解具有树形结构的数据,例如business unit,相信通过这样一个有意思的feature,能给大家提高不少的工作效率. 使用这个feature也并不麻烦,我们需要做如下配置:1)新建一个自身引用的1:N关系,这样我们可以用这个关系来构造树形的数据结构,2)开启实体的Hierarchy Settings.开启后的效果如下: 1)创建自身引用的1:N关系 2)

Microsoft Dynamics CRM 2015 for Outlook 2010/2013 安装教程

Microsoft Dynamics CRM 2015 for Outlook 安装教程 注: 安装过程必须电脑要连上网,不然可能安装出错,最下面会总结出错log日记 . 查看下列视频: Microsoft Dynamics CRM 2015 中的 CRM for Outlook 配置: http://www.youtube.com/embed/4lAUXAiLId4  (此网站需要在国外或翻墙才能看) 如需看更详细的操作过程,可以访问以下网址: 微软官方详细介绍. https://techne

Dynamics CRM 2015 Update 1 系列(1): 简介

Dynamics CRM 2015 Update 1 终于推出了,带来了一大堆的功能以及一大堆的惊喜,最让博主高兴的当然还是Dynamics CRM 界面风格的改变.我们终于可以摆脱那些非人性化的设计,新版本的界面给人耳目一新,太多亮点. Update1 当然不仅仅带了惊艳的界面改变,也带来了大量的新功能:更好的系统集成的开发体验,更人性化的APIs,更高效的自定义代码.小伙伴们先不急,我会在后续的文章中将其一一道来. 我们先来看看让我惊艳不已的界面改变吧: 全新的导航风格 界面配置界面 将样式

Dynamics CRM 2015 Update 1 系列(2): Upsert API

Dynamics CRM 2015 Update1 推出了一个重量级的改变 "Upsert Request", 相信做过接口的朋友们都碰到过这样的场景,在向CRM写入数据的时候,因为无法确定该数据是否已经在CRM系统中存在,需要先做一次查询操作然后在进行后续的创建或更新操作.这样的数据写入流程无疑会大大的降低数据同步性能,因为在同步一条数据的同时,我们需要与服务器交互两次. 随着Upsert Request的推出,我们可以对这样的情况说再见了,我们把数据的检测逻辑交给系统进行处理,我们

Dynamics CRM 2015 Online Update1 UI界面的更新变化

听说出  Dynamics CRM 2015 Online  Update1了,立马跑去申请了个30天试用版简单的看了下,UI上的变化还是让人耳目一新的,也可能是被CRM2013的UI蹂躏太久了没脾气后,看到稍微有那么点改进后的欣喜若狂吧,下面我们来看下哪些变化. 原来的Home按钮那个小房子图标改了,现在点击图标是下拉一级导航,而原来是下拉一级导航功能是在Microsoft Dynamics CRM那几个字上.但现在点击那几个字是返回首页面,所以我们看到两个按钮之间的功能做了调换,在这版中

Dynamics CRM 2015 New Feature: Product &amp; Product Family &amp; Bunch

Dynamics CRM 2015中的产品分类功能还是比较有意思的,也可以说是重新定义了产品分类的概念.在新系统中,提出了Product Family 和 Product Bunch概念以及Product 和Product之间的relationship 概念.虽然新系统增加了这么多的概念,但是对于没有特殊需求的一般用户而言,还是可以继续使用Product来对自己的产品进行管理.但是对于有庞大的产品线的公司而言,这些灵活多变的产品管理功能,无疑对它们是非常有吸引力的.我们简单来看看这些新功能: P

升级!将Dynamics CRM 2013 升级至 Dynamics CRM 2015吧!

今天我们来看看Dynamics CRM 2015的系统升级,对于新系统的升级,我们有两种升级方法:1)在现有系统中通过Dynamics CRM 2015安装包对旧系统进行升级,2)将旧系统迁移至新系统中.在这篇文章里,我们采用第二种方法,当然,这也是微软推荐的方法. 在升级系统之前,我们要做好一系列的准备工作.在之前的博文中,我也提到了很多新系统中的Feature,如果没有在End User做好十足的准确之前,我是不建议大家去升级现有系统.在升级Dynamics CRM 2013 系统之前,我们

Dynamics CRM 2013 SP1 升级到Dynamics CRM 2015

首先截图一下我要升级的Dynamics CRM 2013版本如下图,可以看到是打了SP1后的CRM 2013. 运行CRM 2015简体中文版的安装文件CRM2015-Server-CHS-amd64.exe,解压后提示如下: 囧,看了下没有这个名叫Microsoft Dynamics CRM Connector for SQL Server Reporting Services的程序啊,我猜应该是Dynamics CRM Reporting Extensions,果然下载这个以后,安装就没有报