Dynamics CRM 审批流引擎-程序员宅基地

技术标签: 工作流  审批  mscrm  dynamics 365  crm  

前言

在以往项目中,或多或少的会做一些类似OA审批的模块,然而每次都会重复写一些类似审批流程的东西,但由于具体业务场景或需求的不同,所以可重复利用的东西也不多。

后来考虑一下,打算着手做一个比较轻量级,通用性相对较高,且支持稍复杂流程流转的一个东西。在网上找了找资源,发现一个相对不错的开源流程设计器GooFlow(注:jQuery版本是开源的,在github中可下载到,协议是MIT协议。但最新的应该是vue版本的,这个是收费版),后端的引擎用的是CRM的异步引擎,实现是通过插件来实现的。

最初的版本大概是在2013年年底完成的,后来通过一些项目上的场景又进一步完善和改进了一下。目前支持的版本从CRM2011到现在的Dynamics365,On-Premise或Online都可以,而且浏览器市面上大部分浏览器基本都兼容,使用只需导入解决方案即可。

当前配置页面可能有点丑,毕竟是几年前的技术了,最近也看了一些开源的基于H5的流程设计引擎,非常漂亮,但由于最近工作比较忙,没有足够的时间去具体深入的研究,有时间的朋友可以去了解一下。

我认为这个解决方案中应该还是有一点点值得推敲的东西,可供大家参考或学习,因为某些项目也确实已经到过了这个审批流解决方案,而且效果也还可以,所以在这里做一下分享。

下图为某个相对复杂真实场景的审批
在这里插入图片描述

解决方案导入

在这里插入图片描述
注:解决方案导入完成后,请检查解决方案内所包含的相关流程(操作或工作流)是否是启用的,如果是"草稿"状态,需手动激活。

如何使用及配置

其实配置流程的入口叫“配置-工作流配置表”这个表。定位到该表,创建一条记录即可开始配置流程。
为了方便配置,我放在了系统的设置里面。
配置

配置界面

填写好该流程的名称,以及此流程对应的实体逻辑名称点击保存,然后点击进入如下图所示的‘流程配置’。

在这里插入图片描述

保存完成后,通过到导航进入流程的自定义配置界面,如图在这里插入图片描述
配置页面如下图
在这里插入图片描述
在配置界面中,最左侧的功能区域可以选择相应的节点、连接线、以及区域划分等功能。
在这里插入图片描述

节点

先介绍一下几种节点的功能以及应用。

目前该配置界面包括7种类型的节点。
即:开始、结束、审批人员配置、实体属性修改配置、条件配置、邮件配置以及联合节点。

1、开始、结束节点:

每个流程都需要有且只有一个开始节点和一个结束节点。
开始节点标志着流程的开始、同样结束节点标志着整个流程的终止。
在这里插入图片描述
另外,每种类型的节点,都可以为它编辑名称,鼠标左键双击节点名称进行编辑。
在这里插入图片描述

2、审批人员配置节点:

可以进行配置相应的审批人员,当流程流转到当前节点,会给配置好的人员创建“流程任务”,配置该节点请鼠标右键单击节点左侧的图标。
在这里插入图片描述

1) 根据业务部门及用户选择
当流程流转到该节点时,会给选定的系统用户创建流程任务。
在这里插入图片描述
2) 根据业务部门及团队选择
当流程流转到该节点时,会给选定团队下所有系统用户创建流程任务。
在这里插入图片描述
3) 根据业务部门及角色选择
当流程流转到该节点时,会给选定拥有该角色的系统用户创建流程任务。
当业务部门选择所有部门,则角色不区分部门,只要有该角色任何部门人员都会收到流程任务。
当业务部门选择父节点上级部门,如果上一节点为审批节点,则按照上一节点上级部门的角色进行创建流程任务。
当务部门选择提交者上级部门则按照流程提交人上级部门的角色进行创建流程任务。
最后的WorkFlowCRM(该名称是根业务部门)则按照正常业务部门层级根据角色去给系统用户创建流程任务。
在这里插入图片描述
4)根据子表及子表上用户类型的字段选择
该选项可以配置流程所关联的实体记录中,所有子表(1:N)的“系统用户”查找字段。
根据配置,流程流转时,可以动态取当前记录所有已启用的子表记录中,已配置好的用户字段,给这些所配置用户创建流程任务。
在这里插入图片描述

