阅读量:0
在Java中,可以使用开源框架如Activiti或Camunda来实现Activity工作流。这里以Activiti为例,介绍如何使用它来实现一个简单的工作流。
- 添加Activiti依赖
在你的项目中添加Activiti的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖:
<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>7.1.0.M4</version> </dependency>
- 创建工作流模型
创建一个BPMN 2.0 XML文件来定义工作流。例如,创建一个名为my-workflow.bpmn20.xml
的文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <process id="myWorkflow" name="My Workflow" isExecutable="true"> <startEvent id="startEvent"/> <sequenceFlow id="flow1" sourceRef="startEvent" targetRef="task1"/> <userTask id="task1" name="Task 1"/> <sequenceFlow id="flow2" sourceRef="task1" targetRef="task2"/> <userTask id="task2" name="Task 2"/> <sequenceFlow id="flow3" sourceRef="task2" targetRef="endEvent"/> <endEvent id="endEvent"/> </process> </definitions>
这个工作流包含一个开始事件、两个用户任务和一个结束事件。
- 创建Java类作为工作流引擎
创建一个Java类,用于启动和执行工作流。例如,创建一个名为MyWorkflowExecutor.java
的文件,内容如下:
import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; @Component public class MyWorkflowExecutor implements CommandLineRunner { @Autowired private RepositoryService repositoryService; @Autowired private RuntimeService runtimeService; @Autowired private TaskService taskService; @Override public void run(String... args) throws Exception { // 启动工作流 runtimeService.startProcessInstanceByKey("myWorkflow"); // 获取任务列表 String taskId = taskService.createTaskQuery().singleResult().getId(); System.out.println("Task ID: " + taskId); // 完成任务 taskService.complete(taskId); // 获取任务列表 taskId = taskService.createTaskQuery().singleResult().getId(); System.out.println("Task ID: " + taskId); // 完成任务 taskService.complete(taskId); // 获取任务列表 taskId = taskService.createTaskQuery().singleResult().getId(); System.out.println("Task ID: " + taskId); // 完成任务 taskService.complete(taskId); } }
- 配置Activiti
在application.properties
或application.yml
文件中添加以下配置:
# application.properties spring.activiti.database-schema-update=true
或者
# application.yml spring: activiti: database-schema-update: true
这将确保Activiti在启动时自动创建或更新数据库表结构。
- 运行应用程序
现在你可以运行你的Spring Boot应用程序。当你执行MyWorkflowExecutor
类时,它将启动一个工作流并完成任务。你可以在Activiti管理界面查看工作流的执行情况。
这只是一个简单的示例,Activiti还提供了许多其他功能,如流程定义的部署、任务管理、事件监听器等。你可以查阅Activiti官方文档以了解更多详细信息。