From b3b1be05de6c12946b5072166ff9f1f4f363cddf Mon Sep 17 00:00:00 2001 From: yangqicheng Date: Thu, 4 Jul 2024 18:58:34 +0800 Subject: [PATCH] =?UTF-8?q?REQ-2596-=E6=8A=84=E9=80=81=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E6=8C=89=E4=BA=BA=E5=91=98=E6=95=B0=E9=87=8F=E5=88=86=E6=89=B9?= =?UTF-8?q?=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/common/constant/BpmnConstants.java | 5 +++++ .../listener/EngineCarbonCopyEventListener.java | 17 ++++++++++++----- 2 files changed, 17 insertions(+), 5 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 ef594a474..565af1d35 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 @@ -161,4 +161,9 @@ public interface BpmnConstants { * 审批人数量限制 */ Integer ASSIGNER_LIMIT_NUMBER = 60; + + /** + * 抄送MQ消息每批次人员数量 + */ + Integer CARBON_ASSIGNER_BATCH_SIZE = 20; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineCarbonCopyEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineCarbonCopyEventListener.java index c9f26d948..52050f161 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineCarbonCopyEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineCarbonCopyEventListener.java @@ -36,6 +36,7 @@ import java.util.List; import java.util.Optional; import java.util.concurrent.atomic.AtomicReference; +import static cn.axzo.workflow.common.constant.BpmnConstants.CARBON_ASSIGNER_BATCH_SIZE; import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCarbonCopyConfigs; @@ -107,11 +108,17 @@ public class EngineCarbonCopyEventListener implements JavaDelegate { } return conf; }).orElse(null); - - MessagePushEventImpl event = MessagePushEventBuilder.createEvent(MessagePushEventType.CARBON_COPY, - carbonUsers, bpmnNoticeConf, execution.getProcessInstanceId(), - execution.getTenantId(), getCarbonTaskId(execution)); - eventDispatcher.dispatchEvent(event, processEngineConfiguration.getEngineCfgKey()); + //按人员批次发送消息 + int startIndex = 0, endIndex = Integer.min(startIndex + CARBON_ASSIGNER_BATCH_SIZE, carbonUsers.size()); + do { + List bpmnTaskDelegateAssigners = carbonUsers.subList(startIndex, endIndex); + MessagePushEventImpl event = MessagePushEventBuilder.createEvent(MessagePushEventType.CARBON_COPY, + bpmnTaskDelegateAssigners, bpmnNoticeConf, execution.getProcessInstanceId(), + execution.getTenantId(), getCarbonTaskId(execution)); + eventDispatcher.dispatchEvent(event, processEngineConfiguration.getEngineCfgKey()); + startIndex = endIndex; + endIndex = Integer.min(endIndex + CARBON_ASSIGNER_BATCH_SIZE, carbonUsers.size()); + } while (startIndex < carbonUsers.size()); } private String getCarbonTaskId(DelegateExecution execution) {