由于群裡有些朋友對這個flowable還不是很熟悉,師傅(國小生05101)制作一個開源的項目源碼,一共大家學習和交流,希望對有幫助,少走彎路 如果有不懂的問題可以入群:633168411 裡面都是一些熱心腸的人。
工作流實戰_17_flowable 流程執行個體撤回 項目位址 | https://gitee.com/lwj/flowable.git |
代碼分支 | flowable-base |
視訊講解位址 | https://www.bilibili.com/video/av78129693/ |
使用者名 | 密碼 |
0000001 | test |
0000002 | test |
0000003 | test |
0000004 |
文章目錄
1. 示範
2. 代碼分享
public ReturnVo<String> revokeProcess(RevokeVo revokeVo) {
ReturnVo<String> returnVo = new ReturnVo<>(ReturnCode.FAIL, "撤回失敗!");
if (StringUtils.isNotBlank(revokeVo.getProcessInstanceId())) {
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(revokeVo.getProcessInstanceId()).singleResult();
if (processInstance != null) {
//1.添加撤回意見
this.addComment(revokeVo.getUserCode(), revokeVo.getProcessInstanceId(), CommentTypeEnum.CH.toString(), revokeVo.getMessage());
//2.設定送出人
runtimeService.setVariable(revokeVo.getProcessInstanceId(), FlowConstant.FLOW_SUBMITTER_VAR, processInstance.getStartUserId());
//3.執行撤回
Activity disActivity = flowableBpmnModelService.findActivityByName(processInstance.getProcessDefinitionId(), FlowConstant.FLOW_SUBMITTER);
//4.删除運作和曆史的節點資訊
this.deleteActivity(disActivity.getId(), revokeVo.getProcessInstanceId());
//5.執行跳轉
List<Execution> executions = runtimeService.createExecutionQuery().parentId(revokeVo.getProcessInstanceId()).list();
List<String> executionIds = new ArrayList<>();
executions.forEach(execution -> executionIds.add(execution.getId()));
this.moveExecutionsToSingleActivityId(executionIds, disActivity.getId());
returnVo = new ReturnVo<>(ReturnCode.SUCCESS, "撤回成功!");
}
} else {
returnVo = new ReturnVo<>(ReturnCode.FAIL, "流程執行個體id不能為空!");
}
return returnVo;
}