Activiti7工作流引擎:进阶篇(九) 内嵌子流程 SubProcess

知识传送门 》》》》》》》》》》》》》》》》》》》

请添加图片描述

为什么普通人要想成佛就得经过九九八十一难,
而坏人只需要放下屠刀就能立地成佛呢?

一:定义.bpmn文件

子流程用于将主流程中其中一个大的节点进行进一步拆分成多个步骤,这些步骤组成一个完整的小流程,当子流程执行完后才会回到主流程,就像方法调用一样。子流程的作用就是对多个主流程步骤进行分组形成一个整体大的步骤,让流程图的主逻辑看起来主次比较分明,逻辑比较清晰,子流程并没有其它特殊的功能。就像一个方法写1000行代码能实现功能一样,你把这1000行拆分成10个方法也能完成功能,只是拆分后主逻辑比较清晰而已,不拆分会把一些很细节的逻辑混在主逻辑上看起来不太清晰而已。
在这里插入图片描述

二:启动并完成第一个任务

@Test
void testStartAndComplete() {
	runtimeService.startProcessInstanceByKey("SubProcessExample");
	Task task = taskService.createTaskQuery().processDefinitionKey("SubProcessExample")
			.taskAssignee("zhangsan")
			.singleResult();
	taskService.complete(task.getId());
}

zhangsan完成任务后进入了子流程的第一个节点(内部审核)。
在这里插入图片描述

内嵌子流程启动了一个父流程实例,也启动了一个子流程实例,子流程实例隶属于父流程实例PARENT_ID_。而调用子流程CallActivityTask的SUPER_EXEC_是有值的。
在这里插入图片描述

三:完成内部审核

public void testCompleteTask() {
	Task task = taskService.createTaskQuery().processDefinitionKey("SubProcessExample")
			.taskAssignee("lisi")
			.singleResult();
	taskService.complete(task.getId());
}

在这里插入图片描述

在这里插入图片描述

五:最终审核

@Test
public void testCompleteTask() {
	Task task = taskService.createTaskQuery().processDefinitionKey("SubProcessExample")
			.taskAssignee("wangwu")
			.singleResult();
	taskService.complete(task.getId());
}

在这里插入图片描述

在这里插入图片描述

调用子流程:多个流程之间相互独立,会分别启动多个流程实例。
内嵌子流程:嵌套之流程只能在当前流程中使用,不能被其它流程调用,只启动一个实例。

六:子流程多实例

子流程也可以进行多实例,也就是会签,即会签也可以是单个节点进行会签,也可以是一个子流程(包含多个节点的)一整套流程进行会签。
在这里插入图片描述

知识传送门 》》》》》》》》》》》》》》》》》》》

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Activiti 是一个流程引擎框架,可以帮助开发者快速实现工作流相关的应用。下面是使用 Activiti 创建流程引擎的步骤: 1. 创建 maven 项目,添加 Activiti 依赖。 在项目的 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>5.22.0</version> </dependency> ``` 2. 创建流程引擎配置类。 在项目中创建一个 Java 类,用于配置流程引擎。可以在该类中指定数据库连接信息、流程图文件路径等信息。以下是一个示例配置类: ``` import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration; public class ActivitiConfig { public ProcessEngine getProcessEngine() throws IOException { // 读取配置文件 InputStream inputStream = getClass().getResourceAsStream("/activiti.properties"); Properties properties = new Properties(); properties.load(inputStream); // 配置流程引擎 ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration() .setJdbcUrl(properties.getProperty("jdbc.url")) .setJdbcUsername(properties.getProperty("jdbc.username")) .setJdbcPassword(properties.getProperty("jdbc.password")) .setJdbcDriver(properties.getProperty("jdbc.driver")) .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE); // 创建流程引擎 ProcessEngine processEngine = cfg.buildProcessEngine(); return processEngine; } } ``` 在该配置类中,我们读取一个名为 activiti.properties 的配置文件,该文件包含了数据库连接信息。在实际开发中,我们可以将这些信息存储在外部配置文件中,以便于修改和管理。 3. 创建流程图文件。 使用 Activiti Modeler 工具创建流程图文件,或者手动编写 BPMN 2.0 标准的 XML 文件。将该文件放置在项目的 classpath 下,以便于程序能够读取。 4. 启动流程引擎。 在程序中使用上述配置类创建流程引擎实例,并启动该实例。以下是一个示例代码: ``` public static void main(String[] args) throws IOException { // 创建流程引擎配置类 ActivitiConfig config = new ActivitiConfig(); // 获取流程引擎实例 ProcessEngine processEngine = config.getProcessEngine(); // 输出流程引擎信息 String name = processEngine.getName(); String version = ProcessEngine.VERSION; System.out.println("流程引擎名称:" + name); System.out.println("流程引擎版本:" + version); // 关闭流程引擎 processEngine.close(); } ``` 在上述示例代码中,我们创建了一个 ActivitiConfig 实例,并使用该实例获取了流程引擎。获取流程引擎后,我们可以输出其名称和版本信息,并在程序结束时关闭该引擎。 以上就是使用 Activiti 创建流程引擎的步骤。开发者可以根据自己的需求对流程引擎进行配置和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风流 少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值