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