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 历史活动节点表加了三条流程活动节点信息的数据(每个流程实例具体的执行活动节点的信息)