原文地址:http://blog.csdn.net/xxhhbb1538/article/details/53116793
在业务场景中,如果需要调用其他流程,我们可以使用callactivity,通过activiti:in,我们可以将主流程的参数传递给子流程,通过activiti:out可以将子流程执行结束后的参数返回给主流程,在单实例情况下,是没有问题的。
但是,当我们调用的子流程数量是不定的,且每个子流程都不一样时,我们可以通过设置调用活动为multi-instance,将子流程运行时动态传递给工作流引擎,如下:
- <callActivity id="call" name="子流程调用" calledElement="${subprocess}">
- <extensionElements>
- <activiti:in source="businessId" target="businessId"/>
- <activiti:in source="businessTable" target="businessTable"/>
- <activiti:out source="cancelled" target="cancelled"/>
- </extensionElements>
- <multiInstanceLoopCharacteristics isSequential="false" activiti:collection="${subprocesslist}" activiti:elementVariable="subprocess">
- <completionCondition>${cancelled=='1'}</completionCondition>
- </multiInstanceLoopCharacteristics>
- </callActivity>
这种情况下,activiti:in依然可以传递参数给子流程,但是activiti:out无法返回子流程的值给主流程,
org.activiti.engine.impl.bpmn.behavior.CallActivityBehavior中,单实例情形中,流程完成前会将子流程的变量传递给父流程
org.activiti.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior中,多实例情形中,流程完成前直接忽略了子流程变量的处理,所以activiti:out中得不到值
- public void completing(DelegateExecution execution, DelegateExecution subProcessInstance) throws Exception {
- // only data. no control flow available on this execution.
- // copy process variables
- for (AbstractDataAssociation dataOutputAssociation : dataOutputAssociations) {
- Object value = null;
- if (dataOutputAssociation.getSourceExpression()!=null) {
- value = dataOutputAssociation.getSourceExpression().getValue(subProcessInstance);
- }
- else {
- value = subProcessInstance.getVariable(dataOutputAssociation.getSource());
- }
- execution.setVariable(dataOutputAssociation.getTarget(), value);
- }
- }
- // required for supporting external subprocesses
- public void completing(DelegateExecution execution, DelegateExecution subProcessInstance) throws Exception {
- }
解决方案:
将MultiInstanceActivityBehavior类复制一份到项目中,补充comleting方法:
调用CallActivityBehavior的completing方法,完成变量的传递。
下载MultiInstanceActivityBehavior类
相关推荐
手册首先会介绍 Activiti 的基本概念,如流程定义(Process Definition)、流程实例(Process Instance)、任务(Task)以及活动(Activity)。流程定义是用 BPMN 2.0 标准语言编写的,它定义了工作流程的结构。流程...
activiti5.21中调用活动(callactivity),在多实例(multi-instance)情况下,子流程无法返回值到主流程,流程完成前直接忽略了子流程变量的处理,所以activiti:out中得不到值 解决方案:将...
3. **流程实例(Process Instance)**:每个流程定义在运行时都会产生一个或多个流程实例,它们代表了流程的实际执行过程。 4. **任务(Task)**:流程实例中的每个节点称为任务,任务可以分配给不同的参与者执行。...
Activiti 是一个开源的工作流和业务自动化引擎,它在企业级应用中被广泛使用,用于流程管理和业务流程自动化。此文档集重点介绍的是Activiti V5.21版本,这是一个稳定且功能丰富的版本,提供了许多关键特性以支持...
Activiti 是一个开源的工作流和业务流程管理(BPM)平台,它被广泛用于企业级应用中以自动化业务流程。本示例展示了如何将 Activiti 5.21 版本与 Spring 框架4.15版本进行集成,以实现灵活、可扩展的流程控制。 在...
在这个"Activiti5.21 SSM演示"中,我们将探讨如何在Spring、Spring MVC(SSM)框架下集成并使用Activiti进行流程设计与执行。 首先,让我们了解一下SSM框架。Spring是Java企业级应用中的核心框架,提供了依赖注入和...
标题中的 "activiti-5.21(除war包部分)" 指的是 Activiti 的5.21.0版本,但不包含 `war` 包。`war` 文件通常是Java Web应用程序的归档文件,用于在Java应用服务器上部署Web应用。由于文件大小限制,war包被单独提供...
4. 会签(Parallel Multi-instance):在多实例任务中,会签通常指的是并行多实例,即所有参与者同时进行审批,无需等待前一个人完成。所有实例完成后,任务才结束。 5. 配置多实例任务:在Activiti的工作流定义XML...
### Activiti-5.21库表结构解析 #### 概述 Activiti是一个开源的工作流引擎,基于Java语言开发,支持BPMN 2.0标准。它提供了灵活、可扩展的工作流管理机制,被广泛应用于企业级应用中进行业务流程管理。Activiti-...
Activiti-5.21数据库表结构详解(共25张表) 工作流的应用越来越广泛,而activiti是公认的现阶段最好的工作流框架之一,详细了解activiti的库表结构有助于您更好的掌握学习工作流框架,共享本资源以供广大编程从业人员...
赠送jar包:activiti-engine-5.21.0.jar; 赠送原API文档:activiti-engine-5.21.0-javadoc.jar; 赠送源代码:activiti-engine-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-engine-5.21.0.pom; 包含...
Activiti 是一个开源的工作流引擎,它主要用于自动化业务流程,特别是在企业级应用中。这个实例项目是基于Activiti 5.21版本构建的,它结合了moduler模块化管理和Spring MVC框架,提供了完整的Web应用解决方案。让...
在5.21版本中,这个引擎提供了一套完整的工具集,适合小型工作流应用,同时也为大型企业级应用提供了灵活性和稳定性。本手册将深入介绍如何利用Activiti进行工作流程的设计、部署和管理。 首先,我们要了解什么是...
- **使用Activiti服务**:详述如何部署流程、启动流程实例、完成任务、暂停和激活流程。 - **查询API**:API的使用以查询流程相关信息。 - **变量**:在Activiti中变量的使用。 - **表达式**:表达式引擎的配置和...
在本场景中,我们关注的是如何将 Activiti 5.21 版本的 Modeler 集成到非 Maven 项目中,以及如何进行流程创建、发布和资源下载。以下是关于这一主题的详细知识讲解。 首先,让我们了解 Activiti Modeler。Activiti...
【标题】"Activiti5.21依赖库" 涉及到的IT知识点主要集中在企业级工作流引擎Activiti的使用以及与之相关的库文件。这些库文件是Activiti5.21版本正常运行所必需的,它们提供了各种功能支持,包括脚本语言处理、用户...
赠送jar包:activiti-json-converter-5.21.0.jar; 赠送原API文档:activiti-json-converter-5.21.0-javadoc.jar; 赠送源代码:activiti-json-converter-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-...
3. 任务处理:用户接收到任务通知后,可以在RuoYi-Activiti的任务列表中处理任务,提交表单数据并流转到下一个环节。 4. 监控与分析:利用RuoYi-Activiti的监控功能,可以查看流程实例的执行轨迹,分析流程瓶颈,...