天天看點

工作流實戰_17_flowable 流程執行個體撤回

由于群裡有些朋友對這個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. 代碼分享​​

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;
    }