节点流转条件中引入用户变量,简化条件设置

相信做过工作流的朋友大部分做过像以下图片中类似的请假流程。

流程有五个节点

第一节点:开始,参与者是所有人;

第二节点:上级领导审批,参与者是提交人的部门负责人,部门负责人可审批的天数为1天;

第二节点有两个流转分支,条件分别是:1、请假天数小于 2 ;2请假天数大于等于 2。(见图二)

流程引擎会根据请假天数进行路由:1、请假天数小于 2 交人事备案;2请假天数大于等于 2 需要提交人领导的上级(总监)审核,然后再交人事备案。

第三节点:总监审批,总监可审批的天数为10天;

第四节点:人事备案;

第五节点:结束。

(图一)

(图二)

对于这样的设置很明显的一个问题是:如果提交人本身是部门负责人,那么在第二节点路由时,所找到的任务处理者就是总监,但总监拥有10天的权限。

此处的解决方案有两个:

1:在第三节点的处理策略中,使用处理者是本人即跳过,但是这样会产生一个自动完成的任务,在请假流程中不推荐使用这种方式;

2:在第二节点的两个流转条中,引入用户变量,将 return <% day %> > 2; 修改为 return <% day %> > <% user.Day %>;

这样在进行条件解析时,脚本解析器会将<% user.Day %>替换为当前用户所拥有的权限天数。

 用户变量可设置在角色、组、岗位或用户上,推荐使用岗位进行设置,这样有两点好处:

1:岗位是根据公司的实际架构进行设置,上下级关系明显;

2:岗位拥有基本信息描述物理数据表,只需要对基本信息进行设置,实际机构的岗位进行映射或直接使用即可,减少维护成本。

(图三)

根据以上表结构,只需设置岗位默认变量,机构岗位如果没有特殊设置,可直接使用默认变量,无需重新设置。

用户变量的使用场景还有很多,如报销流程中,用户的审批金额。

原文地址:https://www.cnblogs.com/zdming/p/2453938.html