Dynamics 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:流程提交者系统用户的主键。
解决方案下载
导入即用,如无需特殊定制,不用写一行代码便可使用。
联系方式:tantu666@163.com
欢迎大家一起学习交流。