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个人同意后,其他人不再处理、像循环执行某一项任务等等很多此类需求,熟话说:熟能生巧,先配置成功以后,慢慢研究原理,其实可以做出很多意想不到的功能的。
相关推荐
【标题】"Activiti多实例任务实现会签"是指在Activiti工作流引擎中,如何配置和使用多实例任务来实现会签功能。在企业级应用中,会签常常用于决策过程,要求多个参与者共同审批,只有当所有参与者都完成审批后,流程...
### Activiti多实例任务实现会签功能详解 #### 一、多实例用户任务的基本概念与配置 Activiti是一个开源的工作流引擎,它提供了一种灵活的方式来定义业务流程,并且能够支持复杂的业务逻辑处理。其中,多实例任务...
在工作流引擎的世界里,FixFlow是一个非常出色的开源工作流管理系统,它提供了强大的...在学习和使用过程中,务必注意理解和掌握数据交互、流程实例化以及API调用等关键知识点,这将有助于您成为FixFlow的熟练开发者。
会签功能则是其中的关键组成部分,因为它确保了决策的多角度验证和责任分摊,避免单一决策者的失误。 在设计会签流程时,我们需要考虑以下几个关键知识点: 1. **流程定义**:会签流程应在流程模型中清晰定义,...
总的来说,实现Activiti-5.4中的会签功能涉及到流程设计、配置、监听器使用以及代码实现等多个方面。通过理解和掌握这些知识点,你可以灵活地构建适应各种业务场景的并发签名流程,提高企业的协作效率。
在用activiti的时候经常遇到取会签人员的问题,这个文档解决怎么获取会签人员。
在jBPM4.4中,会签功能通常通过多实例(Multi-instance)任务来实现,它允许一个任务被多次实例化,以对应每个审批人。 接着,我们来看如何利用custom节点来实现会签。Custom节点是jBPM提供的一个扩展点,它允许...
本文将深入探讨jbpm4.3如何实现会签功能,并分享相关的源码和工具使用。 1. jbpm4.3概述: jbpm4.3是jbpm的一个较旧版本,但仍然包含许多工作流管理的核心特性,如流程定义、任务分配、事件处理等。它基于Java平台...
3. **阵列横槽:** 使用阵列功能复制横槽,形成所需的图案。 #### 实例八:圆柱孔处理 **操作步骤:** 1. **拉伸圆柱:** 创建一个圆柱实体。 2. **倒角:** 对圆柱边缘进行倒角处理。 3. **拉伸切除圆柱孔:** 在...
实例1 如何使用错误提醒控件 实例2 如何使用信息提示控件 实例3 如何使用菜单控件 实例4 如何使用工具栏控件 实例5 如何使用状态栏控件 实例6 如何使用托盘控件 实例7 如何使用标签页控件 实例8 如何使用进度条控件 ...
全书分为18章,分别讲解了UI布局实例集锦、控件实例集锦、自动化服务实例集锦、数据存储实例集锦、电话和短信实例集锦、图形图像实例集锦、和网络有关的实例集锦、多媒体实例集锦、Google地图实例集锦、GoogleAPI...
在.NET 2.0版本中,多线程功能已经得到了充分的优化和增强,允许开发者构建出更加高效的应用程序。下面将详细讨论这个.NET 2.0多线程实例所涵盖的知识点。 首先,我们来看"控制台和WinForm的并行访问"。在.NET 2.0...
WPF实例(实例比较多) (wpf窗体继承)RibbonStyle2.zip (赛车游戏)GrandPrix_SRC.zip CustomRulesMVVM.zip ExifCompareSource.zip Explorer3D.zip familyshow-12528.zip Jigsaw.zip Life_src.zip PhotoBooth.zip ...
5. **控件与指示器**:实例会使用各种控件(如按钮、旋钮、滑块)和指示器(如图表、波形图、数值显示)来创建交互式界面。 6. **数组与簇**:LabVIEW中的数组和簇是处理多数据项的关键结构,实例将演示如何有效地...
本书还介绍了宏功能模块及IP核的使用方法,DSP Builder与Quartus Ⅱ结合的使用方法。本书的讲解深入浅出,实例丰富,图文并茂,系统实用。 本书可作为从事数字系统设计的科研人员的参考书,也可作为高等学校电子类专业的...
函数是单片机编程中的基本构建块,用于组织代码和重复使用功能。通过理解和运用函数,可以提高代码的模块化程度和可读性。例如,在实例3中,控制单片机点亮第一个灯的过程中,可以创建一个`lightLed()`函数来封装这...
本书通过丰富的实例,深入浅出地介绍了如何运用ADAMS进行工程分析,解决实际问题。 ADAMS(Automated Dynamic Analysis of Mechanical Systems)是由MSC Software开发的一款动态多体动力学仿真软件,它在汽车、航空...
在提供的压缩包中,"多功能码"表示这个例子涵盖了MODBUS RTU的所有功能码,包括读寄存器(0x03, 0x04)、写单个寄存器(0x06)、写多个寄存器(0x10)等。 4. **应用层逻辑**:根据你的应用需求,将MODBUS通信与...
Python是一种高级编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱,尤其适合初学者进行编程学习。本文将深入探讨这些"python 脚本实例 编程实例 入门实例",帮助你理解Python的基本概念和常用操作。 1. **...