很多人整合就是activiti.cfg.xml配置开始,既然咱们都整合到springboot了,配置到application.yml中不好吗?
第一步,maven引入:
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>${activiti.version}</version>
<exclusions>
<exclusion>
<artifactId>mybatis</artifactId>
<groupId>org.mybatis</groupId>
</exclusion>
</exclusions>
</dependency>
如果你有使用mybatis-plus,需要排除一下对应jar包。避免冲突。
配置文件:
spring:
activiti:
database-schema-update: true
history-level: full
db-history-used: true # 检查历史表是否存在
db-identity-used: false # 检查身份信息表是否存在
check-process-definitions: false # 自动部署验证设置:true-开启(默认)、false-关闭
#避免同名bean,策略:覆盖
main:
allow-bean-definition-overriding: true
老的写法就是获取引擎,部署:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
Deployment deployment = processEngine.getRepositoryService()
// 创建一个部署对象
.createDeployment()
// 添加部署名称
.name(activitiBean.getName())
.category(activitiBean.getCategory())
// 从classpath的资源中加载,一次只能加载一个文件
.addClasspathResource(activitiBean.getClasspathResource())
.deploy();//完成部署
logger.info("部署ID:" + deployment.getId());
logger.info("部署名称:" + deployment.getName());
咱们都整合了,后边就不需要这一套了,springboot帮我们自动根据对应bpmn20.xml自动来读取:
先注入,后边自己使用注入的类来调用,我们再也不需要get来get去了。
@Autowired
private TaskService taskService;
@Autowired
private RuntimeService runtimeService;
// 开启进程
ProcessInstance pi =
runtimeService.startProcessInstanceByKey(processDefinitionKey,applyMap);
// 发起任务
Task currentTask =taskService.createTaskQuery().processInstanceId(pi.getId()).singleResult();
轻松整合。参考bili周瑜老师第二课讲解。