https://blog.csdn.net/oChangWen/article/details/51908441
https://tomoya92.github.io/2019/04/24/activiti-env/
以下是springboot 結合好的一些基本操作:
controller 層:
public class DemoController {
@Autowired
private RepositoryService repositoryService;
@Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private HistoryService historyService;
private String deployKey = "myFirstProcess";
}
1. 啓動流程實例,這樣一個流程纔開始
@ApiOperation("啓動實例")
@GetMapping("first")
public void firstDemo(){
//啓動流程
//設置變量 全局有效
Map paramMap = new HashMap();
paramMap.put("p1","p1111");
paramMap.put("p2","p2222");
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefindKey,paramMap);
System.out.println("流程實例ID:-->"+processInstance.getId());
System.out.println("流程定義ID:-->"+processInstance.getProcessDefinitionId());
System.out.println("流程執行ID:-->"+processInstance.getSuperExecutionId());
}
2. 流程定義的信息查詢
@ApiOperation("流程定義的信息查詢")
@GetMapping("egiht")
public void egihtDemo(){
List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery().list();
for (ProcessDefinition processDefinition : processDefinitionList){
System.out.println("流程部署ID:"+processDefinition.getDeploymentId());
System.out.println("流程定義ID:"+processDefinition.getId());
System.out.println("流程定義Key:"+processDefinition.getKey());
System.out.println("流程定義Name:"+processDefinition.getName());
System.out.println("--------------");
}
}
3. 流程部署的信息查詢
@ApiOperation("流程部署的信息查詢")
@GetMapping("seven")
public void sevenDemo(){
List<Deployment> deploymentList = repositoryService.createDeploymentQuery().processDefinitionKey("myFirstProcess").list();
for(Deployment deployment : deploymentList){
System.out.println("流程部署ID:"+deployment.getId());
System.out.println("流程部署Name:"+deployment.getName());
System.out.println("------------");
}
}
4.查詢指定人的任務
@ApiOperation("查詢任務")
@GetMapping("two")
public void twoDemo(){
//查詢任務
List<Task> taskList = taskService.createTaskQuery().taskAssignee("朱春燕").list();
System.out.println("朱春燕任務:");
for(Task task : taskList){
System.out.println(" 任務:-->"+task.getName()+" 流程實例:-->"+task.getProcessInstanceId()+" TASKID:-->"+task.getId()+"executeId:"+task.getExecutionId());
}
}
5. 完成任務
@ApiOperation("完成任務")
@GetMapping("three")
public void threeDemo(){
//完成任務 完成實例 2501
//查詢任務
List<Task> taskList = taskService.createTaskQuery().taskAssignee("朱春燕").processInstanceId("17501").list();
for (Task task : taskList){
System.out.println(" 完成taskId:"+task.getId()+" 完成任務名稱:"+task.getName());
taskService.complete(task.getId());
}
}
@ApiOperation("完成任務:指定taskid")
@GetMapping("five")
public void fiveDemo(){
//完成任務 完成實例 2501
System.out.println("完成任務");
//查詢任務
Task task = taskService.createTaskQuery().taskId("27507").singleResult();
if(task != null){
System.out.println(" 完成taskId:"+task.getId()+" 完成任務名稱:"+task.getName());
Map paramMap = new HashMap();
paramMap.put("confirm","no");
taskService.complete(task.getId(),paramMap);
}else {
System.out.println("任務已完成");
}
}
6. 刪除流程定義
@ApiOperation("刪除指定流程部署")
@GetMapping("nine")
public void nineDemo(){
repositoryService.deleteDeployment("1569",true);
}
@ApiOperation("刪除指定流程實例")
@GetMapping("ten")
public void tenDemo(){
runtimeService.deleteProcessInstance("17501","test");
}
7. 查詢流程狀態(判斷流程正在執行,還是結束)
public void isProcessEnd(){
String processInstanceId = "1001";
ProcessInstance pi = runtimeService//表示正在執行的流程實例和執行對象
.createProcessInstanceQuery()//創建流程實例查詢
.processInstanceId(processInstanceId)//使用流程實例ID查詢
.singleResult();
if(pi==null){
System.out.println("流程已經結束");
}
else{
System.out.println("流程沒有結束");
}
}
8. 查詢歷史任務
@ApiOperation("查看歷史任務:指定人的")
@GetMapping("eleven")
public void elevenDemo(){
List<HistoricTaskInstance> historicTaskInstanceList = historyService.createHistoricTaskInstanceQuery().taskAssignee("朱春燕").orderByHistoricTaskInstanceEndTime().desc().list();
for(HistoricTaskInstance historicTaskInstance : historicTaskInstanceList){
System.out.println("歷史任務:"+historicTaskInstance.getName() + "TASKID:" + historicTaskInstance.getId()+" 開始時間:"+historicTaskInstance.getStartTime());
}
}
9. 查詢歷史流程實例
public void findHistoryProcessInstance(){
String processInstanceId = "1001";
HistoricProcessInstance hpi = historyService//與歷史數據(歷史表)相關的Service
.createHistoricProcessInstanceQuery()//創建歷史流程實例查詢
.processInstanceId(processInstanceId)//使用流程實例ID查詢
.singleResult();
System.out.println(hpi.getId()+" "+hpi.getProcessDefinitionId()+" "+hpi.getStartTime()+" "+hpi.getEndTime()+" "+hpi.getDurationInMillis());
表結構介紹:
act_re_deployment 流程部署表
act_re_prodef 流程定義表
act_ge_bytearray表 用來存資源信息表;
act_ru_task;插入了一條任務數據;
act_ru_execution 運行時流程執行表
act_ru_identitylink 是於執行主體相關信息表
act_hi_taskinst 歷史流程實例任務表加了一條任務數據;
act_hi_procinst 歷史流程實例實例表加了一條流程實例相關信息的數據(包括開始時間,結束時間等等信息);
act_hi_identitylink 歷史流程實例參數者的表加了一條數據;
act_hi_actinst 歷史活動節點表加了三條流程活動節點信息的數據(每個流程實例具體的執行活動節點的信息)