天天看点

springboot+activiti7实现发起人撤回/追回功能

@Override
    public void revocation(String procInstId) {
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();

        // 获取当前执行任务节点
        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(procInstId).singleResult();
        List<Execution> list = runtimeService.createExecutionQuery().processInstanceId(processInstance.getId()).list();
        Set<Execution> executions = list.stream().filter(execution -> execution.getActivityId() != null).collect(Collectors.toSet());

        Iterator<Execution> iterator = executions.iterator();
        while (iterator.hasNext()) {
            Execution execution = iterator.next();
            // 获取当前执行任务
            Task task = taskService.createTaskQuery().executionId(execution.getId()).singleResult();
            String comment = "【" + sysUser.getRealname() + "】追回了该申请";
            handleResult(task.getId(), procInstId, ActivitiConstant.HANDLE_STATUS_YCX, comment, task.getTaskDefinitionKey(), sysUser.getUsername(), execution.getId());
        }

        runtimeService.deleteProcessInstance(procInstId, ActivitiConstant.HANDEL_RESULT_CX);       
    }