流程定义和流程实例
流程定义和流程实例相当于Java中的类和对象的关系
BusinessKey
例如我们在流程执行的某一个节点业务中需要对其他业务进行处理,例如订单处理,就可以使用Businesskey进行传递参数
businessKey长度限制 255字符
@Testvoid testBusinessKey() {// 启动流程实例的过程中添加一个businessKey// 例如出差申请的idProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RuntimeService runtimeService = processEngine.getRuntimeService();ProcessInstance instance = runtimeService.startProcessInstanceByKey("Leave-1", "1001");log.info("BusinessKey:{}",instance.getBusinessKey());}

挂起/激活流程
例如日常办公中月底不接受报销审批,年底不接受贷款审批
或者一些流程需要进行修改时也可以将流程进行挂起,挂起后的流程不会再继续执行
挂起
1、将整个流程定义下的流程实例挂起
/*** 挂起当前流程定义下的所有的流程实例*/@Testvoid suspendAllProcessInstances() {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();RepositoryService repositoryService = processEngine.getRepositoryService();ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey(key).singleResult();// 获取当前定义下的实例是否都是挂起状态boolean suspended = processDefinition.isSuspended();// 获取流程定义idString definitionId = processDefinition.getId();// 如果是挂起状态,修改为激活状态,反之亦然if(suspended){/*** @param1 definitionId* @param2 是否激活* @param3 激活时间*/repositoryService.activateProcessDefinitionById(definitionId,true,null);log.info("流程{}已激活",definitionId);}else{/*** @param1 definitionId* @param2 是否挂起* @param3 挂起暂停时间*/repositoryService.suspendProcessDefinitionById(definitionId,true,null);log.info("流程{}已暂停",definitionId);}}
挂起之后当前流程定义下的所有流程实例无法继续执行
2、挂起单个流程实例
/**
* 挂起单独的流程实例
*/
@Test
void suspendSingleProcessInstance(){
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance instance = runtimeService.createProcessInstanceQuery()
.processInstanceId("12501")
.singleResult();
boolean suspended = instance.isSuspended();
String instanceId = instance.getId();
if(suspended) {
runtimeService.activateProcessInstanceById(instanceId);
log.info("流程{}已激活",instanceId);
}else{
runtimeService.suspendProcessInstanceById(instanceId);
log.info("流程{}已暂停",instanceId);
}
}
只有当前的流程实例无法继续执行,其余流程实例不受影响
