public static void markDoneEIAndCancelTI()

in core/src/main/java/com/alibaba/smart/framework/engine/behavior/impl/UserTaskBehaviorHelper.java [100:131]


    public static void markDoneEIAndCancelTI(ExecutionContext context, ExecutionInstance executionInstance,
                                List<ExecutionInstance> totalExecutionInstanceList, ExecutionInstanceStorage executionInstanceStorage, ProcessEngineConfiguration processEngineConfiguration) {
        // Complete all execution
        for (ExecutionInstance instance : totalExecutionInstanceList) {
            if (instance.isActive()) {
                MarkDoneUtil.markDoneExecutionInstance(instance, executionInstanceStorage,
                    processEngineConfiguration);
            }
        }

        // Find all task
        TaskInstanceStorage taskInstanceStorage = processEngineConfiguration.getAnnotationScanner().getExtensionPoint(
                ExtensionConstant.COMMON,TaskInstanceStorage.class);

        List<TaskInstance> allTaskInstanceList = queryAllTaskInstanceList(executionInstance, processEngineConfiguration, taskInstanceStorage);

        // Cancel uncompleted task
        for (TaskInstance taskInstance : allTaskInstanceList) {

            //当前的taskInstance 已经在complete方法中更新过了
            if (taskInstance.getExecutionInstanceId().equals(executionInstance.getInstanceId())) {
                continue;
            }

            if (TaskInstanceConstant.COMPLETED.equals(taskInstance.getStatus())) {
                continue;
            }

            // 这里产生了db 读写访问,
            MarkDoneUtil.markDoneTaskInstance(taskInstance,TaskInstanceConstant.CANCELED,taskInstance.getStatus(),context.getRequest(),taskInstanceStorage,processEngineConfiguration);
        }
    }