FixFlow多实例会签功能使用介绍
2014-03-20 19:38
190 查看
Fixflow,做中国最好的开源流程引擎!项目地址https://github.com/fixteam/fixflow
FixFlow多实例(会签)功能介绍
多实例:顾名思义,就是在此节点会产生多个任务实例,所有的activity类型节点都可以有多实例选项配置,比如UserTask、scriptTask等。
会签场景举例:
以请假流程为例,请假流程发起后,需要由A,B,C三个领导会签审批,如果2个以上领导同意,则请假通过,否则退回申请人节点。(这种请假流程比较YD,呵呵)。
首先,创建新的流程实例,按照非会签的配置配置好请假流程,保证一个人能正常审批。这点做不到,就去找下fixflow用户向导的10分钟入门章节吧。
原理介绍:
多实例配置界面一共6个参数:
- 完成策略:是指引擎在什么时候验证完成表达式,默认选择所有,说明每次按钮的提交操作都会触发完成表达式的验证。
- 输入数据集和输入项编号:这个用伪代码比较好解释
for(Object obj:${输入数据集}){ ${输出项}=obj; createTask();//创建TaskInstance; }
说明:当令牌到达此节点,判断当前节点为并行多实例之后,引擎会循环输入数据集,将循环项赋值给${输出项编号},然后创建流程实例。 - 输出数据集,输出项编号:每次做完按钮操作后,会将输出项编号Add到输出数据集中。
- 完成表达式:顾名思义,判断此次会签是否结束的条件。
配置过程:
- 首先创建4个变量,如图:对应上述输入数据集(处理人集合)-持久化-默认值(new ArrayList()),输出数据集(处理结果集合)-持久化-默认值(new ArrayList()),输入项(单个处理人),输出项(单个处理结果)
- 在提交节点的“启动并提交”按钮的执行表达式中写如下代码:
${处理人集合}="1200119391,1200119392,1200119393";
说明:设置这三个人会签 - 审批节点:同意按钮执行表达式:
${单个处理结果}="同意"
不同意按钮执行表达式:${单个处理结果}="不同意"
- 任务分配,选择${单个处理人}
- 多实例配置:变量一一对应,完成表达式:
if(${处理结果集合}.size() == ${处理人集合}.split(",").length){ return true; } return false;
说明:当所有人都处理过,则代表此次会签结束。 - 这时候并不知道会签结果是同意还是不同意,所以在排他网关的后面线条中:
y=Collections.frequency(${处理结果集合}, "同意"); if(y>=2){ return true; } return false;
说明:如果两个以上点的同意,则结束。另外一条线:y=Collections.frequency(${处理结果集合}, "同意"); if(y<2){ return true; } return false;
说明:当两个以下点的同意,则退回到开始节点。最终效果如图:
现在,多实例的配置已经完成了,如果是fixflow官方的web示例项目,可以直接发布到项目中,用不同账号登陆就可以看到效果了,当然,设置的三个处理人,在au_userinfo表中是必须存在的。
附注:文档中的流程定义文件在附件中,在官方示例WEB中可以直接发布运行。
总结:其实原理很简单,就是循环做同一个节点,当满足一定条件时跳出节点,在循环过程中,记录中间变量,离开节点的时候通过变量来判断处理后的结果。
明白这些以后,可以根据原理任意扩展,像多部门会签、像当2个人同意后,其他人不再处理、像循环执行某一项任务等等很多此类需求,熟话说:熟能生巧,先配置成功以后,慢慢研究原理,其实可以做出很多意想不到的功能的。
阅读更多
相关文章推荐
- 实例介绍如何配置使用 VMControl 多网络支持功能
- 使用Java程序实现随机验证码功能的实例
- 使用Java程序实现随机验证码功能的实例
- Linux Shell 通配符、元字符、转义符使用实例介绍
- 使用技巧:Java实现随机验证码功能实例
- Linux Shell 通配符、元字符、转义符使用实例介绍
- 经典vim插件功能说明、安装方法和使用方法介绍(已更新)
- Linux Shell 通配符、元字符、转义符使用实例介绍
- document.designMode的功能与使用方法介绍
- Jsp开发中使用Cookie实例(实现记住密码功能)
- [转]经典vim插件功能说明、安装方法和使用方法介绍
- magento的Catalog中TheFind feed功能的使用介绍
- 经典vim插件功能说明、安装方法和使用方法介绍
- C++11新功能使用详细介绍
- Linux Shell 通配符、元字符、转义符使用实例介绍
- 经典vim插件功能说明、安装方法和使用方法介绍(备用)
- 从一个实例浅谈J2ME Polish的build功能(一、功能简单介绍)
- Web Service介绍使用及实例-C#.Net
- 实例介绍joomla! xml解析器的使用 【转】
- [使用心得]maven2之m2eclipse使用手册之二m2eclipse功能介绍