3.1 获取插件
插件无法在设计器内,以及设计器附带启动的工程中安装使用,需要独立部署,推荐使用 Tomcat 容器。
Tomcat 服务器部署好后,以管理员身份登录决策平台,在 管理系统>插件管理 下搜索「流程插件」安装;
或者前往帆软市场下载「流程插件」进行插件包本地安装,安装过程详细点击 服务器插件管理。
插件目前维护中,暂不支持直接从帆软市场下载,但不影响老版本用户的更新升级。
3.2 初始配置
3.2.1 配置引擎外部数据库
1)成功安装流程引擎插件后刷新决策系统,会发现 管理系统 下多了一个 流程插件 按钮,具体情况如下图所示:
2)流程引擎需要依赖外部数据库使用。插件下载完成后,请根据实际情况配置外部数据库连接和账户密码。
点击保存按钮。
若想确保数据库配置信息的正确性,建议先把相同的配置信息在 FineReport 设计器里连接一下,确认可连接成功后再点击保存按钮,在弹出的对话框中点击确定。
注1:搭配外置数据库:目前支持Mysql、SQL Server、Oracle。
注2:如果后期数据库迁移需要调整数据连接,也可以在此处修改,重启后即可生效(无需再进行下一步)。
注3:初次安装并配置数据库信息后需重启tomcat,重启后会初始化数据库信息。
此时查看刚刚配置的数据库,发现在手动重启容器的过程中,原本为空的数据库中出现了流程引擎插件自动创建的数据表。
3.2.2 挂载引擎页面
点击管理系统>目录管理,新建一个目录,选中该目录,在该目录中点击添加链接会弹出对话框,在链接路径中输入以下表格中所提供的链接,即在 「webroot」 (替换为实际的工程名)后加上对应的路径,下面的列表展示了插件提供的所有链接及对应的页面说明。
新建流程的链接为: /webroot/decision/tw/workflow/pc/build
流程引擎插件共提供六个链接
注:「webroot」为 Tomcat独立部署 时实际工程名。
下表为PC端流程引擎插件所提供的所有链接结尾:
名称 |
链接(结尾请注意大小写和扩展名) |
说明 |
创建流程图 |
/webroot/decision/tw/workflow/pc/create
|
管理员端:流程图绘制器页面,可以制作新的流程模型 |
部署列表 |
/webroot/decision/tw/workflow/pc/deploy
|
管理员端:对流程模型进行相关操作,比如部署/删除等 |
所有流程列表 |
/webroot/decision/tw/workflow/pc/control
|
管理员端:对正在执行或已经结束的流程进行管理,包括详情查看和删除
|
新建流程
|
/webroot/decision/tw/workflow/pc/build
|
用户端:展示所有可以发起的流程,点击连接立即发起
|
待办 |
/webroot/decision/tw/workflow/pc/deal
|
用户端:所有尚未结束的流程中停留在该用户节点的列表 |
已办 |
/webroot/decision/tw/workflow/pc/history
|
用户端:该用户发起的所有当前节点不是本人的流程 |
下表为移动端流程引擎插件所提供的所有链接结尾(支持配置到 FineMobile、企业微信、钉钉):
名称 |
链接(结尾请注意大小写和扩展名) |
说明 |
新建流程
|
/webroot/decision/tw/workflow/mobile/build
|
用户端:展示所有可以发起的流程,点击连接立即发起
|
待办 |
/webroot/decision/tw/workflow/mobile/deal
|
用户端:所有尚未结束的流程中停留在该用户节点的列表 |
已办 |
/webroot/decision/tw/workflow/mobile/history
|
用户端:该用户发起的所有当前节点不是本人的流程 |
注1:本插件需要依赖报表决策平台,暂时不能独立连接使用或直接嵌入其他系统。
注2:请用管理员身份登录 Tomcat 部署成功的决策平台,将这六个链接添加到目录下使用。
注3:不支持移动端提交流程
3.3 插件更新
每当合作伙伴更新功能时,流程引擎插件将会提升一次版本号,这样用户将会收到更新提示。
3.4 删除插件
删除流程引擎插件将会自动清除流程程序文件,请在删除插件后重启容器。请注意您的流程数据库不会被清除。
4.1 流程绘制界面介绍
1) 布局和按钮
工具栏:提供了保存撤销,剪切复制等基本功能,并支持对齐放大等美观功能。
节点区:提供了事件,任务,网关等流程元素。
画布区:将节点拖拽到画布,再加上连接线构成最终的流程图。
属性栏:点击画布中的具体节点或连接线,此处会出现对应的属性配置项。
2)节点说明
插件当前版本支持三种类型的节点:事件,任务,网关。
事件:用来表明流程的生命周期中发生了什么事。在 BPMN2 规范中,事件总是画成一个圆圈。
Gateway:是 BPMN2 规范中的流程定义元素,中文可称为「网关」,「决策」,「判断」。网关用来控制流程的执行流向,当在拆分路径时产生令牌,在合并路径时消费令牌。
任务:是业务流程定义的核心元素,中文可称为「活动」,「节点」,「步骤」。一个活动可以是流程中一个基本处理单元。
4.2 简单的一级和多级审批
4.2.1 开始节点
流程总是需要一个开始节点,在简单的一级和多级审批中,采用「开始事件」作为开始节点。将节点区中的「开始事件」拖拽到画布区中,如下图所示:
观察下方的属性栏,「名称」一栏可以为当前节点添加备注,点击「请填写」,将自动展开一个文本框,支持键入中文,文本框中输入的内容会展现在画布区该节点的周围,如下图所示:
绝大部分节点元素和连接线都支持添加名称,名称显示的位置略有不同,如下图所示:
节点名称会出现在「任务列表」中标明流程当前的状态,如果没有配置名称,就会出现如下图所示的提醒:
4.2.2 用户任务
用户任务是最为常用的流程节点,用来表示业务流程中由人参与完成的工作。当引擎处理到该节点时,给指定的用户(参与者)或者一组用户(如部门、角色)创建待处理的任务项,等待用户的处理。在当前的流程绘制器中,除了手动拖拽用户任务节点到画布之外,还有一种方式创建用户任务。
首先选中之前创建的开始节点,然后在其附近出现的快捷工具箱中点击用户任务的小 ICON,如下图所示,即可生成用户任务并自动与开始节点相连接。
如果采用直接拖拽的形式添加了用户任务,还需要为两个节点之间添加连接线:按住下图所示的连接线标志,拖拽到用户任务节点上,直到节点周围出现绿色标记松开鼠标,即可创建连接线。
在复杂的流程结构中,经常会出现需要手工操作连接线的情况。鼠标移动到连接线上,连接线两端会出现可以操作的绿色原点,按住绿点不放拖拽到其他节点可以让连接线连接的对象改变。
用户任务的属性部分比较复杂,这里只介绍基础的审批过程中会用到的一些。
首先是「分配用户」,分配用户指的是该用户任务节点需要谁来完成,点击「添加办理人」后的请选择办理人会弹出一个分配用户的对话框。
在办理人中可以添加用户名以指定流转到对应的用户(比如 Lily)。
注:开始节点后紧跟的第一个用户任务节点, 是发起人节点,必须要填写一个公式,该公式要求指定一个变量名来保存发起人用户名信息,公式语法:${变量名称} 例如 ${people},如下图所示:
如果第一个节点没有放置参数${people},将导致后续流程部署后创建流程为空白,不能出现发起流程。
这个变量可以利用到后面的流程中,比如再新建一个用户任务节点,给新节点分配用户的时候,依然填写 ${people},这样就建立了一个自己审核自己的流程。
当然通常情况下,需要设置一个不一样的人员来审核发起人提交的信息。除了直接填写一个 Lily,还可以在下面的用户树当中选择。
如果流程中需要多个节点,添加多个用户任务并指定相应的审核人员即可。在这里我们用两个审核节点做为示范。
其次是「表单编号属性」,表单编号实际上就是每个节点所要挂载的 cpt 路径,点击后面的请填写会弹出对话框,打开一个文件树,用户选择对应的模板即可。
不同的节点支持挂载不同的模板,比如某些情况下,填报人和审批人需要看到不同的模板,或者需要多个填报人填报不同模板的数据。
注流程引擎提供了一个参数帮助用户主动管理填报上来的数据,即 「requestid」。每当流程执行的时候,都会生成一个唯一的 「requestid」。可以在数据连接中使用这种方式来过滤每条流程所能看到的数据。(具体使用方法详见流程插件示例)
例如: select * from qingjia where id ='${requestid}'
注:插件目前只支持挂载 cpt 模板,使用老填报预览,不能使用表单。必须设置模板填报属性,支持数据校验。
4.2.3 退回
既然有审核操作,则会产生「通过」和「退回」两种选项。「通过」则进行正常流转无需其他操作,本插件在用户任务中自带支持退回的功能,不需要画额外的连接线。
点击「审核节点2」,在属性栏中找到「是否能退回」,勾选即可。
这样任务在执行过程中就会出现「退回按钮」,插件支持越级回退,点击的弹出框中可以指定要退回到哪个节点并且可以添加退回备注。
4.2.4 按钮名称
请注意上一节截图中的按钮,提交,保存和驳回,有些时候不能恰当的表述个性化流程中的实际操作,比如「提交」实际上应该是「审核」。
此时就可以在用户任务属性栏中找到「提交按钮名称」和「退回按钮名称」这两项,点击后面的「请填写」会出现类似「名称」的文本框,键入即可替换默认的按钮文字,支持中文。
4.2.5 结束节点
流程有始有终,在两个审核节点之后,如果没有回退,任务就应该结束了,此时如图点击工具箱中的结束事件 ICON 即可自动生成结束事件并与该节点相连接。
当然也可以手动拖拽结束事件到画布中来,并自行添加连接线。如下图所示就是一个完整的二级审批流程。
4.3 节点自动流转
1) 一般自动流转
该属性只适应于「添加办理人」栏位中的单任务办理人,「抢占式」与「会签」不适用走到该节点系统会自动办理,但不会触发模板提交事件。
找到用户任务属性栏中的「是否自动流转」勾选即可生效。
2)二次默认通过
通常和退回搭配使用,比如两级审核,第一级已经通过,第二级驳回了申请,跨级回退到了申请人。申请人修改申请后,使用二次默认通过功能,任务就会自动跳过第一级审核人,提高了效率。
在用户任务属性栏中找到「第一次通过,下次默认通过」勾选即可生效。
4.4 指定处理人的流程
比如在一个通用的功能迭代任务流程中,任务流转到研发小组长,需要小组长来手动分配具体的研发来开发这个功能,这个人是无法在流程中事先指定的,具有比较高的灵活性。插件支持这种场景。首先我们在研发小组长的节点属性栏中找到「下个任务节点办理人」,在后面的文本框中输入某个单元格值,比如 B8,引擎执行到这里的时候将会解析此节点对应挂载 cpt 模板的 B8 单元格,将 B8 单元格的值保存到引擎中。在设计实践中,通常 B8 单元格会是一个下拉菜单控件,里面包含了研发组员列表。
在后续的研发组员的节点属性栏中找到「添加办理人」,在办理人栏中填入 ${B8} 即可。(类似于开始节点中${people}的变量引用)
目前只支持用单元格控件填报传参,插件目前只能获取到单元格的值
4.5 候选、会签与转办
4.5.1 候选(抢占式办理)
在「添加办理人」的时候,我们会发现对话框中还提供了输入「候选人」的地方,这里可以指定多个办理人,每个办理人都可以收到任务,但是只要其中一个完成审批,那么其他人就看不见任务了,相当于组任务。比如财务部门的发票报销审核处理等。这个不同于会签。请注意使用候选功能处理抢占式场景时,保持「办理人」一栏为空。
4.5.2 会签(多用户同时办理)
有时候一个节点需要多个用户同时确认才能往下流转,会签就提供了这样的功能。首先在节点属性栏中找到「节点类型」一项。引擎提供了两种模式,「parallel」模式表示所有的会签人都能同时收到待办,「sequenial」表示会签人会接连收到待办。
然后,在节点属性栏中找到「添加会签人」属性,点击后面的请填写会弹出添加会签人对话框,在这里可以勾选多个会签用户。
4.5.3 加签——增加会签参与人
在特定流程中的某些审批项可能不仅是办理人可以独立处理的,比如预算审批不仅需要主管领导还需要财务部门负责人,需要灵活指定加签人。
在确认正确选择「节点类型」一项之后,找到「是否加签」一项并勾选。
此时,该节点的流程详情页右下角会增加一个加签的按钮,点击之后会弹出人员选择框,可以添加新的会签人。
4.5.4 转办——移交处理人
有这样的场景:部长有事,某个审批任务可以暂时交由副部长处理。这时候就需要转办功能。在节点属性栏中找到「是否允许转办」属性,勾选即可。流程执行过程中会出现转办按钮,点击会弹出用户列表,选择一个用户即可将任务移交给对方。
4.6 三种网关类型(动态流转)
4.6.1 互斥网关
互斥网关定义了一组分支的唯一决策,所有流出的分支被按顺序评估,第一个条件被评估为 True (当多个条件为true时,第一个决策被执行)的分支被执行,并且不再继续评估下面的分支。如果所有分支条件决策都为 False 且该网关定义了一个默认的连线,那么该默认分支将被执行。如果没有可到达的分支,抛出异常,该网关所处的分支被中断,在流程建模设计上应避免这种情况发生。互斥网关有分支和合并两种行为,允许一进一出。
下图给出一个排他网关的示例。网关 A 评估后继三个分支,如果变量 Var1 等于 1 执行 Service1 路径,如果变量 Var1 等于 2 执行 Service3 路径,如果都不通过执行 Service2 路径;如果 Service1 或 Service2 被执行,网关 B 做路径合并,后继 Service4 路径被执行,流程结束;如果Service3 被执行,流程结束。
可以通过拖拽或者点击工具箱 ICON 来创建互斥网关。
选择一条连接线,在下面的属性栏中找到「条件」,即可为该连接线添加判断条件,条件应该是一个输出值为布尔值的帆软公式,例如B8>7 ,引擎将会基于网关前的用户任务挂载的 cpt 模板计算该公式的结果。例如一个请假流程中,如果填报的时长超过一周,就需要人事经理来审批而不仅仅是部门领导。
注1:条件并不是写在网关,而是写在连接线上。
注2:「默认流」功能暂时无效,请勿勾选。
4.6.2 并行网关
并行网关用于无条件的拆分或合并分支,该类网关对连线条件是忽略的。并行网关有分支和合并两种行为,允许多进多出。
下图给出一个并行网关的示例。网关 A 拆分了三个分支,Service1 和 Service2 执行完毕后被网关 B 合并继续执行 Service4;网关 C 等待Service4 和 Service3 执行完毕后,流程结束。
注:引擎执行并行分支时,同一时刻只执行一个路径直至该路径被中断或结束,然后再依次执行完剩余的路径,而不是在同一时刻同时执行 Service1,Service2 和 Service3 路径。
4.6.3 包容性网关
包容网关是排他网关和并行网关的综合体。当进行决策判断时,与排他网关所不同的是,所有条件为 True 的后继分支都会被依次执行,如果所有分支条件决策都为 False 且该网关定义了一个默认的连线,那么该默认分支将被执行。如果没有可到达的分支,抛出异常,该网关所处的分支被中断,在流程设计上应避免这种情况发生。包容网关有分支和合并两种行为,允许多进多出。
下图给出一个包容网关的示例。网关 A 评估后继三个分支,如果变量 str1 等于 a 执行 Service1 路径,如果变量 str2 等于 b 执行 Service2 路径,如果变量 str3 等于 c 执行 Service3 路径;网关 B 做路径合并,流程结束。
4.6.4 最佳实践——巧用 FR 公式灵活流转
还可以利用 FR 公式中丰富的扩展函数来实现更加灵活的流转。
公式 |
场景 |
AND(B1>2,C15=10000) 以及类似的逻辑类函数
|
合并多个条件等
|
搭配互斥网关的随机函数 RANDBETWEEN(-1,1)=1
|
随机流转
|
2008-08-08>TODAY() 等日期时间类函数
|
在某个特定时间流转到特定人
|
SQL('dev','select * from ww',1,1)=1 等数据库类函数
|
访问异构系统数据信息辅助流转
|
$fine_username='admin'
|
支持使用参数
|
4.7 两种定时事件
待补充
4.8 服务任务和邮件任务
待补充
5.1 流程分类管理
进入「部署列表」页面,通过设置多个分类方便用户快速找到对应的流程。点击新增按钮可以增加一个分类,在分类名称列中输入类名并点击保存。
5.2 部署流程模型
流程图绘制完毕后点击左上角的保存按钮,在弹出的对话框中输入模型的名称,并选择之前在「流程分类管理」里设置好的分类点击保存并退出按钮。
进入「模型列表」页面,找到刚刚保存的流程模型,点击部署按钮,部署成功按钮会变成「已部署」,用户就可以在「新建流程」页面找到刚刚绘制的流程。
还可以为流程模型设置访问权限,即只有选定的人才能发起对应的流程,进入到「部署列表」页面,点击对应模型的设置权限按钮。在弹出的对话框中勾选相应的对象给予流程发起权限,支持选择「部门-岗位-人员」或者「角色-人员」,点击确定即可生效。
为了方便权限的复用和管理,插件提供流程权限导入导出的功能,点击保存权限超链可以将当前的权限用一个别称保存下来。
其他流程导入权限时可以快速应用。
6.1 发起流程
用户进入「新建流程」页面将会看到所有已经部署好的流程,根据流程图保存时选择的分类分开排布。
点击一个流程名称即可发起该流程。进入流程详情页面。
注:如果该流程不被部署,任务是不会真正创建的。
还可以在其他普通的模板中发起一个流程,只需要写简单的 JS 把下面的字符串拼接成 URL 并在新 Tab 页打开即可,注意需要在平台内打开。
JS 写法格式如下:
processInfo/authority?depid=depid&proname=encodeURI(name)&processDefinitionID=processDefinitionID&userName=userName
完整的 JS 实例如下:
window.parent.FS.tabPane.addItem({
title: "技术问题反馈",
src: "http://localhost:8080/webroot/processInfo/authority?depid=5006&proname=encodeURI(流程图)&processDefinitionID=process:1:5009&userName=admin"
})
JS 发起流程有三个关于流程的参数,参数值可以在流程表 act_re_procdef 里查询到,参数说明如下表所示:
公式 |
场景 |
depid |
需要流程部署id |
name |
流程名称 |
processDefinitionID |
流程定义id |
6.2 待办和已办
6.2.1 待办系统消息提醒
当某个流程流转到当前用户节点时,会在右下角弹出提醒,提示用户处理特定流程的待办事务,点击处理超链接则可以主动跳转到对应的流程详情页面。
如果当前用户不在线,则在用户下一次登录时弹出提示框。
同其他系统消息类似,还可以在右上角登录用户旁边的铃铛看到消息提醒,点击可以进入对应的流程详情页面。
或者查看全部消息可以在系统消息列表中,看到所有类似的消息提醒。同样,点击后面的「处理」超链接可以直接进入对应的流程详情页面。
6.2.2 待办页面
「待办页面」显示所有尚未结束的流程中停留在该用户节点的列表。包括「待办任务列表」和「待办保存列表」。
点击操作列中的办理可以跳转到对应的任务。
流转回发起人的待办可由发起人自行删除。
6.2.3 已申请和已办理
「已申请」页面显示该用户发起的所有流程,可以执行详情或撤回操作。
「已办理」页面显示当前用户参与过的流程,可以执行详情操作。
「详情」操作将会打开一个类似的流程详情页面,显示流程内容,流程图和审批意见,但是用户将没有对应的操作权限。
6.3 撤回和保存
用户新建流程之后,需要修改,可以在下个环节处理前点击「已办」页面对应流程的撤回按钮。
该操作将会把这个任务恢复到流程发起之初,用户可以在「待办」列表中找到该任务,并重新办理。
原本已办页面中的操作项将会变成「详情」和「删除」,删除操作将会直接关闭这个任务。
此外,某些流程处理环节可能比较复杂,无法一次性完成,所以流程引擎提供了保存的功能来存储当前的工作状态(填报暂存)。点击流程节点任务页面右下角的保存按钮,保存后的流程可以在待办保存列表中找到。
6.4 审批意见
流程详情页的下方可以提交意见,并添加有关附件,所有环节的意见都会按照顺序显示在下面的批注信息中。
可以在绘制流程图的时候,指定是否需要某个用户任务节点强制填写意见。如果勾选了该项,用户未填意见时系统会弹框提示,流程无法流转。
注:填写的意见数据是存在流程插件配置的数据库中的
6.5 流程图
进入流程详情页面,点击流程图,可以看到该流程对应的流程图,并可以直观的看到流程的进展情况。
6.6 管理员管控流程执行
进入「所有流程列表」页面,可以看到所有进行中或者已经完成的流程,管理员可以随时删除终止正在运行的流程,或者点击详情链接查看所有流程的具体进展。