update(REQ-2516) - 完善业务指定审批人的校验逻辑
This commit is contained in:
parent
66748ea386
commit
b0cd1f8646
@ -33,6 +33,7 @@ public enum BpmnTaskRespCode implements IModuleRespCode {
|
||||
FIND_TASK_BY_PERSON_ID_ERROR("018", "流程实例中:【{}】未查找指定自然人:【{}】的待处理的流程任务!"),
|
||||
PROCESS_INSTANCE_IS_NOT_EXIST("019", "Execution:{} 对应流程实例不存在,流程状态异常!"),
|
||||
TASK_TYPE_MISMATCH("020", "节点类型不匹配,当前节点类型:【{}】,指定节点类型:【{}】!"),
|
||||
PROCESS_CANT_SET_ASSIGNEE("021", "当前审批状态不允许设置审批人"),
|
||||
;
|
||||
|
||||
private String code;
|
||||
|
||||
@ -5,8 +5,10 @@ import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper;
|
||||
import org.flowable.common.engine.impl.interceptor.Command;
|
||||
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||
import org.flowable.engine.HistoryService;
|
||||
import org.flowable.engine.RuntimeService;
|
||||
import org.flowable.engine.TaskService;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl;
|
||||
import org.flowable.engine.impl.util.CommandContextUtil;
|
||||
import org.flowable.task.api.Task;
|
||||
@ -22,8 +24,10 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_R
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.NO_ASSIGNEE;
|
||||
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_COMPLETE_OPERATION_TYPE;
|
||||
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.DELETED;
|
||||
import static cn.axzo.workflow.core.common.code.BpmnInstanceRespCode.PROCESS_INSTANCE_ID_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.ACTIVITY_BIZ_SET_ASSIGNEE_ERROR;
|
||||
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.ACTIVITY_CANT_SET_ASSIGNEE;
|
||||
import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.PROCESS_CANT_SET_ASSIGNEE;
|
||||
|
||||
/**
|
||||
* 自定的业务指定审批人命令实现
|
||||
@ -53,6 +57,8 @@ public class CustomBizSpecifyAssigneeToTaskCmd implements Command<Boolean>, Seri
|
||||
|
||||
validTask(task);
|
||||
|
||||
validProcessInstance(commandContext, task);
|
||||
|
||||
changeAssigneeSnapshot(commandContext, task);
|
||||
|
||||
addAssignee(commandContext, taskService, task);
|
||||
@ -60,6 +66,20 @@ public class CustomBizSpecifyAssigneeToTaskCmd implements Command<Boolean>, Seri
|
||||
return true;
|
||||
}
|
||||
|
||||
private void validProcessInstance(CommandContext commandContext, Task task) {
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||
HistoryService historyService = processEngineConfiguration.getHistoryService();
|
||||
HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
|
||||
if (Objects.isNull(processInstance)) {
|
||||
throw new WorkflowEngineException(PROCESS_INSTANCE_ID_NOT_EXISTS, task.getProcessInstanceId());
|
||||
}
|
||||
if (!Objects.equals("PROCESSING", processInstance.getBusinessStatus())) {
|
||||
throw new WorkflowEngineException(PROCESS_CANT_SET_ASSIGNEE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void changeAssigneeSnapshot(CommandContext commandContext, Task task) {
|
||||
ProcessEngineConfigurationImpl processEngineConfiguration =
|
||||
CommandContextUtil.getProcessEngineConfiguration(commandContext);
|
||||
@ -85,9 +105,7 @@ public class CustomBizSpecifyAssigneeToTaskCmd implements Command<Boolean>, Seri
|
||||
return;
|
||||
}
|
||||
|
||||
addedAssigners.forEach(i -> {
|
||||
CustomTaskHelper.addMultiTask(commandContext, (TaskEntity) task, i);
|
||||
});
|
||||
addedAssigners.forEach(i -> CustomTaskHelper.addMultiTask(commandContext, (TaskEntity) task, i));
|
||||
|
||||
taskService.setAssignee(task.getId(), HIDDEN_ASSIGNEE_ID);
|
||||
((TaskEntity) task).setTransientVariable(TASK_COMPLETE_OPERATION_TYPE + task.getId(), DELETED.getStatus());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user