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);