( 三 )、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

 

posted @ 2022-04-09 13:55  邓维-java  阅读(466)  评论(0编辑  收藏  举报