From 48d4025f0222b9f2dad4455e853bc90fe56be00e Mon Sep 17 00:00:00 2001
From: wangli <274027703@qq.com>
Date: Wed, 22 May 2024 18:25:40 +0800
Subject: [PATCH] =?UTF-8?q?update(REQ-2324)=20-=20=E4=B8=9A=E5=8A=A1?=
=?UTF-8?q?=E8=8A=82=E7=82=B9=E5=A6=82=E6=9E=9C=E8=AE=BE=E7=BD=AE=E7=9A=84?=
=?UTF-8?q?=E6=98=AF=E2=80=9C=E4=B8=9A=E5=8A=A1=E6=8C=87=E5=AE=9A=E5=AE=A1?=
=?UTF-8?q?=E6=89=B9=E4=BA=BA=E2=80=9D=EF=BC=8C=E4=B8=94=E4=B8=9A=E5=8A=A1?=
=?UTF-8?q?=E4=BC=A0=E5=85=A5=E4=BA=86=E7=A9=BA=E5=AE=A1=E6=89=B9=E4=BA=BA?=
=?UTF-8?q?=EF=BC=8C=E5=88=99=E6=9C=8D=E5=8A=A1=E7=AB=AF=E4=B8=BB=E5=8A=A8?=
=?UTF-8?q?=E9=A9=B3=E5=9B=9E=E8=AF=A5=E5=AE=9E=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../request/bpmn/task/BpmnActivitySetAssigneeDTO.java | 6 +++---
.../service/impl/BpmnProcessActivityServiceImpl.java | 9 +++++++++
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnActivitySetAssigneeDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnActivitySetAssigneeDTO.java
index 8095efa78..f86419a07 100644
--- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnActivitySetAssigneeDTO.java
+++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/bpmn/task/BpmnActivitySetAssigneeDTO.java
@@ -6,7 +6,6 @@ import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
@@ -42,11 +41,12 @@ public class BpmnActivitySetAssigneeDTO {
private String processInstanceId;
/**
- * 需要设置的审批人, 业务侧自行去重, 请根据 personId 进行去重, 如果发现有重复, 并抛出异常
+ * 需要设置的审批人, 业务侧自行去重, 请根据 personId 进行去重, 如果发现有重复, 并抛出异常.
+ *
+ * 业务如果传入的 assigners 集合为空, 引擎则会对该流程进行自动驳回处理,且驳回意见为“业务未指定审批人”
*/
@ApiModelProperty(value = "审批人集合信息", notes = "业务传参时,需要注意去重")
@Valid
- @NotEmpty(message = "审批人不能为空")
private List assigners;
/**
diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessActivityServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessActivityServiceImpl.java
index 53116529d..21840a93a 100644
--- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessActivityServiceImpl.java
+++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessActivityServiceImpl.java
@@ -2,14 +2,17 @@ package cn.axzo.workflow.core.service.impl;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnActivitySetAssigneeDTO;
import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
+import cn.axzo.workflow.core.engine.cmd.CustomAbortProcessInstanceCmd;
import cn.axzo.workflow.core.engine.cmd.CustomBizSpecifyAssigneeToTaskCmd;
import cn.axzo.workflow.core.service.BpmnProcessActivityService;
+import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
import lombok.extern.slf4j.Slf4j;
import org.flowable.common.engine.impl.interceptor.CommandExecutor;
import org.flowable.engine.RuntimeService;
import org.flowable.engine.runtime.Execution;
import org.flowable.spring.SpringProcessEngineConfiguration;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.util.Objects;
@@ -24,6 +27,8 @@ public class BpmnProcessActivityServiceImpl implements BpmnProcessActivityServic
@Resource
private RuntimeService runtimeService;
@Resource
+ private ExtAxHiTaskInstService extAxHiTaskInstService;
+ @Resource
private SpringProcessEngineConfiguration processEngineConfiguration;
@Override
@@ -38,6 +43,10 @@ public class BpmnProcessActivityServiceImpl implements BpmnProcessActivityServic
@Override
public void setAssignee(BpmnActivitySetAssigneeDTO dto) {
CommandExecutor commandExecutor = processEngineConfiguration.getCommandExecutor();
+ if (CollectionUtils.isEmpty(dto.getAssigners())) {
+ Execution execution = runtimeService.createExecutionQuery().executionId(dto.getTriggerId()).singleResult();
+ commandExecutor.execute(new CustomAbortProcessInstanceCmd(execution.getProcessInstanceId(), null, "业务未指定审批人", extAxHiTaskInstService));
+ }
commandExecutor.execute(new CustomBizSpecifyAssigneeToTaskCmd(dto.getTriggerId(), dto.getAssigners()));
}
}