5)根据实体上的用户类型的字段选择
该选项可以配置流程所关联的实体记录中所有“系统用户”查找字段。根据配置,可以动态取当前记录的用户,给这些所配置用户创建流程任务。
在这里插入图片描述
6)是否包含提交者经理以及父级节点人员经理
当勾选是否包含提交者经理时,当流程流转到该审批节点,则给提交者系统用户的经理创建流程任务。
当勾选是否包含父级节点人员经理时,当流程流转到该审批节点,如果上一节点为审批节点,则给上一节点所有用户的经理创建流程任务。
在这里插入图片描述
7)审批意见回写配置
当该节点的每一个审批人进行通过或驳回的操作,那么将会把该人员的审批意见、审批时间、审批人员名称回写到已设置好的当前实体记录的字段中,该设置只支持单行文本和多行文本类型。
在这里插入图片描述
8)共享记录配置
当勾选‘是否共享记录给审批人’复选框时,会再次出现7个复选框,其中6个复选框是用来给该节点的审批人授予所配置记录共享的操作权限。而当勾选‘流程结束时是否取消共享’复选框时,待整个流程流转完成后,会取消该节点下所有审批人共享的操作权限。
在这里插入图片描述
9)审批任务标题设置
可以选择流程所关联的实体记录中的属性,动态为该节点审批任务配置标题。
在这里插入图片描述
生成任务标题如图
在这里插入图片描述

3、实体属性修改配置节点:

当流程流转到该节点,可以修改该节点预设好的实体记录上的属性,例如,当上一节点审批完成,则修改表单上的审批状态。
在这里插入图片描述
同审批人员配置节点一样,配置该节点鼠标右键单击节点左侧的图标。弹出配置页面如下图。如需将字段值设置为空,把值的配置列设置为空白即可。
在这里插入图片描述
在这里插入图片描述

4、联合节点(不太常用):

当需要多个节点并行流转到同一个节点,并且需要每个节点都运行完成后才继续往下流转,这里就需要用到联合节点了。
在这里插入图片描述
右键联合节点,可以设置条件,需要多少条线流转到当前联合节点,才继续往下运行。
在这里插入图片描述
如下图,经理、主管、总监同时进行审批,但是必须满足当三个审批节点全部审批通过,才能流转到结束节点。

在这里插入图片描述

5、条件配置节点:

在这里插入图片描述
右键单击进入配置页面。该页面分为上下两部分,上面部分进行配置“且”条件集合,下面部分为“或”条件集合。例如:(行业等于:电力、燃气的生产和供应业。并且年收入大于 等于:500000)或(行业等于:金融业。并且年收入大于等于:800000)
如需配置条件为不等于null,可选择条件符号为‘!=’并把值设置为空白即可。
在这里插入图片描述

6、邮件配置节点:

此邮件用来配置发送邮件。
在这里插入图片描述
右键进入配置页面,如下图。
在这里插入图片描述
该页面分有3个tab页,分别为收件人、抄送人、邮件内容。

其中收件人和抄送人两个tab与审批节点的选择人员类似,而邮件内容的配置如下图。
在这里插入图片描述
可以根据需要设置自己所需的邮件模板,模板上方有四个按钮,可以在邮件内的主题和内容中配置发件人、收件人、当前日期和增加记录字段的值。在内容的下方,复选框‘是否单独发送’,如勾选此复选框,则该邮件配置节点中所配置的所有收件人都会单独收 到邮件,如不勾选,则只发送一封邮件。

连接线

