挂起(暂停)
流程图:
挂起操作:
@Test
public void suspend(){
String processInstanceId = "62dc671f-aae7-11ea-865e-000ec6dd34b8";
runtimeService.suspendProcessInstanceById(processInstanceId);
System.out.println("暂停/挂起成功");
}
为了比较我启动了两个实例:
两个实例,一个执行挂起操作,另一个不做任何操作,对比数据库数据:
发现此时ac_ru_excution
及 ac_ru_task
表中,只有一个字段SUSPENSION_STATE_
不同,如下:
suspetion_state
1-激活;2-挂起
此时去完成挂起的任务,会抛出异常:
org.camunda.bpm.engine.SuspendedEntityInteractionException: ENGINE-03043 task with id ‘62deb112-aae7-11ea-865e-000ec6dd34b8’ is suspended.
激活
激活操作:
@Test
public void active(){
String processInstanceId = "62dc671f-aae7-11ea-865e-000ec6dd34b8";
runtimeService.activateProcessInstanceById(processInstanceId);
System.out.println("激活成功");
}
此时这个运行实例和任务的 SUSPENSION_STATE_
的值为1,也就是激活状态;
Camunda
还提供了一个 UpdateProcessInstanceSuspensionStateSelectBuilder
用来更改实列的suspension状态:
runtimeService.updateProcessInstanceSuspensionState()
.byProcessInstanceId(processInstanceId)
// .byProcessDefinitionKey(processDefinitionKey)
// .byProcessDefinitionId(processDefinitionId)
.suspend();
// .activate();