FixFlow多实例会签功能使用介绍
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个人同意后,其他人不再处理、像循环执行某一项任务等等很多此类需求,熟话说:熟能生巧,先配置成功以后,慢慢研究原理,其实可以做出很多意想不到的功能的。
FixFlow多实例会签功能使用介绍相关推荐
- Flowable多实例会签功能来袭
文章的最下面有学习视频与源代码 拒绝重复造轮子了,有这个流程平台就够了 会签.或签 会签 ABC三人都审批通过才能进入下一节点 (三人都可以看到任务) 或签 其中一人通过 即可进入下一节点 (三人都可 ...
- linux中bash的功能主要有,Linux系统中的Bash功能的介绍
今天小编要跟大家分享的文章是关于Linux系统中的Bash功能的介绍.一个完整计算机的体系结构包括:硬件与软件,而软件又分为系统软件与应用软件,负责对硬件仅需管理与操作的是系统软件的内核部分,用户是无 ...
- Activiti实现会签功能程序Demo
Activiti会签功能 1.会签是什么? 会签功能指多个人员针对同一个事务进行协商处理,共同签署决定一件事情. 在工作流中会签,是指多个人员在同一个环节进行处理,同一环节的有多个处理人并行处理,按照 ...
- iOS开源项目MobileProject功能点介绍
一:MobileProject简介 MobileProject项目是一个以MVC模式搭建的开源功能集合,基于Objective-C上面进行编写,意在解决新项目对于常见功能模块的重复开发,MobileP ...
- 高性能ORM框架XLinq功能详细介绍
之前简单介绍了XLinq的一些功能,有很多功能都没有提到,现在给XLinq加了一些功能,这次把所有功能都介绍一遍. 设计目标 易用性 在使用一个框架的时候 应该没几个人会喜欢写一大堆的配置文件吧 也应 ...
- N点虚拟主机管理系统(For Windows2003/2008)功能及介绍
N点虚拟主机管理系统是针对销售 主机.邮局.数据库等产品时效率低.管理难等问题而自主研发的集产品自动化开通.管理.续费.升级等功能为一体的软件系统.通过一年多的改进与运作,软件已具有功能强大.安全稳定 ...
- 06 ansible剧本功能实践介绍
以下例子的配置文件 [rsync:children] rsync_server rsync_client[rsync_server] 192.168.1.5[rsync_client] 192.168 ...
- JAVA中几种循环结构的表示_本文通过实例讲解给大家介绍Java中for、while、do while三种循环语句的区别,具体详情如下所示:第一种:for循环 循环结构for语句的格式...
本文通过实例讲解给大家介绍Java中for.while.do while三种循环语句的区别,具体详情如下所示: 第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后 ...
- Excel的裁剪(trimming)(トリミング)功能使用介绍
Excel的裁剪(trimming)(トリミング)功能使用介绍 ■前言 当一个画面很长时,我们在做文档时,我们如果把画面全部截取出来, 会占用很多篇幅,同时还不能突出重点. 那么,如何能解决这个问题呢 ...
最新文章
- ZABBIX(八) Zabbix 通知媒介
- Kafka事务特性详解
- hibernate-jpa/hibernate-jpa-2.1-api-1.0.0.final.jar源代码下载地址
- 爸爸我爱您(之十二)
- [ASP.NET 控件实作 Day14] 继承 CompositeControl 实作 Toolbar 控件
- windows之如何刷新电脑DNS缓存
- [bbk4343]小布-OCP 042全真试题讲解
- git管理账户忘记了_强制找回GitLab管理员账户密码的方法
- asp.net的处理机制(.ashx/.aspx)
- sparkR介绍及安装
- 乌邦图怎么装php,Ubuntu如何安装php7?
- python怎么设置加密,Python 加密的实例详解
- 02 . 在 Linux 上安装Oracle11g 数据库
- 远程 mysql error 2003_远程连接MySQL报错ERROR 2003解决办法
- android 技能 英文,讯飞输入法Android7.0.4050搭载音标输入神技能
- css权重机制,CSS权重及其计算
- ios手动重签名在非越狱手机上安装自己破解的app
- 验证码接码短信平台 - 小程序版
- 文献检索——Web of Science|CSDN创作打卡
- itextpdf5.x实现合同签署盖章预览功能
热门文章
- POJ 1830 开关问题 高斯消元
- 原创:用python把链接指向的网页直接生成图片的http服务及网站(含源码及思想)...
- 北师大 外国教育史-6(新教育运动)
- 单片机驱动蜂鸣器(有源和无源)
- oracle导出数据一闪就没,Pl/Sql 导入dmp文件时窗口一闪而过
- 谷歌浏览器无法打开localhost:3000,打开localhost就跳转测试地址问题
- 图片批量压缩处理工具
- 书法拓片matlab,拓墨书法作品(拓片)的具体操作方法和步骤?
- 南理工计算机考研难度,南京理工大学网络空间安全考研难吗
- 哲学笔记:之:天道性命