From 96875b1e022f03e9857f4027fd49c0785a45bfca Mon Sep 17 00:00:00 2001 From: jason <2667446@qq.com> Date: Sun, 19 Jan 2025 18:33:02 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=91=20=E6=9D=A1=E4=BB=B6=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E8=AE=BE=E7=BD=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/model/simple/BpmSimpleModelNodeVO.java | 44 ++++++++++--------- .../flowable/core/util/SimpleModelUtils.java | 16 +++---- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO.java index 1ba4f39b53..bbe341a182 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/simple/BpmSimpleModelNodeVO.java @@ -101,20 +101,10 @@ public class BpmSimpleModelNodeVO { @Schema(description = "条件节点") private List conditionNodes; // 补充说明:有且仅有条件、并行、包容分支会使用 - // TODO @jason:conditionType、conditionExpression、defaultFlow、conditionGroups 搞成一个 condition 属性,会好点么? - @Schema(description = "条件类型", example = "1") - @InEnum(BpmSimpleModeConditionType.class) - private Integer conditionType; // 仅用于条件节点 BpmSimpleModelNodeType.CONDITION_NODE - - @Schema(description = "条件表达式", example = "${day>3}") - private String conditionExpression; // 仅用于条件节点 BpmSimpleModelNodeType.CONDITION_NODE - - @Schema(description = "是否默认条件", example = "true") - private Boolean defaultFlow; // 仅用于条件节点 BpmSimpleModelNodeType.CONDITION_NODE /** - * 条件组 + * 条件节点设置 */ - private ConditionGroups conditionGroups; // 仅用于条件节点 BpmSimpleModelNodeType.CONDITION_NODE + private ConditionSetting conditionSetting; // 仅用于条件节点 BpmSimpleModelNodeType.CONDITION_NODE @Schema(description = "路由分支组", example = "[]") private List routerGroups; @@ -155,9 +145,7 @@ public class BpmSimpleModelNodeVO { @Schema(description = "值", example = "xxx") private String value; - } - } @Schema(description = "审批节点拒绝处理策略") @@ -192,7 +180,6 @@ public class BpmSimpleModelNodeVO { @Schema(description = "最大提醒次数", example = "1") private Integer maxRemindCount; - } @Schema(description = "空处理策略") @@ -207,7 +194,6 @@ public class BpmSimpleModelNodeVO { @Schema(description = "指定人员审批的用户编号数组", example = "1") private List userIds; - } @Schema(description = "操作按钮设置") @@ -226,6 +212,28 @@ public class BpmSimpleModelNodeVO { private Boolean enable; } + @Schema(description = "条件设置") + @Data + @Valid + // 仅用于条件节点 BpmSimpleModelNodeType.CONDITION_NODE + public static class ConditionSetting { + + @Schema(description = "条件类型", example = "1") + @InEnum(BpmSimpleModeConditionType.class) + private Integer conditionType; + + @Schema(description = "条件表达式", example = "${day>3}") + private String conditionExpression; + + @Schema(description = "是否默认条件", example = "true") + private Boolean defaultFlow; + + /** + * 条件组 + */ + private ConditionGroups conditionGroups; + } + @Schema(description = "条件组") @Data @Valid @@ -270,7 +278,6 @@ public class BpmSimpleModelNodeVO { @Schema(description = "运算符右边的值", example = "1") @NotEmpty(message = "运算符右边的值不能为空") private String rightSide; - } @Schema(description = "延迟器") @@ -286,7 +293,6 @@ public class BpmSimpleModelNodeVO { @Schema(description = "延迟时间表达式", example = "PT1H,2025-01-01T00:00:00") @NotEmpty(message = "延迟时间表达式不能为空") private String delayTime; - } @Schema(description = "路由分支") @@ -308,7 +314,5 @@ public class BpmSimpleModelNodeVO { @Schema(description = "条件组", example = "{}") private ConditionGroups conditionGroups; - } - } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java index 51452b3b7d..fc230ccdfc 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/framework/flowable/core/util/SimpleModelUtils.java @@ -544,7 +544,7 @@ public class SimpleModelUtils { // 设置默认的序列流(条件) BpmSimpleModelNodeVO defaultSeqFlow = CollUtil.findOne(node.getConditionNodes(), - item -> BooleanUtil.isTrue(item.getDefaultFlow())); + item -> BooleanUtil.isTrue(item.getConditionSetting().getDefaultFlow())); Assert.notNull(defaultSeqFlow, "条件分支节点({})的默认序列流不能为空", node.getId()); exclusiveGateway.setDefaultFlow(defaultSeqFlow.getId()); return exclusiveGateway; @@ -587,7 +587,7 @@ public class SimpleModelUtils { inclusiveGateway.setId(node.getId()); // 设置默认的序列流(条件) BpmSimpleModelNodeVO defaultSeqFlow = CollUtil.findOne(node.getConditionNodes(), - item -> BooleanUtil.isTrue(item.getDefaultFlow())); + item -> BooleanUtil.isTrue(item.getConditionSetting().getDefaultFlow())); Assert.notNull(defaultSeqFlow, "包容分支节点({})的默认序列流不能为空", node.getId()); inclusiveGateway.setDefaultFlow(defaultSeqFlow.getId()); // TODO @jason:setName @@ -631,8 +631,8 @@ public class SimpleModelUtils { * @param node 条件节点 */ public static String buildConditionExpression(BpmSimpleModelNodeVO node) { - return buildConditionExpression(node.getConditionType(), node.getConditionExpression(), - node.getConditionGroups()); + return buildConditionExpression(node.getConditionSetting().getConditionType(), node.getConditionSetting().getConditionExpression(), + node.getConditionSetting().getConditionGroups()); } public static String buildConditionExpression(BpmSimpleModelNodeVO.RouterCondition router) { @@ -771,11 +771,11 @@ public class SimpleModelUtils { if (nodeType == BpmSimpleModelNodeType.CONDITION_BRANCH_NODE) { // 查找满足条件的 BpmSimpleModelNodeVO 节点 BpmSimpleModelNodeVO matchConditionNode = CollUtil.findOne(currentNode.getConditionNodes(), - conditionNode -> !BooleanUtil.isTrue(conditionNode.getDefaultFlow()) + conditionNode -> !BooleanUtil.isTrue(conditionNode.getConditionSetting().getDefaultFlow()) && evalConditionExpress(variables, conditionNode)); if (matchConditionNode == null) { matchConditionNode = CollUtil.findOne(currentNode.getConditionNodes(), - conditionNode -> BooleanUtil.isTrue(conditionNode.getDefaultFlow())); + conditionNode -> BooleanUtil.isTrue(conditionNode.getConditionSetting().getDefaultFlow())); } Assert.notNull(matchConditionNode, "找不到条件节点({})", currentNode); // 遍历满足条件的 BpmSimpleModelNodeVO 节点 @@ -786,11 +786,11 @@ public class SimpleModelUtils { if (nodeType == BpmSimpleModelNodeType.INCLUSIVE_BRANCH_NODE) { // 查找满足条件的 BpmSimpleModelNodeVO 节点 Collection matchConditionNodes = CollUtil.filterNew(currentNode.getConditionNodes(), - conditionNode -> !BooleanUtil.isTrue(conditionNode.getDefaultFlow()) + conditionNode -> !BooleanUtil.isTrue(conditionNode.getConditionSetting().getDefaultFlow()) && evalConditionExpress(variables, conditionNode)); if (CollUtil.isEmpty(matchConditionNodes)) { matchConditionNodes = CollUtil.filterNew(currentNode.getConditionNodes(), - conditionNode -> BooleanUtil.isTrue(conditionNode.getDefaultFlow())); + conditionNode -> BooleanUtil.isTrue(conditionNode.getConditionSetting().getDefaultFlow())); } Assert.isTrue(!matchConditionNodes.isEmpty(), "找不到条件节点({})", currentNode); // 遍历满足条件的 BpmSimpleModelNodeVO 节点