- ProcessDefinition流程定义, ProcessInstance 流程实例
- ProcessDefinition与ProcessInstance是一对多关系 ```java package com.torey.activiti7_workflow;
import org.activiti.engine.RuntimeService; import org.activiti.engine.runtime.ProcessInstance; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
/**
流程实例对应 act_ru_execution / @SpringBootTest public class Part3_ProcessInstance { /*
- 所用的流程实例类,都要用RuntimeService类 / @Autowired private RuntimeService runtimeService; /*
初始化流程实例,也就是启动流程 */ @Test public void initProcessInstance(){ //runtimeService.startProcessInstanceByKey(processDefinitionKey,businessKey)可以传入两个参数 //businessKey 是业务id //业务流程为: //1 获取页面表单填报的内容,比如:请假事件,请假内容 //2 fromData 写入业务表,返回业务表主键ID==businessKey //3 把业务数据与Activiti7流程数据关联 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(“myProcess_1”,”businessId”); System.out.println(“流程实例ID:” + processInstance.getId()); //启动流程后,act_ru_execution (运行时流程执行实例表)、act_ru_identitylink(运行时参与人员与节点关系表)会有数据 }
/**
获取流程实例 */ @Test public void getProcessInstances(){ List
list = runtimeService.createProcessInstanceQuery().list(); for (ProcessInstance processInstance : list) { System.out.println("===流程实例==");
System.out.println(ToStringBuilder.reflectionToString(processInstance, ToStringStyle.JSON_STYLE));
System.out.println(processInstance.getId());
System.out.println(processInstance.isEnded());
System.out.println("是否被挂起:"+processInstance.isSuspended());
} }
/**
暂停与激活流程实例 */ @Test public void activitieProcessInstance(){ //挂起流程实例 // runtimeService.suspendProcessInstanceById(“d8461bd4-20fd-11eb-9b4d-603a7c6bd5e8”); // System.out.println(“挂起流程实例成功processInstance.isSuspended()==true”); //getProcessInstances(); runtimeService.activateProcessInstanceById(“d8461bd4-20fd-11eb-9b4d-603a7c6bd5e8”); System.out.println(“激活流程实例成功processInstance.isSuspended()==false”); getProcessInstances(); }
/**
- 删除流程实例
- 如果流程里没有用数据,删除则会报错 */ @Test public void deleteProcessInstance(){ runtimeService.deleteProcessInstance(“d8461bd4-20fd-11eb-9b4d-603a7c6bd5e8”,”删除原因!!”); System.out.println(“删除流程成功,act_ru_execution表的数据就没有该数据了!!”); } }
```