Activiti调用式子流程

2023-11-23 01:18
文章标签 流程 调用 activiti 式子

本文主要是介绍Activiti调用式子流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.事物子流程

2.调用式子流程

需要写两个流程定义文件:

其中一个的调用事件和边界事件:

<callActivity id="callActivity" calledElement="my-process-check-order"><extensionElements><activiti:in  source="errorflag" target="errorflag" /><activiti:out source="key1" target="key1" /></extensionElements>
</callActivity><boundaryEvent id="boundary" attachedToRef="callActivity"><errorEventDefinition errorRef="bpmnError"></errorEventDefinition>
</boundaryEvent>

第二个流程定义文件:

<process id="my-process-check-order"><startEvent id="start"/><endEvent id="end"/><parallelGateway id="parallelGateway1" name="并行网关1"/><serviceTask id="pay" name="确认支付" activiti:class="com.syc.activiti.example.MyPayJavaDelegate"/><serviceTask id="take" name="确认收货" activiti:class="com.syc.activiti.example.MyTakeJavaDelegate"/><parallelGateway id="parallelGateway2" name="并行网关2"/><...>
</process>

MyPayJavaDelegate类:

@Override
public void execute(DelegateExecution execution) {LOGGER.info("variables = {}", execution.getVariables());LOGGER.info("run my pay java delegate {}", this);execution.getParent().setVariableLocal("key2", "value2");execution.setVariable("key1", "value1");execution.setVariable("key3", "value3");Object errorflag = execution.getVariable("errorflag");if(Objects.equals(errorflag, true)){throw new BpmnError("bpmnError");}LOGGER.info("pay error");
}

测试:

@Test
@Deployment(resources = {"my-process-subprocess3.bpmn20.xml","my-process-subprocess4.bpmn20.xml"})
public void testSubProcess4(){Map<String, Object> variables = new HashMap<>();variables.put("errorflag", false);variables.put("key0", "value0");ProcessInstance processInstance = activitiRule.getRuntimeService().startProcessInstanceByKey("my-process", variables);Task task = activitiRule.getTaskService().createTaskQuery().singleResult();LOGGER.info("task.name = {}",task.getName());Map<String, Object> variables1 = activitiRule.getRuntimeService().getVariables(processInstance.getId());LOGGER.info("variables1 = {}", variables1);
}

errorflag为false,正常执行:

errorflag改为true后的异常输出:

好处:将流程的复杂度降低,把流程定义文件拆分成多个小的文件

 

这篇关于Activiti调用式子流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/414275

相关文章

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Idea调用WebService的关键步骤和注意事项

《Idea调用WebService的关键步骤和注意事项》:本文主要介绍如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选... 目录前言一、理解WebService的基本概念二、获取WSDL文件三、阅读和理解WSDL文件四、选择对接

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca