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

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法