Flowable流程实例processInstance基本操作
流程开启流程中止流程激活流程删除流程查询 1. maven项目依赖
2. 流程processInstance基本操作org.flowable flowable-spring-boot-starter-process6.7.2
public class ProcessInstanceServiceImpl implements ProcessInstanceService {
private final RuntimeService runtimeService;
@Override
public ProcessInstance startProcessInstanceByKey(@NonNull String processDefinitionKey, Map variables) {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, variables);
if (log.isDebugEnabled()) {
log.debug("start process instance key: {}, piId: {}", processDefinitionKey, processInstance.getProcessInstanceId());
}
return processInstance;
}
@Override
public ProcessInstance startProcessInstanceByKeyAndTenantId(@NonNull String processDefinitionKey, String tenantId, Map variables) {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKeyAndTenantId(processDefinitionKey, variables, tenantId);
if (log.isDebugEnabled()) {
log.debug("start process instance key: {}, tenantId: {}, piId: {}", processDefinitionKey, tenantId, processInstance.getProcessInstanceId());
}
return processInstance;
}
@Override
public ProcessInstance startProcessInstanceByKey(@NonNull String processDefinitionKey, String businessKey, Map variables) {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, businessKey, variables);
if (log.isDebugEnabled()) {
log.debug("start process instance key: {}, bizId: {}, piId: {}", processDefinitionKey, businessKey, processInstance.getProcessInstanceId());
}
return processInstance;
}
@Override
public ProcessInstance startProcessInstanceByKeyAndTenantId(@NonNull String processDefinitionKey, String businessKey, String tenantId, Map variables) {
ProcessInstance processInstance = runtimeService.startProcessInstanceByKeyAndTenantId(processDefinitionKey, businessKey, variables, tenantId);
if (log.isDebugEnabled()) {
log.debug("start process instance key: {}, bizId: {}, tenantId: {}, piId: {}", processDefinitionKey, businessKey, tenantId, processInstance.getProcessInstanceId());
}
return processInstance;
}
@Override
public void suspendProcessInstanceById(@NonNull String processInstanceId) {
if (log.isDebugEnabled()) {
log.debug("suspend process id: {}", processInstanceId);
}
runtimeService.suspendProcessInstanceById(processInstanceId);
}
@Override
public void activateProcessInstanceById(@NonNull String processInstanceId) {
if (log.isDebugEnabled()) {
log.debug("active process id: {}", processInstanceId);
}
runtimeService.activateProcessInstanceById(processInstanceId);
}
@Override
public void deleteProcessInstance(@NonNull String processInstanceId, String deleteReason) {
if (log.isDebugEnabled()) {
log.debug("delete process id: {}", processInstanceId);
}
runtimeService.deleteProcessInstance(processInstanceId, deleteReason);
}
}
3. 流程processInstance查询
public class ProcessInstanceQueryServiceImpl implements ProcessInstanceQueryService {
private final RuntimeService runtimeService;
@Override
public ProcessInstance findOne(String processInstanceId) {
return createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
}
private ProcessInstanceQuery createProcessInstanceQuery() {
return runtimeService.createProcessInstanceQuery();
}
}
4.Controller请求定义
public class ProcessInstanceController {
private final ProcessInstanceService processInstanceService;
@PostMapping("/start/key/{processDefinitionKey}")
public R start(@PathVariable String processDefinitionKey, @RequestBody Map variables) {
ProcessInstance instance = processInstanceService.startProcessInstanceByKey(processDefinitionKey, variables);
return R.data(ProcessVo.of(instance));
}
@PostMapping("/start/key/{processDefinitionKey}-{tenantId}")
public R start(@PathVariable String processDefinitionKey, @PathVariable String tenantId, @RequestBody Map variables) {
ProcessInstance instance = processInstanceService.startProcessInstanceByKeyAndTenantId(processDefinitionKey, tenantId, variables);
return R.data(ProcessVo.of(instance));
}
@PostMapping("/start/key/biz/{processDefinitionKey}-{bizId}")
public R startByBizId(@PathVariable String processDefinitionKey, @PathVariable String bizId, @RequestBody Map variables) {
ProcessInstance instance = processInstanceService.startProcessInstanceByKey(processDefinitionKey, bizId, variables);
return R.data(ProcessVo.of(instance));
}
@PostMapping("/start/key/{processDefinitionKey}-{tenantId}-{bizId}")
public R start(@PathVariable String processDefinitionKey, @PathVariable String tenantId, @PathVariable String bizId, @RequestBody Map variables) {
ProcessInstance instance = processInstanceService.startProcessInstanceByKeyAndTenantId(processDefinitionKey, bizId, tenantId, variables);
return R.data(ProcessVo.of(instance));
}
@PostMapping("/suspend/{processInstanceId}")
public R suspend(@PathVariable String processInstanceId) {
processInstanceService.suspendProcessInstanceById(processInstanceId);
return R.data(Boolean.TRUE);
}
@PostMapping("/activate/{processInstanceId}")
public R activate(@PathVariable String processInstanceId) {
processInstanceService.activateProcessInstanceById(processInstanceId);
return R.data(Boolean.TRUE);
}
@PostMapping("/delete/{processInstanceId}")
public R delete(@PathVariable String processInstanceId, @RequestBody ProcessDelVo vo) {
processInstanceService.deleteProcessInstance(processInstanceId, vo.getReason());
return R.data(Boolean.TRUE);
}
}
4.项目完整地址
Flowable流程实例processInstance开启,中止,激活,删除,查询 Github 地址
Flowable流程实例processInstance开启,中止,激活,删除,查询 Gitee 地址



