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

浙公網安備 33010602011771號