public static TaskInstance markDoneTaskInstance()

in core/src/main/java/com/alibaba/smart/framework/engine/common/util/MarkDoneUtil.java [32:67]


    public static TaskInstance markDoneTaskInstance(TaskInstance taskInstance, String targetStatus, String sourceStatus,
                                                    Map<String, Object> variables,
                                                    TaskInstanceStorage taskInstanceStorage,
                                                    ProcessEngineConfiguration processEngineConfiguration) {
        Date currentDate = DateUtil.getCurrentDate();
        taskInstance.setCompleteTime(currentDate);

        if (null == taskInstance.getClaimTime()) {
            taskInstance.setClaimTime(currentDate);
        }

        taskInstance.setStatus(targetStatus);

        if (null != variables) {
            String tag = ObjectUtil.obj2Str(variables.get(RequestMapSpecialKeyConstant.TASK_INSTANCE_TAG));
            taskInstance.setTag(tag);

            String claimUserId = ObjectUtil.obj2Str(variables.get(RequestMapSpecialKeyConstant.TASK_INSTANCE_CLAIM_USER_ID));
            taskInstance.setClaimUserId(claimUserId);
            Object o = variables.get(RequestMapSpecialKeyConstant.TASK_INSTANCE_COMMENT);
            String comment =  o == null?null:String.valueOf(
                o);
            taskInstance.setClaimUserId(claimUserId);
            taskInstance.setComment(comment);

        }

        // 需要注意,针对 mongodb 模式,该方法会在内部实现,删除人员和任务的冗余存储关系。
        int updateCount = taskInstanceStorage.updateFromStatus(taskInstance, sourceStatus, processEngineConfiguration);
        if (updateCount != 1) {
            throw new ConcurrentException(String
                .format("update_task_status_fail task_id=%s expect_from_[%s]_to_[%s]", taskInstance.getInstanceId(), sourceStatus,
                    taskInstance.getStatus()));
        }
        return taskInstance;
    }