相信做过工作流的朋友大部分做过像以下图片中类似的请假流程。
流程有五个节点
第一节点:开始,参与者是所有人;
第二节点:上级领导审批,参与者是提交人的部门负责人,部门负责人可审批的天数为1天;
第二节点有两个流转分支,条件分别是:1、请假天数小于 2 ;2请假天数大于等于 2。(见图二)
流程引擎会根据请假天数进行路由:1、请假天数小于 2 交人事备案;2请假天数大于等于 2 需要提交人领导的上级(总监)审核,然后再交人事备案。
第三节点:总监审批,总监可审批的天数为10天;
第四节点:人事备案;
第五节点:结束。
(图一)
(图二)
对于这样的设置很明显的一个问题是:如果提交人本身是部门负责人,那么在第二节点路由时,所找到的任务处理者就是总监,但总监拥有10天的权限。
此处的解决方案有两个:
1:在第三节点的处理策略中,使用处理者是本人即跳过,但是这样会产生一个自动完成的任务,在请假流程中不推荐使用这种方式;
2:在第二节点的两个流转条中,引入用户变量,将 return <% day %> > 2; 修改为 return <% day %> > <% user.Day %>;
这样在进行条件解析时,脚本解析器会将<% user.Day %>替换为当前用户所拥有的权限天数。
用户变量可设置在角色、组、岗位或用户上,推荐使用岗位进行设置,这样有两点好处:
1:岗位是根据公司的实际架构进行设置,上下级关系明显;
2:岗位拥有基本信息描述物理数据表,只需要对基本信息进行设置,实际机构的岗位进行映射或直接使用即可,减少维护成本。
(图三)
根据以上表结构,只需设置岗位默认变量,机构岗位如果没有特殊设置,可直接使用默认变量,无需重新设置。
用户变量的使用场景还有很多,如报销流程中,用户的审批金额。
http://www.cnblogs.com/zdming/archive/2012/04/17/2453938.html