Dynamics CRM - 通过 C# Plugin 来 abandon Business Process Flow
需求说明:
当一个 Entity 存在 Business Process Process 时,有时我们需要改变其状态,在之前写的博客有讲了可以通过 JavaScript 来实现,本篇就来讲一下如何通过 C# Plugin 来实现对 BPF 的 abandon( abandon 后的 BPF 会变成灰色,BPF 里的 Stages 变成不可编辑,不能点击上一步和下一步,也不能 Set Active;如果想要使 Steps 也不可编辑,可通过 JavaScript 控制)。
解决方案:
通过 Solution 查看 Entities 组件时可以发现:在为一个 Entity 添加一个 Business Process Flow 的时候,实际上也是创建了一个新的 Entity(后面简称 BPF Entity),Entity 与 BPF Entity 之间的关系是 1:N。BPF Entity 中存在 Lookup 其 Primary Entity 的 Field,可以通过这个字段来查询当前 Entity 下的 BPF,之后改变其 State 和 Stauts 的值就可以将 BPF abandon 了。
Note:State -> statecode,Status -> statuscode,这两个字段都是 BPF Entity 的 Default Field,每个 Entity 都有的,表示状态,通过改变这两个字段的值来改变 Entity 的状态。
示例代码:
private void AbandonBPF(IOrganizationService service, Guid new_entity_id)
{
using (OrganizationServiceContext orgService = new OrganizationServiceContext(service))
{
var bpf_entity = (from _bpf_entity in orgService.CreateQuery<Entities.new_bpfentity>()
where _bpf_entity.bpf_new_entityid.Id == new_entity_id
select _bpf_entity).FirstOrDefault(); if (bpf_entity != null && bpf_entity.GetAttributeValue<OptionSetValue>("statecode").Value == )
{
//statecode = 1 and statuscode = 3 for abandon workflow
SetStateRequest setStateRequest = new SetStateRequest()
{
EntityMoniker = new EntityReference
{
Id = bpf_entity.BusinessProcessFlowInstanceId.Value,
LogicalName = Entities.new_bpfenity.EntityLogicalName,
},
State = new OptionSetValue(),
Status = new OptionSetValue()
};
service.Execute(setStateRequest);
}
}
}
Note:这里 new_entity 是 Entity name,new_bpfentity 是其对应 BPF Entity 的 name。
函数调用:
Entities.new_entity entity = ((Entity)context.InputParameters["Target"]).ToEntity<Entities.new_entity>();
AbandonBPF(service, entity.id);
Dynamics CRM - 通过 C# Plugin 来 abandon Business Process Flow的更多相关文章
- Dynamics CRM - 使用 C# Plugin 调用 SQL 存储过程
有时候,在 Dynamics CRM Plugin 中通过 linq 查询数据会比较慢,可以通过采用在 C# plugin 中直接调用数据库存储过程的方式来提高效率,具体过程如下: 1.新建一个存储过 ...
- Dynamics CRM - 在 C# Plugin 里以 System Administrator 权限来更新 Entity
场景说明: 1.在使用 CRM 系统时,经常会有需要在某个 Entity 下对其他 Entity 的 Record 进行更新,或者在 post 中对自身进行更新,这里就需要用到 SDK 上的 upda ...
- Dynamics CRM 2016 使用Plug-in Trace Log调试插件
1.写插件 首先,让我们写一个简单的插件来测试新插件跟踪日志功能.请注意,在下面的示例代码中,我们增加ITracingService的一个实例,以及记录有关插件的执行信息记录的一些键值: 2.注册插件 ...
- Microsoft Dynamics CRM 4.0 Plugin 取值,赋值,查询
DynamicEntity postImageEntity = (DynamicEntity)context.PostEntityImages["PostImage"]; if ( ...
- Dynamics CRM - Plug-in Class 和 Workflow Class 的用法与区别
在 Dynamics CRM 开发中,我们可以使用 JavaScript 在前端对 Entity Form 进行数据操作,与此同时,我们也可以使用 C# 写后台插件,其中就包括了 Plug-in Cl ...
- 一、Microsoft Dynamics CRM 4.0 SDK概述
Chapter 1. Microsoft Dynamics CRM 4.0 SDK Overview(SDK概述) You are probably reading this book because ...
- Dynamics CRM 如何修复 Access Is Denied - ObjectTypeCode: 2500 的错误
最近被 Dynamics CRM 的权限配置问题恶心了一个星期,老是报“Access Is Denied”,几经波折,最后终于找到一个比较合适的解决方案,写个博客 mark 下来,方便以后查看. 首先 ...
- Dynamics CRM 2013 初体验(2):UI
Dynamics CRM 2013 系统的UI与2011相比改动是巨大的:传统的导航栏被去掉了,取代它的是win8风格的小磁铁:Ribbon风格的工具栏也被去掉啦,它的风格将回滚至4.0时代:新系统添 ...
- Dynamics CRM 2013 初体验(3):新增加的功能
新系统除了修补系统历史漏洞外当然还会添加些比较有意思的新功能,至于这些新功能是否好用那就得看它是否能经过咱们这些使用者的考验了.Dynamics CRM 2013系统将不再支持Dynamics CRM ...
随机推荐
- spring学习第7天(PCD以及切点表达式)
1.PCD(PointCutDesigner) spring的aop只针对方法进行aop代理,而apectj联盟的aop比之更加强大,还可以针对字段等进行切面编程 1.1:execution,用的最多 ...
- H5页面跳转到小程序代码
1.H5页面加代码直接打开小程序 <script type="text/javascript src="https://res.wx.qq.com/open/js/jweix ...
- 浅谈ASCII 、ISO8859-1、GB2312、GBK、Unicode、UTF-8 的区别。
浅谈ASCII .ISO8859-1.GB2312.GBK.Unicode.UTF-8 的区别. 首先,先科普一下什么是字符编码.字符是指一种语言中使用的基本实体,比如英文中的26个英文字母,标点符号 ...
- Codeforces_448C 分治
昨晚CF碰到的题目,昨晚CF跪了啊啊啊 题意比较简单,给定一排挨在一起的板子,宽度都为1,高度不一,一个刷子宽度也是1,可以横着刷,也可以竖着刷,但是任何时刻刷子都要在板子上,也就是说,如果横向的时候 ...
- linux下启动mysql提示:Timeout error occurred trying to start MySQL Daemon
启动 mysqld 时经过很长时间显示 Timeout error occurred trying to start MySQL Daemon. 终端进入 mysql 时显示 ERROR 2002 ( ...
- UML-线程标示法
继续前一章<缓存策略>,既然用缓存,那如何保证数据同步呢?即:缓存里的数据和DB里的数据一致. 解决:LocalProducts每隔N分钟查询并更新它的缓存(定时器) 如果LocalPro ...
- Maven:Failure executing javac, but could not parse the error:javac: 无效的目标发行版: 1.8
eclipse中对着项目maven——>>maven install时出现错误:Failure executing javac, but could not parse the error ...
- CTF -攻防世界-crypto新手区(1~4)
题目已经提示用base64直接解密就行 base64解密网址 http://tool.oschina.net/encrypt?type=3 题目提示是凯撒密码 http://www.zjslove.c ...
- 阿里巴巴的26款Java开源项目,赶紧戳…
本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...
- HDU 3484 Matrix Game 枚举暴力
上次周赛碰到这个题目,居然都没思路,真是不应该啊,起码也应该想到枚举法. 因为题目只允许每一row进行reverse操作,而每两列可以进行交换操作,所以首先把row的变化固定下来,即枚举第一列与第1- ...