feat(REQ-4418) - 调整协助转换逻辑

This commit is contained in:
wangli 2025-08-25 14:00:38 +08:00
parent 86add675c2
commit 709a912d1f
6 changed files with 1195 additions and 957 deletions

View File

@ -846,7 +846,7 @@ public final class BpmnJsonConverterUtil {
getSignConfig(bpmnModel.getMainProcess());
BpmnJsonModel bpmnJsonModel = convertToJson(bpmnModel);
FlowElement flowElement = bpmnModel.getFlowElement("node_779068202795_ltht");
FlowElement flowElement = bpmnModel.getFlowElement("node_865016003134_707l");
Optional<InitiatorSpecifiedRangeEnum> initiatorSpecifyRange = getInitiatorSpecifyRange(flowElement);
Optional<Boolean> initiatorSpecifiedFilter = getInitiatorSpecifiedFilter(flowElement);
Optional<List<String>> excludeIdentityTypes = getExcludeIdentityTypes(flowElement);

View File

@ -502,7 +502,7 @@ public final class BpmnMetaParserHelper {
public static Optional<ApproverSpecifyRangeEnum> getApproverSpecifyRange(UserTask userTask) {
Optional<ApproverSpecifyEnum> approverSpecify = getApproverSpecify(userTask);
if (approverSpecify.isPresent() && Objects.equals(approverSpecify.get(), ApproverSpecifyEnum.position_v2)) {
if (approverSpecify.isPresent()) {
return defaultValid(userTask, CONFIG_APPROVER_SPECIFY).map(element -> ApproverSpecifyRangeEnum.valueOf(element.getChildElements()
.getOrDefault(CONFIG_APPROVE_SPECIFY_RANGE, Collections.emptyList())
.get(0).getAttributeValue(null, ELEMENT_ATTRIBUTE_VALUE)));
@ -519,7 +519,7 @@ public final class BpmnMetaParserHelper {
public static Optional<SignApproverOrgLimitEnum> getApproverSpecifyRangeOrgLimit(UserTask userTask) {
Optional<ApproverSpecifyEnum> approverSpecify = getApproverSpecify(userTask);
if (approverSpecify.isPresent() && Objects.equals(approverSpecify.get(), ApproverSpecifyEnum.position_v2)) {
if (approverSpecify.isPresent()) {
return defaultValid(userTask, CONFIG_APPROVER_SPECIFY).flatMap(element -> element.getChildElements()
.getOrDefault(CONFIG_APPROVE_SPECIFY_RANGE_ORG_LIMIT, Collections.emptyList())
.stream()
@ -538,7 +538,7 @@ public final class BpmnMetaParserHelper {
public static Optional<CooperateShipTypeEnum> getCooperateShipType(UserTask userTask) {
Optional<ApproverSpecifyEnum> approverSpecify = getApproverSpecify(userTask);
if (approverSpecify.isPresent() && Objects.equals(approverSpecify.get(), ApproverSpecifyEnum.position_v2)) {
if (approverSpecify.isPresent()) {
return defaultValid(userTask, CONFIG_APPROVER_SPECIFY).flatMap(element -> element.getChildElements()
.getOrDefault(CONFIG_APPROVE_SPECIFY_COOPERATE_TYPE, Collections.emptyList())
.stream()
@ -557,7 +557,7 @@ public final class BpmnMetaParserHelper {
public static Optional<ApproverSpecifyRangeUnitEnum> getApproverSpecifyRangeUnit(UserTask userTask) {
Optional<ApproverSpecifyEnum> approverSpecify = getApproverSpecify(userTask);
if (approverSpecify.isPresent() && Objects.equals(approverSpecify.get(), ApproverSpecifyEnum.position_v2)) {
if (approverSpecify.isPresent()) {
return defaultValid(userTask, CONFIG_APPROVER_SPECIFY).flatMap(element -> element.getChildElements()
.getOrDefault(CONFIG_APPROVE_SPECIFY_RANGE_UNIT, Collections.emptyList())
.stream()

View File

@ -16,8 +16,6 @@ import java.util.List;
import java.util.Objects;
import static cn.axzo.workflow.common.code.ConvertorRespCode.CONVERTOR_COMMON_ERROR;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVAL_METHOD;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVER_SCOPE;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVER_SPECIFY;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVE_SPECIFY_COOPERATE_TYPE;
import static cn.axzo.workflow.common.constant.BpmnConstants.CONFIG_APPROVE_SPECIFY_RANGE;
@ -236,15 +234,15 @@ public class ServiceTaskJsonConverter extends AbstractBpmnJsonConverter<ServiceT
case within_the_project_construction_units:
throw new WorkflowEngineException(CONVERTOR_COMMON_ERROR, "身份不支持“项目内参建单位的企业身份”选项");
case specified_org:
checkCascadeConfig(property, "身份“审批单指定的末级组织”");
checkCascadeConfig(property, "身份“审批单指定的末级组织”", false);
addCascadeConfig(property, approverSpecifyElement, false);
break;
case initiator:
checkCascadeConfig(property, "身份“审批单发起人”");
checkCascadeConfig(property, "身份“审批单发起人”", false);
addCascadeConfig(property, approverSpecifyElement, false);
break;
case pre_node_approver:
checkCascadeConfig(property, "身份“上节点审批人”");
checkCascadeConfig(property, "身份“上节点审批人”", false);
addCascadeConfig(property, approverSpecifyElement, false);
break;
default:
@ -413,10 +411,14 @@ public class ServiceTaskJsonConverter extends AbstractBpmnJsonConverter<ServiceT
}
public static void checkCascadeConfig(BpmnJsonNodeProperty property, String tips) {
checkCascadeConfig(property, tips, true);
}
public static void checkCascadeConfig(BpmnJsonNodeProperty property, String tips, boolean containsRangeUnit) {
if (Objects.isNull(property.getApproverSpecifyRangeOrgLimit())) {
throw new WorkflowEngineException(CONVERTOR_COMMON_ERROR, tips + "缺少级联组织配置");
}
if (Objects.isNull(property.getApproverSpecifyRangeUnit())) {
if (Objects.isNull(property.getApproverSpecifyRangeUnit()) && containsRangeUnit) {
throw new WorkflowEngineException(CONVERTOR_COMMON_ERROR, tips + "缺少级联配置");
}
}

View File

@ -29,7 +29,7 @@ import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_ROLE_V2_CONFIG_INVALID;
import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_IDENTITY_V2_CONFIG_INVALID;
import static cn.axzo.workflow.common.code.FlowableEngineRespCode.ENGINE_USER_TASK_TYPE_NOT_SUPPORT;
import static cn.axzo.workflow.common.constant.BpmnConstants.BIZ_ORG_RELATION;
import static cn.axzo.workflow.common.constant.BpmnConstants.CLOSE_PROCESS_ASSIGNER;
@ -63,7 +63,7 @@ public class BasedIdentityV2TaskAssigneeSelector extends AbstractBpmnTaskAssigne
public List<BpmnTaskDelegateAssigner> select(FlowElement flowElement, DelegateExecution execution, Boolean throwException) {
Optional<ApproverSpecifyRangeEnum> optRange = getApproverSpecifyRange(flowElement);
if (!optRange.isPresent()) {
throw new WorkflowEngineException(ENGINE_ROLE_V2_CONFIG_INVALID, "级联配置", flowElement.getId());
throw new WorkflowEngineException(ENGINE_IDENTITY_V2_CONFIG_INVALID, "级联配置", flowElement.getId());
}
CooperationOrgDTO orgDTO = (CooperationOrgDTO) execution.getVariables().get(BIZ_ORG_RELATION);

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff