要把一个节点设置为多实例,节点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 的特定功能,特别是会签(Parallel Multi-instance)和自定义事件监听器,用于收集和分析参与者的投票结果。 1. **会签(Parallel Multi-instance)**: ...
【描述】"Activiti多实例任务实现会签"这一主题主要关注的是如何通过Activiti的工作流定义语言(BPMN 2.0)中的`user task`元素,结合`multi-instance`属性来创建一个需要多人签字的任务。这种任务的特点是,每个...
在Activiti中,这通常通过多实例任务(Multi-instance Task)来实现。 1. **配置多实例任务**:在BPMN 2.0流程图中,我们可以使用`miBody`元素来定义一个多实例任务。例如,使用`userTask`并添加`camunda:...
在用activiti的时候经常遇到取会签人员的问题,这个文档解决怎么获取会签人员。
在Activiti工作流引擎中,会签功能是通过多实例任务(Multi-instance Task)来实现的。这使得流程能够根据特定的规则分配给多个参与者,且这些参与者可以同时进行处理。 **会签类型** 1. **按数量通过**:当参与...
### Activiti多实例任务实现会签功能详解 #### 一、多实例用户任务的基本概念与配置 Activiti是一个开源的工作流引擎,它提供了一种灵活的方式来定义业务流程,并且能够支持复杂的业务逻辑处理。其中,多实例任务...
在本篇博文中,我们将深入探讨工作流引擎Activiti中手动执行任务(UserTask)的应用。Activiti是一款开源的工作流和业务流程管理(BPM)系统,它提供了强大的流程定义、执行和监控能力。在这个学习总结中,我们将专注于...
Jeecg集成activiti.docx Jeecg集成activiti是一个关于如何将activiti集成到Jeecg平台上的指南。下面是从给定的文件中提取的相关知识点: 1. activiti项目结构:activiti项目是一个Maven项目,包含了数据库文件,...
这个“activiti-userguide-5-16”压缩包文件包含了 Activiti 5.16 版本的用户指南,帮助我们深入理解并有效使用这个流程管理工具。 1. **BPMN 2.0 规范**:Business Process Model and Notation 2.0(业务流程模型...
这个压缩包包含两个关键组件:“activiti-explorer.war”和“Activiti_User_Guide_5.16.pdf”。 “activiti-explorer.war” 文件是一个Web应用程序的归档文件,通常在Java平台上的应用服务器如Tomcat或Jetty中部署...
6. **ACT_RU_TASK**:运行时任务表,表示工作流中的任务实例,包含任务ID、任务名称、分配给谁等。 7. **ACT_RU_VARIABLE**:运行时变量表,存储流程实例和任务实例中的变量值。 8. **ACT_RU_EVENT_SUBSCR**:事件...
伪汇总审批,就是每一条流程都是独立的,这些独立的流程在走到某个节点的时候,这个节点的审批人可以一次性进行多个任务的审批
Activiti 是一个开源的工作流和业务流程管理(BPM)系统,它被广泛应用于企业级应用中,用于自动化业务流程。这个"activiti-5.22.0.zip"文件包含了Activiti 5.22.0版本的所有组件和资源,是理解、学习和部署Activiti...
工作流 activiti 5.22 退回代码实现。 activiti在设计的时候没有回退相关的操作,回退是中国特有的特色。这里写一个比较简单的回退。不支持回退到并行网关前面节点,虽然回退到前面节点不会报错 但会导致任务无法...
在流程定义中,可以使用`<userTask>`元素并设置`assignee`属性为组的ID来分配任务给组。例如: ```xml <userTask id="taskForGroup" name="组任务" assignee="myGroupId"/> ``` `myGroupId`应替换为实际组的ID...
### Activiti6 用户指南知识点详解 #### 一、概述与许可 - **许可协议**:Activiti6基于Apache V2许可证发布,这意味着它遵循开放源代码许可证条款,允许用户自由使用、修改和分发该软件及其衍生作品。 - **下载...
会签(Multi-instance)支持并行处理多个子任务,`multi-instance` 属性在 BPMN 图形中可配置。 6. **信号与消息启动**:`SignalEventReceived()` 方法可用于发送信号,触发等待该信号的并发分支。而消息启动事件...
在Activiti6中,多实例任务(Multi-instance tasks)允许对一组相似的任务进行并行处理。例如,审批流程中可能需要多个部门同时审批。示例可能演示了如何配置多实例任务,以及如何处理它们的完成条件和并发性问题。...
在实际应用中,Activiti还支持与各种系统的集成,如通过Service Task调用外部服务,或者利用Event Subprocess来响应外部事件。手册会讲解如何设置这些交互,以实现更灵活的流程自动化。 最后,手册可能还会包含一些...