要把一个节点设置为多实例,节点xml元素必须设置一个multiInstanceLoopCharacteristics子元素。
<multiInstanceLoopCharacteristics isSequential="false|true">
...
</multiInstanceLoopCharacteristics>
isSequential属性表示节点是进行 顺序执行还是并行执行。
实例的数量会在进入节点时计算一次。 有一些方法配置它。一种方法是使用loopCardinality子元素直接指定一个数字。
<multiInstanceLoopCharacteristics isSequential="false|true">
<loopCardinality>5</loopCardinality>
</multiInstanceLoopCharacteristics>
也可以使用结果为整数的表达式:
<multiInstanceLoopCharacteristics isSequential="false|true">
<loopCardinality>${nrOfOrders-nrOfCancellations}</loopCardinality>
</multiInstanceLoopCharacteristics>
另一个定义实例数目的方法是,通过loopDataInputRef子元素,设置一个类型为集合的流程变量名。 对于集合中的每个元
素,都会创建一个实例。 也可以通过inputDataItem子元素指定集合。 下面的代码演示了这些配置:
<userTask id="miTasks" name="My Task ${loopCounter}" activiti:assignee="${assignee}">
<multiInstanceLoopCharacteristics isSequential="false">
<loopDataInputRef>assigneeList</loopDataInputRef>
<inputDataItem name="assignee" />
</multiInstanceLoopCharacteristics>
</userTask>
假设assigneeList变量包含这些值[kermit, gonzo, foziee]。 在上面代码中,三个用户任务会同时创建。每个分支都会拥
有一个用名为assignee的流程变量, 这个变量会包含集合中的对应元素,在例子中会用来设置用户任务的分配者。
loopDataInputRef和inputDataItem的缺点是1)名字不好记, 2)根据BPMN 2.0格式定义,它们不能包含表达式。activiti
通过在 multiInstanceCharacteristics中设置 collection和 elementVariable属性解决了这个问题:
<userTask id="miTasks" name="My Task" activiti:assignee="${assignee}">
<multiInstanceLoopCharacteristics isSequential="true"
activiti:collection="${myService.resolveUsersForTask()}" activiti:elementVariable="assignee" >
</multiInstanceLoopCharacteristics>
</userTask>
多实例节点在所有实例都完成时才会结束。也可以指定一个表达式在每个实例结束时执行。 如果表达式返回true,所有其
他的实例都会销毁,多实例节点也会结束,流程会继续执行。 这个表达式必须定义在completionCondition子元素中。
<userTask id="miTasks" name="My Task" activiti:assignee="${assignee}">
<multiInstanceLoopCharacteristics isSequential="false"
activiti:collection="assigneeList" activiti:elementVariable="assignee" >
<completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.6 }</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
在这里例子中,会为assigneeList集合的每个元素创建一个并行的实例。 当60%的任务完成时,其他任务就会删除,流程
继续执行。
分享到:
相关推荐
activiti会签投票统计;用来统计会签过程中各个参与人的投票结果,以及设置会签任务的结束条件;
在用activiti的时候经常遇到取会签人员的问题,这个文档解决怎么获取会签人员。
Activiti多实例任务实现会签.
NULL 博文链接:https://mydownload.iteye.com/blog/1329488
1、会签是什么? 会签功能指多个人员针对同一个事务进行协商处理,共同签署决定一件事情。 在工作流中会签,是指多个人员在同一个环节进行处理,同一环节的有多个处理人并行处理,按照配置规则,固定比例的人员办理...
伪汇总审批,就是每一条流程都是独立的,这些独立的流程在走到某个节点的时候,这个节点的审批人可以一次性进行多个任务的审批
activiti的war包activiti-explorer.war及activiti中文版帮助手册Activiti_User_Guide_5.16.pdf
优秀的轻量级BPMN2.0规范流程引擎——Activiti,由jBPM创始人——Tom Baeyens发起。
整个过程不影响activiti的设计,使用的是ExecutionEntity实现任务的销毁及重新指定任务节点的方式实现最终的撤回操作
25张表的数据结构。精确到每个字段的解释。。。。。。。。。。。。。。。。。。。。。
activiti学习-使用activiti多实例任务实现会签
工作流 activiti 5.22 退回代码实现。 activiti在设计的时候没有回退相关的操作,回退是中国特有的特色。这里写一个比较简单的回退。不支持回退到并行网关前面节点,虽然回退到前面节点不会报错 但会导致任务无法...
NULL 博文链接:https://topmanopensource.iteye.com/blog/1315254
工作流官网的activiti-5.22.0.zip 工作流官网的activiti-5.22.0.zip 工作流官网的activiti-5.22.0.zip
Activiti开源业务自动化,帮助企业解决分布式,高度可扩展且经济高效的基础架构中的自动化挑战。Activiti是领先的轻量级,以Java为中心的开源BPMN引擎,支持实际的流程自动化需求。1-7为中文 8-17英文.
Activiti 5.16 工作流 中文手册 pdf
activiti的jar包
4. Task:任务,在Activiti中的Task仅指有角色参与的任务,即定义中的UserTask。 5. Execution:执行计划,流程实例和流程执行中的所有节点都是Execution,如UserTask、ServiceTask等。 2.2.2. 服务接口 1. ...
《Activiti实战》 一共四个部分:准备篇(1~2章)介绍了Activiti的概念、特点、应用、体系结构,以及开发环境的搭建和配置;基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细...