节点与节点间连接的桥梁,从起始节点到目标节点的连接线。
有一点需要注意的是,当起始节点的节点类型为“审批人员配置节点”时,在连接线上右键鼠标是可以进行配置的。如果不进行配置,那么就默认为该节点需要所有人同意才能流转到下一个节点。可以配置多少人,同意、拒绝或操作完成后,流转到指定的节点。(如选择操作,则在流程任务中审批,不管是同意还是拒绝,都算做操作)
在这里插入图片描述
在这里插入图片描述

组织划分框

用于划分区域,使流程变的更加清晰。
在这里插入图片描述
在这里插入图片描述

版本控制

流程配置完成后,点击配置页面上方的保存按钮进行保存。
在这里插入图片描述
每保存一次,就会在“配置-工作流配置版本表”中生成一条记录,记录当前保存版本的信息,并且把最新版本的流程做为默认流程。生成新版本流程不会影响到正在运行中旧版本的流程,但是配置完成后再发起的流程就会按照最新版本进行运行。如果想使用历史版本中某一个版本,那么找到那个版本,把“是否默认版本”勾选为是即可。
在这里插入图片描述
请把需要关联流程的实体勾选‘活动’复选框,如果流程中涉及到发送电子邮件,则勾选上‘发送电子邮’件复选框。
在这里插入图片描述

流程的流转

流程的流转是根据上述所配置好的节点与连接线,在流程发起后,通过异步引擎自动流转的。

当一个节点完成后,通过连接线,进入到下一个节点,直到找到“结束节点”标志着整个流程流转的结束。

其中流转到类型为条件节点(符合配置条件的条件节点)、修改属性节点、邮件配置节点时,流程会根据所配置的连接线,自动流转到下一个或多个节点。

审批节点,需要达到连接线所设置的条件才会流转到下一节点。如:连接线上设置为所有人同意时,流转到下一节点。
在这里插入图片描述
可通过代码修改所生成的“流程任务”达到流转的目的。
在这里插入图片描述
修改审批状态字段(该字段类型为选项集)
同意:122,300,000
驳回:122,300,001

按钮添加

在工作流配置表里,也可以为该审批实体配置审批按钮。

在创建“配置-工作流配置表”记录时,如图,勾选为是,则在记录上可自动显示按钮。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
如需加签或转签功能,还需要注意一点,要在用户实体记录上勾选如下图属性为,勾选后才可在加签或转签的人员选择列表中出现该用户。
在这里插入图片描述

在这里插入图片描述

为满足或补充额外的需求,在上述几种自动生成按钮中,也提供了一些回调方法,如下
在这里插入图片描述
回调方法的使用方法很简单,只需在所需的实体窗体上,添加自己的js类库,重写方法即可,如下。
在这里插入图片描述
在这里插入图片描述
如需自行定制审批按钮(如:同意、驳回、加签、转签),可将工作流配置表中,所有创建按钮字段设置为否,然后再通过ribbon工具自行添加即可。

流程发起

配置好流程后,发起流程,只需创建一条“工作流运行记录”即可。创建成功后,引擎会根据流程所配置的节点及连接线开始自动流转。

如用解决方案自带发起流程功能,可参考上文“按钮添加”操作即可,无需任何开发。

当然有特殊需求,也可以通过js、插件、action或自己封装api等途径进行创建调用。

具体创建记录需要的参数如下图。
在这里插入图片描述
字段类型都为文本类型,是否结束默认为否。
流程ID:即所需要发起流程的ID(配置-工作流配置表)
流程版本ID:流程关联的子表(配置-工作流配置版本表),查找是否默认版本为是的记录即可。
实体名称:即所需要发起流程关联实体的逻辑名称。
记录ID:即所需要发起流程关联记录的主键。
提交者ID:流程提交者系统用户的主键。

解决方案下载

导入即用,如无需特殊定制,不用写一行代码便可使用。

TCFlow_1_0_managed.zip

联系方式:[email protected]
欢迎大家一起学习交流。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tantu666/article/details/89671065

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签