( 三 )、Springboot2.x 整合 Activiti7
( 三 )、Springboot2.x 整合 Activiti7
1、maven依赖:
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.0.0.Beta2</version>
</dependency>
activiti7中添加SpringSecurity的配置, 如果不想启用这个配置可以在启动类中排出:
@SpringBootApplication(
exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class})
或者 在 yml文件中排出:
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration
2、yml配置
# activity
spring:
activiti:
#1.false,默认值,acticiti启动时对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常
#2.true,acticiti会对数据中所有的表进行更新操作,如果表不存在,则自动创建
#3.create_drop,在acticiti启动时创建表,关闭时删除表(必须手动关闭引擎才能删除表)
#4.drop_create,在acticiti启动时删除原来的表,然后创建新表(不需要手动关闭引擎)
database-schema-update: true
#默认true,效验流程文件,默认效验resources下的processes文件夹里的流程,为true自动部署流程,为false则不部署
check-process-definitions: false
# 流程文件存放目录
process-definition-location-prefix: classpath:/processes/
async-executor-activate: false
# 启用历史记录
db-history-used: true
#历史记录等级
#1.none:不保存任何历史记录,因此在流程执行过程中,这是最高效的
#2.acticiti:级别高于none,保存流程实例与流程行为,其他数据不保存
#3.audit:除activiti级别会保存的数据外,还会保存全部的流程任务及其属性,audit为默认值
#4.full:保存历史数据的最高级别,除了保存audit级别的数据外,还会保存其他流程相关的细节数据,包括一些流程参数等
history-level: full
3、测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class ActivitiSpringBootTest {
@Autowired
private ProcessRuntime processRuntime;
@Autowired
private TaskRuntime taskRuntime;
@Autowired
private SecurityUtil securityUtil;
/**
* 查看流程定义
*/
@Test
public void contextLoads() {
securityUtil.logInAs("salaboy");
Page<ProcessDefinition> processDefinitionPage = processRuntime.processDefinitions(Pageable.of(0, 10));
System.out.println("可用的流程定义数量:" + processDefinitionPage.getTotalItems());
for (ProcessDefinition pd : processDefinitionPage.getContent()) {
System.out.println("流程定义:" + pd);
}
}
/**
* 启动流程实例
*/
@Test
public void testStartProcess() {
securityUtil.logInAs("salaboy");
ProcessInstance pi = processRuntime.start(ProcessPayloadBuilder.start().withProcessDefinitionKey("holiday")
.build());
System.out.println("流程实例ID:" + pi.getId());
}
/**
* 查询任务,并完成自己的任务
*/
@Test
public void testTask() {
securityUtil.logInAs("ryandawsonuk");
Page<Task> taskPage=taskRuntime.tasks(Pageable.of(0,10));
if (taskPage.getTotalItems()>0){
for (Task task:taskPage.getContent()){
taskRuntime.claim(TaskPayloadBuilder.claim().withTaskId(task.getId()).build());
System.out.println("任务:"+task);
taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(task.getId()).build());
}
}
Page<Task> taskPage2=taskRuntime.tasks(Pageable.of(0,10));
if (taskPage2.getTotalItems()>0){
System.out.println("任务:"+taskPage2.getContent());
}
}
}
gitee: https://gitee.com/my-study-project/springboot-activiti7