From badf74b9a31e7ca9ee46741a86eedcb4560ff70c Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 29 Nov 2023 19:55:37 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20=E8=B0=83=E6=95=B4=20mock=20?= =?UTF-8?q?=E9=80=89=E4=BA=BA=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/ApproverSpecifyEnum.java | 1 + .../deletage/MockTaskAssigneeSelector.java | 5 ++- .../impl/BpmnProcessTaskServiceImpl.java | 3 +- .../FixedPersonTaskAssigneeSelector.java | 2 +- .../PreNodeSpecifiedTaskAssigneeSelector.java | 41 +++++++++++++++++++ 5 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/PreNodeSpecifiedTaskAssigneeSelector.java diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/ApproverSpecifyEnum.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/ApproverSpecifyEnum.java index d2ab719ce..11c9c6892 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/ApproverSpecifyEnum.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/ApproverSpecifyEnum.java @@ -14,6 +14,7 @@ public enum ApproverSpecifyEnum { initiatorLeader("initiatorLeader", "发起人主管"), initiatorLeaderRecursion("initiatorLeaderRecursion", "发起人多级主管"), fixedPerson("fixedPerson", "固定人员"), + preNodeSpecified("preNodeSpecified", "上级节点指定"), ; private String type; private String desc; diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/deletage/MockTaskAssigneeSelector.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/deletage/MockTaskAssigneeSelector.java index 2a6960eb3..d7fa7ca1b 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/deletage/MockTaskAssigneeSelector.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/deletage/MockTaskAssigneeSelector.java @@ -28,9 +28,10 @@ public class MockTaskAssigneeSelector implements BpmnTaskAssigneeSelector { // 一级审批 if (Objects.equals(userTask.getId(), "2")) { BpmnTaskDelegateAssigner task_2 = new BpmnTaskDelegateAssigner(); - task_2.setAssignee("1"); + task_2.setAssignee("24"); + task_2.setAssigneeType("5"); task_2.setAssignerName("王粒"); - task_2.setTenantId("10001"); + task_2.setTenantId("296"); users.add(task_2); } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java index 0d0de0136..22750373a 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessTaskServiceImpl.java @@ -311,7 +311,8 @@ public class BpmnProcessTaskServiceImpl implements BpmnProcessTaskService { taskService.addComment(dto.getTaskId(), instance.getId(), COMMENT_TYPE_ADVICE, dto.getAdvice()); } if (Objects.nonNull(dto.getNextApprover())) { - runtimeService.setVariable(task.getExecutionId(), INTERNAL_SPECIFY_NEXT_APPROVER, dto.getNextApprover()); + runtimeService.setVariable(task.getProcessInstanceId(), INTERNAL_SPECIFY_NEXT_APPROVER, + dto.getNextApprover()); } saveAttachment(dto.getAttachmentList(), instance.getId(), task.getId()); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/FixedPersonTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/FixedPersonTaskAssigneeSelector.java index b5ed964e8..bcc7423a2 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/FixedPersonTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/FixedPersonTaskAssigneeSelector.java @@ -12,7 +12,7 @@ import java.util.ArrayList; import java.util.List; /** - * 基于"固定人元"查询审批人 + * 基于"固定人员"查询审批人 * * @author wangli * @since 2023/11/18 22:56 diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/PreNodeSpecifiedTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/PreNodeSpecifiedTaskAssigneeSelector.java new file mode 100644 index 000000000..271591d98 --- /dev/null +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/PreNodeSpecifiedTaskAssigneeSelector.java @@ -0,0 +1,41 @@ +package cn.axzo.workflow.server.controller.delegate; + +import cn.axzo.workflow.common.enums.ApproverSpecifyEnum; +import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; +import com.google.common.collect.Lists; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.flowable.bpmn.model.UserTask; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.delegate.DelegateExecution; +import org.springframework.stereotype.Component; + +import java.util.List; + +import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_SPECIFY_NEXT_APPROVER; + +/** + * 上级节点指定审批人 + * + * @author wangli + * @since 2023/11/29 17:43 + */ +@Slf4j +@Component +@AllArgsConstructor +public class PreNodeSpecifiedTaskAssigneeSelector extends AbstractBpmnTaskAssigneeSelector { + + private final RuntimeService runtimeService; + + @Override + public boolean support(String param) { + return ApproverSpecifyEnum.preNodeSpecified.getType().equals(param); + } + + @Override + public List select(UserTask userTask, DelegateExecution execution) { + BpmnTaskDelegateAssigner assigner = runtimeService.getVariable(execution.getProcessInstanceId(), + INTERNAL_SPECIFY_NEXT_APPROVER, BpmnTaskDelegateAssigner.class); + return Lists.newArrayList(assigner); + } +}