Activiti6.0整合SpringBoot2.0学习(一)
2018-06-04 本文已影响68人
KevinZc
一、学习背景
近期因工作需要研究了一波Activiti工作流,流程中需要根据业务来推进流程的流转、多人处理任务、排他网关、定时边界任务、撤回等功能。不多说,直接上正文。
二、从零开始
新建springboot项目并创建activiti6的28张表,这里不阐述28张表每个的含义,主要有ACT_HI_(历史信息表)、ACT_RU_(运行时信息表)、ACT_ID_(身份信息类)、ACT_RE_(静态资源类)。
配置文件:
@Configuration
public class ActivitiConfig {
@Autowired
private DataSource dataSource;
@Autowired
private ResourcePatternResolver resourceLoader;
/**
* 初始化配置,将创建28张表
* @return
*/
@Bean
public StandaloneProcessEngineConfiguration processEngineConfiguration() {
StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();
configuration.setDataSource(dataSource);
configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
configuration.setAsyncExecutorActivate(false);
return configuration;
}
@Bean
public ProcessEngine processEngine() {
return processEngineConfiguration().buildProcessEngine();
}
@Bean
public RepositoryService repositoryService() {
return processEngine().getRepositoryService();
}
@Bean
public RuntimeService runtimeService() {
return processEngine().getRuntimeService();
}
@Bean
public TaskService taskService() {
return processEngine().getTaskService();
}
}
上文代码中将activiti常用的几个service注入到spring容器中,方便在其他地方直接注入即可使用。
TestProcess.bpmn文件User Task配置信息
三、ActivitiHelloWorld
写一个controller,实现部署流程、启动流程、完成任务节点,具体代码如下:
@RestController
@RequestMapping("/activiti")
public class ActivitiController {
@Autowired
private RepositoryService repositoryService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@RequestMapping("helloWorld")
public void helloWorld() {
//根据bpmn文件部署流程
Deployment deploy = repositoryService.createDeployment()
.addClasspathResource("TestProcess.bpmn")
.deploy();
//获取流程定义
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult();
//启动流程定义,返回流程实例
ProcessInstance pi = runtimeService.startProcessInstanceById(processDefinition.getId());
String processId = pi.getId();
System.out.println("流程创建成功,当前流程实例ID:"+processId);
Task task=taskService.createTaskQuery().processInstanceId(processId).singleResult();
System.out.println("执行前,任务名称:"+task.getName());
taskService.complete(task.getId());
task = taskService.createTaskQuery().processInstanceId(processId).singleResult();
System.out.println("task为null,任务执行完毕:"+task);
}
}
运行此程序,浏览器访问 http://localhost:8080/activiti/helloWorld
可以看到如下信息:
到这里,一个activiti的demo已经可以运行,接下来将陆续更新。。。
github地址:https://github.com/KevinZc007/acitviti6.0.git
初次写文,如有不当,请各位大佬指正,谢谢。