From 970e7e58ab130fbbb85a291b0e987bb2012d94cd Mon Sep 17 00:00:00 2001 From: yangqicheng Date: Thu, 4 Jul 2024 16:22:31 +0800 Subject: [PATCH] =?UTF-8?q?REQ-2596-=E8=8A=82=E7=82=B9=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E4=BA=BA=E5=A4=A7=E4=BA=8E=E6=8C=87=E5=AE=9A=E4=BA=BA=E6=95=B0?= =?UTF-8?q?,=E6=8C=89=E6=8C=87=E5=AE=9A=E6=95=B0=E9=87=8F=E6=88=AA?= =?UTF-8?q?=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/common/constant/BpmnConstants.java | 5 +++++ .../AbstractBpmnTaskAssigneeSelector.java | 16 +++++++++++++++- .../BasedFixedPersonTaskAssigneeSelector.java | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java index c5e3c7be3..ef594a474 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/constant/BpmnConstants.java @@ -156,4 +156,9 @@ public interface BpmnConstants { * 用于 MQ 的 Header, 记录当前事件的归属应用 */ String MQ_OWNERSHIP_APP = "MQ_OWNERSHIP_APPLICATION"; + + /** + * 审批人数量限制 + */ + Integer ASSIGNER_LIMIT_NUMBER = 60; } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/AbstractBpmnTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/AbstractBpmnTaskAssigneeSelector.java index 0d32c68cf..0e296d4e9 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/AbstractBpmnTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/AbstractBpmnTaskAssigneeSelector.java @@ -35,6 +35,7 @@ import java.util.List; import java.util.function.Supplier; import java.util.stream.Collectors; +import static cn.axzo.workflow.common.constant.BpmnConstants.ASSIGNER_LIMIT_NUMBER; import static cn.axzo.workflow.core.common.code.BpmnTaskRespCode.CALC_TASK_ASSIGNEE_ERROR; import static cn.axzo.workflow.core.common.code.ConvertorRespCode.CONVERTOR_META_DATA_FORMAT_ERROR; import static cn.axzo.workflow.core.common.code.FlowableEngineRespCode.ENGINE_USER_TASK_CALC_ERROR; @@ -72,7 +73,7 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign ApproverScopeEnum processor = ((NoticeFlowElement) flowElement).getProcessor(); assigners.addAll(privateSelector(processor, flowElement, execution, throwException)); } - return assigners.stream().filter(i -> StringUtils.hasText(i.getPersonId())).collect(Collectors.toList()); + return getLimitedAssignerList(assigners.stream().filter(i -> StringUtils.hasText(i.getPersonId())).collect(Collectors.toList())); } private List privateSelector(ApproverScopeEnum processorType, FlowElement flowElement, @@ -174,6 +175,19 @@ public abstract class AbstractBpmnTaskAssigneeSelector implements BpmnTaskAssign } } + /** + * 获取指定数量审批人 + * + * @param assigners 原始的审批人列表 + * @return 截取后的审批人列表 + */ + protected List getLimitedAssignerList(List assigners) { + if (CollectionUtils.isEmpty(assigners) || assigners.size() <= ASSIGNER_LIMIT_NUMBER) { + return assigners; + } + return assigners.subList(0, ASSIGNER_LIMIT_NUMBER); + } + @Override public void setApplicationContext(ApplicationContext context) throws BeansException { this.applicationContext = context; diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedFixedPersonTaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedFixedPersonTaskAssigneeSelector.java index 1934a672e..706553795 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedFixedPersonTaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedFixedPersonTaskAssigneeSelector.java @@ -39,7 +39,7 @@ public class BasedFixedPersonTaskAssigneeSelector extends AbstractBpmnTaskAssign } BpmnMetaParserHelper.getApproverSpecifyValue((UserTask) flowElement) .ifPresent(s -> assigners.addAll(JSON.parseArray(s, BpmnTaskDelegateAssigner.class))); - return assigners; + return getLimitedAssignerList(assigners); } }