From af90d68ea1ab0cc713cb661bd847719693de164e Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 7 Oct 2023 19:10:22 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20=E4=BF=AE=E6=94=B9=20assigneeId=20?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpmn/task/BpmnTaskDelegateAssigner.java | 2 +- .../response/bpmn/task/BpmnTaskInstanceVO.java | 1 + .../engine/EngineExecutionStartListener.java | 7 +++++-- .../impl/BpmnProcessInstanceServiceImpl.java | 8 ++++---- .../core/service/impl/BpmnTaskServiceImpl.java | 16 ++++++++-------- 5 files changed, 19 insertions(+), 15 deletions(-) diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskDelegateAssigner.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskDelegateAssigner.java index 3a9b9c037..375ee4d2f 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskDelegateAssigner.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnTaskDelegateAssigner.java @@ -63,7 +63,7 @@ public class BpmnTaskDelegateAssigner implements Serializable { @NotBlank(message = "租户不能为空") private String tenantId; - public String getAssigneeId() { + public String buildAssigneeId() { if (StringUtils.hasLength(assigneeType)) { return assignee + "_" + assigneeType; } diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/task/BpmnTaskInstanceVO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/task/BpmnTaskInstanceVO.java index d0c424007..df10405e5 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/task/BpmnTaskInstanceVO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/task/BpmnTaskInstanceVO.java @@ -29,6 +29,7 @@ public class BpmnTaskInstanceVO { @ApiModelProperty(value = "任务归属人") private String owner; @ApiModelProperty(value = "任务审批人") + // TODO 调整审批人 private String assignee; @ApiModelProperty(value = "任务创建时间") private Date createTime; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineExecutionStartListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineExecutionStartListener.java index 66e92c2b3..264c6c916 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineExecutionStartListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/engine/EngineExecutionStartListener.java @@ -20,7 +20,10 @@ import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; -import static cn.axzo.workflow.common.constant.BpmConstants.*; +import static cn.axzo.workflow.common.constant.BpmConstants.BPM_ALLOW_SKIP_USER_TASK; +import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_SPECIFY_NEXT_APPROVER; +import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO; +import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT; /** @@ -62,7 +65,7 @@ public class EngineExecutionStartListener implements ExecutionListener { List assigneeIdList = new ArrayList<>(); if (!CollectionUtils.isEmpty(assigners)) { for (BpmnTaskDelegateAssigner user : assigners) { - assigneeIdList.add(user.getAssigneeId()); + assigneeIdList.add(user.buildAssigneeId()); } if (!userTask.hasMultiInstanceLoopCharacteristics()) { diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java index 4e916c348..68e910dae 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java @@ -253,7 +253,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic // 创建流程实例 // 设置流程实例的开始人,参考https://wenku.baidu.com/view/5538062e7a563c1ec5da50e2524de518964bd3f9.html - Authentication.setAuthenticatedUserId(dto.getInitiator().getAssigneeId()); + Authentication.setAuthenticatedUserId(dto.getInitiator().buildAssigneeId()); String name = StringUtils.isNotBlank(dto.getCustomProcessInstanceName()) ? dto.getCustomProcessInstanceName() : definition.getName(); @@ -284,7 +284,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic // 创建流程实例 // 设置流程实例的开始人,参考https://wenku.baidu.com/view/5538062e7a563c1ec5da50e2524de518964bd3f9.html - Authentication.setAuthenticatedUserId(dto.getInitiator().getAssigneeId()); + Authentication.setAuthenticatedUserId(dto.getInitiator().buildAssigneeId()); String name = StringUtils.isNotBlank(dto.getCustomProcessInstanceName()) ? dto.getCustomProcessInstanceName() : definition.getName(); @@ -312,7 +312,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic if (instance == null) { throw new WorkflowEngineException(PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS); } - if (!Objects.equals(instance.getStartUserId(), dto.getInitiator().getAssigneeId())) { + if (!Objects.equals(instance.getStartUserId(), dto.getInitiator().buildAssigneeId())) { throw new WorkflowEngineException(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF); } if (Objects.nonNull(instance.getEndTime()) && Objects.equals(BpmProcessInstanceResultEnum.CANCELLED.getStatus(), instance.getBusinessStatus())) { @@ -321,7 +321,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic Map variables = new HashMap<>(); variables.put(INTERNAL_END_TENANT_ID, dto.getInitiator().getTenantId()); - variables.put(INTERNAL_END_USER_ID, dto.getInitiator().getAssigneeId()); + variables.put(INTERNAL_END_USER_ID, dto.getInitiator().buildAssigneeId()); variables.put(INTERNAL_END_USER_NAME, dto.getInitiator().getAssignerName()); variables.put(INTERNAL_DELETE_PROCESS_FLAG, INTERNAL_PROCESS_TYPE_CANCEL); runtimeService.setVariables(instance.getId(), variables); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java index 2749a0d19..f87b8cc39 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnTaskServiceImpl.java @@ -286,7 +286,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService { @Override public void approveTask(BpmnTaskAuditDTO dto) { // 校验任务存在 - Task task = checkTask(dto.getApprover().getTenantId(), dto.getApprover().getAssigneeId(), dto.getTaskId()); + Task task = checkTask(dto.getApprover().getTenantId(), dto.getApprover().buildAssigneeId(), dto.getTaskId()); // 校验流程实例存在 HistoricProcessInstance instance = processInstanceService.getProcessInstance( task.getProcessInstanceId(), dto.getApprover().getTenantId(), true); @@ -295,7 +295,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService { } if (StringUtils.hasLength(dto.getAdvice())) { - Authentication.setAuthenticatedUserId(dto.getApprover().getAssigneeId()); + Authentication.setAuthenticatedUserId(dto.getApprover().buildAssigneeId()); taskService.addComment(dto.getTaskId(), instance.getId(), COMMENT_TYPE_ADVICE, dto.getAdvice()); } runtimeService.setVariable(task.getExecutionId(), INTERNAL_SPECIFY_NEXT_APPROVER, dto.getNextApprover()); @@ -309,7 +309,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService { @Transactional(rollbackFor = Exception.class) public void rejectTask(BpmnTaskAuditDTO dto) { // 校验任务存在 - Task task = checkTask(dto.getApprover().getTenantId(), dto.getApprover().getAssigneeId(), dto.getTaskId()); + Task task = checkTask(dto.getApprover().getTenantId(), dto.getApprover().buildAssigneeId(), dto.getTaskId()); // 校验流程实例存在 HistoricProcessInstance instance = processInstanceService.getProcessInstance( @@ -319,7 +319,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService { throw new WorkflowEngineException(PROCESS_INSTANCE_NOT_EXISTS); } if (StringUtils.hasLength(dto.getAdvice())) { - Authentication.setAuthenticatedUserId(dto.getApprover().getAssigneeId()); + Authentication.setAuthenticatedUserId(dto.getApprover().buildAssigneeId()); taskService.addComment(dto.getTaskId(), instance.getId(), COMMENT_TYPE_ADVICE, dto.getAdvice()); } // 多实例 @@ -358,7 +358,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService { Map variables = new HashMap<>(); variables.put(INTERNAL_END_TENANT_ID, dto.getApprover().getTenantId()); variables.put(INTERNAL_END_USER_NAME, dto.getApprover().getAssignerName()); - variables.put(INTERNAL_END_USER_ID, dto.getApprover().getAssigneeId()); + variables.put(INTERNAL_END_USER_ID, dto.getApprover().buildAssigneeId()); variables.put(INTERNAL_DELETE_PROCESS_FLAG, INTERNAL_PROCESS_TYPE_REJECT); runtimeService.setVariables(instance.getId(), variables); @@ -528,7 +528,7 @@ public class BpmnTaskServiceImpl implements BpmnTaskService { throw new WorkflowEngineException(TASK_COMPLETE_FAIL_NOT_EXISTS); } if ((StringUtils.hasLength(task.getAssignee()) && Objects.isNull(dto.getOriginAssigner())) - || !Objects.equals(task.getAssignee(), dto.getOriginAssigner().getAssigneeId())) { + || !Objects.equals(task.getAssignee(), dto.getOriginAssigner().buildAssigneeId())) { throw new WorkflowEngineException(TASK_COMPLETE_FAIL_ASSIGN_NOT_SELF); } @@ -544,12 +544,12 @@ public class BpmnTaskServiceImpl implements BpmnTaskService { dto.getTargetAssigner()); runtimeService.setVariable(task.getProcessInstanceId(), INTERNAL_TASK_RELATION_ASSIGNEE_INFO + task.getTaskDefinitionKey(), - dto.getTargetAssigner().getAssigneeId()); + dto.getTargetAssigner().buildAssigneeId()); runtimeService.setVariable(task.getProcessInstanceId(), INTERNAL_TASK_RELATION_ASSIGNEE_INFO_SNAPSHOT + task.getTaskDefinitionKey(), dto.getTargetAssigner()); - taskService.setAssignee(task.getId(), dto.getTargetAssigner().getAssigneeId()); + taskService.setAssignee(task.getId(), dto.getTargetAssigner().buildAssigneeId()); } }