From 50980a45a12fe7843c10c9e56edf17849d6b5b69 Mon Sep 17 00:00:00 2001 From: bryan31 Date: Tue, 9 Nov 2021 22:14:40 +0800 Subject: [PATCH] =?UTF-8?q?feature=20#I4GS03=20=E5=B9=B6=E8=A1=8C=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E4=B8=AD=E6=94=AF=E6=8C=81=E4=BB=BB=E6=84=8F=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E7=BB=93=E6=9D=9F=E5=8D=B3=E7=BB=A7=E7=BB=AD=E7=9A=84?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../liteflow/entity/flow/Condition.java | 24 +++++++++++++++---- .../liteflow/entity/flow/ThenCondition.java | 3 --- .../liteflow/entity/flow/WhenCondition.java | 1 + .../liteflow/parser/JsonFlowParser.java | 6 +++++ .../liteflow/parser/XmlFlowParser.java | 6 +++++ 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Condition.java b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Condition.java index 1c3b58eeb..67733cc40 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Condition.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Condition.java @@ -16,15 +16,21 @@ import java.util.List; * @author Bryan.Zhang */ public class Condition { - // 增加errorResume属性,以区分当when调用链调用失败时是否继续往下执行 默认true继续执行 - private boolean errorResume = true; - // 增加groupId属性,用于不同node进行同组合并 - private String group = LocalDefaultFlowConstant.DEFAULT; - // condition 类型 参数:ConditionTypeEnum 包含:then when + + //condition 类型 参数:ConditionTypeEnum 包含:then when private String conditionType; private List nodeList; + //只在when类型下有效,以区分当when调用链调用失败时是否继续往下执行 默认true继续执行 + private boolean errorResume = true; + + //只在when类型下有效,用于不同node进行同组合并,相同的组会进行合并,不同的组不会进行合并 + private String group = LocalDefaultFlowConstant.DEFAULT; + + //只在when类型下有效,为true的话说明在多个并行节点下,任意一个成功,整个when就成功 + private boolean any = false; + public Condition(List nodeList) { this.nodeList = nodeList; } @@ -62,4 +68,12 @@ public class Condition { public void setConditionType(String conditionType) { this.conditionType = conditionType; } + + public boolean isAny() { + return any; + } + + public void setAny(boolean any) { + this.any = any; + } } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/ThenCondition.java b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/ThenCondition.java index 2ccd3cfbf..8eb1c9f22 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/ThenCondition.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/ThenCondition.java @@ -22,8 +22,5 @@ public class ThenCondition extends Condition { public ThenCondition(Condition condition){ super(condition.getNodeList()); super.setConditionType(condition.getConditionType()); - super.setGroup(condition.getGroup()); - super.setErrorResume(condition.isErrorResume()); } - } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/WhenCondition.java b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/WhenCondition.java index 2ce2615b4..8792bb9d6 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/WhenCondition.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/WhenCondition.java @@ -31,6 +31,7 @@ public class WhenCondition extends Condition{ super.setConditionType(condition.getConditionType()); super.setGroup(condition.getGroup()); super.setErrorResume(condition.isErrorResume()); + super.setAny(condition.isAny()); } } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/JsonFlowParser.java b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/JsonFlowParser.java index 56e3edd23..c0890c345 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/JsonFlowParser.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/JsonFlowParser.java @@ -135,6 +135,7 @@ public abstract class JsonFlowParser extends FlowParser { String group; String errorResume; Condition condition; + String any; String chainName = chainObject.getString("name"); JSONArray conditionArray = chainObject.getJSONArray("condition"); conditionList = new ArrayList<>(); @@ -144,6 +145,7 @@ public abstract class JsonFlowParser extends FlowParser { condArrayStr = condObject.getString("value"); group = condObject.getString("group"); errorResume = condObject.getString("errorResume"); + any = condObject.getString("any"); if (StrUtil.isBlank(condType) || StrUtil.isBlank(condArrayStr)) { continue; } @@ -153,6 +155,9 @@ public abstract class JsonFlowParser extends FlowParser { if (StrUtil.isBlank(errorResume)) { errorResume = Boolean.TRUE.toString(); } + if (StrUtil.isBlank(any)){ + any = Boolean.FALSE.toString(); + } condition = new Condition(); chainNodeList = new ArrayList<>(); condArray = condArrayStr.split(","); @@ -191,6 +196,7 @@ public abstract class JsonFlowParser extends FlowParser { } condition.setErrorResume(errorResume.equals(Boolean.TRUE.toString())); condition.setGroup(group); + condition.setAny(any.equals(Boolean.TRUE.toString())); condition.setConditionType(condType); condition.setNodeList(chainNodeList); super.buildBaseFlowConditions(conditionList, condition); diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/XmlFlowParser.java b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/XmlFlowParser.java index b08d7c634..d341a9862 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/parser/XmlFlowParser.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/parser/XmlFlowParser.java @@ -131,6 +131,7 @@ public abstract class XmlFlowParser extends FlowParser { String[] condArray; String group; String errorResume; + String any; Condition condition; Element condE; List chainNodeList; @@ -143,6 +144,7 @@ public abstract class XmlFlowParser extends FlowParser { condArrayStr = condE.attributeValue("value"); errorResume = condE.attributeValue("errorResume"); group = condE.attributeValue("group"); + any = condE.attributeValue("any"); if (StrUtil.isBlank(condArrayStr)) { continue; } @@ -152,6 +154,9 @@ public abstract class XmlFlowParser extends FlowParser { if (StrUtil.isBlank(errorResume)) { errorResume = Boolean.TRUE.toString(); } + if (StrUtil.isBlank(any)){ + any = Boolean.FALSE.toString(); + } condition = new Condition(); chainNodeList = new ArrayList<>(); condArray = condArrayStr.split(","); @@ -190,6 +195,7 @@ public abstract class XmlFlowParser extends FlowParser { } condition.setErrorResume(errorResume.equals(Boolean.TRUE.toString())); condition.setGroup(group); + condition.setAny(any.equals(Boolean.TRUE.toString())); condition.setConditionType(condE.getName()); condition.setNodeList(chainNodeList); super.buildBaseFlowConditions(conditionList, condition);