From 38f3ba685b90741a9ca4dd695448fbd5bc9a0599 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 26 Aug 2025 18:19:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-4418)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E4=BA=BA=E4=B8=BB=E7=AE=A1=E7=9A=84=E4=BA=8C?= =?UTF-8?q?=E7=BA=A7=E8=8C=83=E5=9B=B4=E9=99=90=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/utils/BpmnJsonConverterUtil.java | 4 ++ .../common/utils/BpmnMetaParserHelper.java | 13 +++++ ...InitiatorLeaderV2TaskAssigneeSelector.java | 4 +- .../src/main/resources/convertorXML.bpmn | 56 +++++++++---------- 4 files changed, 47 insertions(+), 30 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnJsonConverterUtil.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnJsonConverterUtil.java index 96b8cdf13..52ed64130 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnJsonConverterUtil.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnJsonConverterUtil.java @@ -121,6 +121,8 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.TEMPLATE_NOTICE_MES import static cn.axzo.workflow.common.constant.BpmnConstants.TEMPLATE_PENDING_MESSAGE_ID; import static cn.axzo.workflow.common.constant.BpmnConstants.TEMPLATE_SIGN_PENDING_MESSAGE_ID; import static cn.axzo.workflow.common.constant.BpmnConstants.TEMPLATE_SMS_MESSAGE_ID; +import static cn.axzo.workflow.common.enums.ApproverSpecifyRangeUnitEnum.in_ent; +import static cn.axzo.workflow.common.enums.ApproverSpecifyRangeUnitEnum.in_project; import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_CONDITION; import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_EMPTY; import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_EXCLUSIVE_GATEWAY; @@ -828,6 +830,8 @@ public final class BpmnJsonConverterUtil { // "/resources/配置台模型.json"; // String fileName = "/Users/wangli/work/company/yizhi/workflow-engine/workflow-engine-server/src/main" + // "/resources/权限点模型.json"; + + boolean present = Optional.of(in_ent).filter(unit -> unit != in_project).isPresent(); String fileName = "/Users/wangli/work/company/yizhi/workflow-engine/workflow-engine-server/src/main" + "/resources/request.json"; byte[] bytes = Files.readAllBytes(Paths.get(fileName)); diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnMetaParserHelper.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnMetaParserHelper.java index f6b939e40..b0217a7e0 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnMetaParserHelper.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/common/utils/BpmnMetaParserHelper.java @@ -86,6 +86,7 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_FIELD; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_FIELD_META; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_FIELD_OPTION; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_FIELD_PERMISSION; +import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_INITIATOR_LEADER_RANGE_UNIT; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_INITIATOR_SPECIFIED_EXCLUDE_COOPERATE_TYPES; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_INITIATOR_SPECIFIED_EXCLUDE_IDENTITY_TYPES; import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_INITIATOR_SPECIFIED_FILTER; @@ -548,6 +549,18 @@ public final class BpmnMetaParserHelper { return Optional.empty(); } + public static Optional getInitiatorLeaderRangeUnit(FlowElement flowElement) { + Optional approverSpecify = getApproverSpecify(flowElement); + if (approverSpecify.isPresent()) { + return defaultValid(flowElement, CONFIG_APPROVER_SPECIFY).flatMap(element -> element.getChildElements() + .getOrDefault(CONFIG_INITIATOR_LEADER_RANGE_UNIT, Collections.emptyList()) + .stream() + .findFirst() + .map(e -> ApproverSpecifyRangeUnitEnum.valueOf(e.getAttributeValue(null, ELEMENT_ATTRIBUTE_VALUE)))); + } + return Optional.empty(); + } + public static Optional getInitiatorSpecifiedFilter(FlowElement flowElement) { Optional approverSpecify = getApproverSpecify(flowElement); if (approverSpecify.isPresent() && Objects.equals(approverSpecify.get(), ApproverSpecifyEnum.initiatorSpecified_v2)) { diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedInitiatorLeaderV2TaskAssigneeSelector.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedInitiatorLeaderV2TaskAssigneeSelector.java index 2e27378fa..3ab7cfce8 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedInitiatorLeaderV2TaskAssigneeSelector.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/delegate/BasedInitiatorLeaderV2TaskAssigneeSelector.java @@ -26,8 +26,8 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR; import static cn.axzo.workflow.common.enums.ApproverEmptyHandleTypeEnum.transferToAdmin; import static cn.axzo.workflow.common.enums.ApproverSpecifyRangeUnitEnum.in_project; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverEmptyHandleType; -import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverSpecifyRangeUnit; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getAreaFilterEnable; +import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getInitiatorLeaderRangeUnit; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getSpecialtyFilterEnable; /** @@ -64,7 +64,7 @@ public class BasedInitiatorLeaderV2TaskAssigneeSelector extends AbstractBpmnTask .scope(FlowTaskAssignerScopeDTO.builder() .nodeId(initiator.parseNodeId()) .upLevel(SignApproverOrgLimitEnum.LV_0.getCode()) - .crossDomain(getApproverSpecifyRangeUnit(flowElement).filter(unit -> unit != in_project).isPresent()) + .crossDomain(getInitiatorLeaderRangeUnit(flowElement).filter(unit -> unit != in_project).isPresent()) .build()) .initiatorPersonId(initiator.parsePersonId()) .areaCodes(getAreaFilterEnable(flowElement) ? Sets.newHashSet(ListUtils.emptyIfNull(orgDTO.getIncludeAreaCodes())) : Sets.newHashSet()) diff --git a/workflow-engine-server/src/main/resources/convertorXML.bpmn b/workflow-engine-server/src/main/resources/convertorXML.bpmn index 4219f0d0e..0440b5d21 100644 --- a/workflow-engine-server/src/main/resources/convertorXML.bpmn +++ b/workflow-engine-server/src/main/resources/convertorXML.bpmn @@ -89,7 +89,7 @@ - @@ -181,7 +181,7 @@ ${nrOfInstances != nrOfActiveInstances} - @@ -200,7 +200,7 @@ - @@ -293,9 +293,9 @@ ${nrOfInstances != nrOfActiveInstances} - - @@ -318,40 +318,40 @@ - - - - - - - + - - - - - + + + + + - + + + + + + + - - - - - + + + + +