SpringBoot集成工作流Activiti(前后端代码+数据库)
以下是一个使用Spring Boot集成Activiti工作流引擎的基本示例。这个示例包括了创建流程定义、启动流程实例、完成任务等基本操作。
首先,你需要添加Activiti依赖到你的pom.xml
文件中:
<dependencies>
<!-- Activiti dependencies -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M6</version>
</dependency>
<!-- Other dependencies -->
</dependencies>
接下来,你可以配置Activiti并创建一个服务,用于部署流程定义、启动流程实例和完成任务。
@Configuration
public class ActivitiConfig {
@Bean
public ProcessEngine processEngine() {
return ProcessEngines.getDefaultProcessEngine();
}
}
@Service
public class ActivitiService {
private RepositoryService repositoryService;
private RuntimeService runtimeService;
private TaskService taskService;
@Autowired
public ActivitiService(RepositoryService repositoryService, RuntimeService runtimeService, TaskService taskService) {
this.repositoryService = repositoryService;
this.runtimeService = runtimeService;
this.taskService = taskService;
}
public void deployProcess(String processName, String resource) {
repositoryService.createDeployment()
.addClasspathResource(resource)
.deploy();
}
public void startProcessInstance(String processDefinitionKey) {
runtimeService.startProcessInstanceByKey(processDefinitionKey);
}
public List<Task> getTasks(String assignee) {
return taskService.createTaskQuery().taskAssignee(assignee).list();
}
public void completeTask(String taskId) {
taskService.complete(taskId);
}
}
在这个示例中,ActivitiConfig
类初始化了默认的ProcessEngine。ActivitiService
类包含了部署流程定义、启动流程实例、查询个人任务以及完成任务的方法。
最后,你可以在应用程序的主类或者任何配置的地方调用这些服务方法,例如在启动时自动部署流程:
@SpringBootApplication
public class WorkflowApplication {
public static void main(String[] args) {
SpringApplication.run(WorkflowApplication.class, args);
}
@Autowired
private ActivitiService activitiService;
@PostConstruct
public void deployProcesses() {
activitiService.deployProcess("simple-process", "diagrams/simple-process.bpmn");
}
}
在这个例子中,流程定义是从类路径的资源diagrams/simple-process.bpmn
中读取的。这只是一个示例流程,它可能包含用户任务、网关等。
请注意,这个示例使用了Activiti 7.1.0.M6版本,实际使用时应该确保使用的是最新稳定版本。同时,流程定义的文件名和资源路径应该根据你的实际情况进行调整。
评论已关闭