From f2c79431dc0d1e07a6147540683d0de785680b76 Mon Sep 17 00:00:00 2001 From: "everywhere.z" Date: Tue, 23 Aug 2022 23:09:26 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=8A=E4=B8=80=E4=BA=9B=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E4=BB=8E=E5=85=AC=E5=85=B1Condition=E7=A7=BB?= =?UTF-8?q?=E5=85=A5WhenCondition?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../builder/LiteFlowChainBuilder.java | 2 +- .../builder/LiteFlowWhenConditionBuilder.java | 15 ++++--- .../el/operator/IgnoreErrorOperator.java | 7 +-- .../flow/element/condition/Condition.java | 42 ----------------- .../flow/element/condition/WhenCondition.java | 45 +++++++++++++++++++ 5 files changed, 60 insertions(+), 51 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/LiteFlowChainBuilder.java b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/LiteFlowChainBuilder.java index f0dbc4d5b..4195d3239 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/LiteFlowChainBuilder.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/LiteFlowChainBuilder.java @@ -106,7 +106,7 @@ public class LiteFlowChainBuilder { } else if (condition.getConditionType().equals(ConditionTypeEnum.TYPE_WHEN)) { if (this.conditionList.size() >= 1 && CollectionUtil.getLast(this.conditionList) instanceof WhenCondition && - CollectionUtil.getLast(this.conditionList).getGroup().equals(condition.getGroup())) { + ((WhenCondition)CollectionUtil.getLast(this.conditionList)).getGroup().equals(((WhenCondition)condition).getGroup())) { CollectionUtil.getLast(this.conditionList).getExecutableList().addAll(condition.getExecutableList()); } else { this.conditionList.add(condition); diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/LiteFlowWhenConditionBuilder.java b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/LiteFlowWhenConditionBuilder.java index c1215c150..aaaff7c87 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/LiteFlowWhenConditionBuilder.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/LiteFlowWhenConditionBuilder.java @@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.common.LocalDefaultFlowConstant; import com.yomahub.liteflow.enums.ConditionTypeEnum; import com.yomahub.liteflow.flow.element.condition.Condition; +import com.yomahub.liteflow.flow.element.condition.WhenCondition; /** * WhenCondition基于代码形式的组装器 @@ -18,7 +19,8 @@ public class LiteFlowWhenConditionBuilder extends LiteFlowConditionBuilder{ } public LiteFlowWhenConditionBuilder setErrorResume(boolean errorResume){ - this.condition.setErrorResume(errorResume); + WhenCondition whenCondition = (WhenCondition) this.condition; + whenCondition.setErrorResume(errorResume); return this; } @@ -30,16 +32,18 @@ public class LiteFlowWhenConditionBuilder extends LiteFlowConditionBuilder{ } public LiteFlowWhenConditionBuilder setGroup(String group){ + WhenCondition whenCondition = (WhenCondition) this.condition; if (StrUtil.isBlank(group)){ - this.condition.setGroup(LocalDefaultFlowConstant.DEFAULT); + whenCondition.setGroup(LocalDefaultFlowConstant.DEFAULT); }else{ - this.condition.setGroup(group); + whenCondition.setGroup(group); } return this; } public LiteFlowWhenConditionBuilder setAny(boolean any){ - this.condition.setAny(any); + WhenCondition whenCondition = (WhenCondition) this.condition; + whenCondition.setAny(any); return this; } @@ -52,10 +56,11 @@ public class LiteFlowWhenConditionBuilder extends LiteFlowConditionBuilder{ public LiteFlowWhenConditionBuilder setThreadExecutorClass(String executorServiceName){ + WhenCondition whenCondition = (WhenCondition) this.condition; if (StrUtil.isBlank(executorServiceName)) { return this; } - this.condition.setThreadExecutorClass(executorServiceName); + whenCondition.setThreadExecutorClass(executorServiceName); return this; } } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/IgnoreErrorOperator.java b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/IgnoreErrorOperator.java index d5fbedfc1..ca87f384e 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/IgnoreErrorOperator.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/IgnoreErrorOperator.java @@ -5,6 +5,7 @@ import com.ql.util.express.Operator; import com.yomahub.liteflow.exception.ELParseException; import com.yomahub.liteflow.flow.element.Executable; import com.yomahub.liteflow.flow.element.condition.Condition; +import com.yomahub.liteflow.flow.element.condition.WhenCondition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,9 +30,9 @@ public class IgnoreErrorOperator extends Operator { throw new Exception(); } - Condition condition; - if (objects[0] instanceof Condition){ - condition = (Condition) objects[0]; + WhenCondition condition; + if (objects[0] instanceof WhenCondition){ + condition = (WhenCondition) objects[0]; }else{ LOG.error("The caller must be executable item!"); throw new Exception(); diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/Condition.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/Condition.java index 8988f8bc4..62c180b3e 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/Condition.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/Condition.java @@ -26,17 +26,7 @@ public abstract class Condition implements Executable{ //可执行元素的集合 private List executableList = new ArrayList<>(); - //只在when类型下有效,以区分当when调用链调用失败时是否继续往下执行 默认false不继续执行 - private boolean errorResume = false; - //只在when类型下有效,用于不同node进行同组合并,相同的组会进行合并,不同的组不会进行合并 - private String group = LocalDefaultFlowConstant.DEFAULT; - - //只在when类型下有效,为true的话说明在多个并行节点下,任意一个成功,整个when就成功 - private boolean any = false; - - // when单独的线程池名称 - private String threadExecutorClass; //当前所在的ChainName //如果对于子流程来说,那这个就是子流程所在的Chain @@ -64,40 +54,8 @@ public abstract class Condition implements Executable{ this.executableList.add(executable); } - public boolean isErrorResume() { - return errorResume; - } - - public void setErrorResume(boolean errorResume) { - this.errorResume = errorResume; - } - - public String getGroup() { - return group; - } - - public void setGroup(String group) { - this.group = group; - } - public abstract ConditionTypeEnum getConditionType(); - public boolean isAny() { - return any; - } - - public void setAny(boolean any) { - this.any = any; - } - - public String getThreadExecutorClass() { - return threadExecutorClass; - } - - public void setThreadExecutorClass(String threadExecutorClass) { - this.threadExecutorClass = threadExecutorClass; - } - public String getId() { return id; } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/WhenCondition.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/WhenCondition.java index 1b65c8df5..95ec93189 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/WhenCondition.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/WhenCondition.java @@ -8,6 +8,7 @@ package com.yomahub.liteflow.flow.element.condition; import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.common.LocalDefaultFlowConstant; import com.yomahub.liteflow.enums.ConditionTypeEnum; import com.yomahub.liteflow.exception.WhenExecuteException; import com.yomahub.liteflow.flow.parallel.CompletableFutureTimeout; @@ -35,6 +36,18 @@ public class WhenCondition extends Condition { private final Logger LOG = LoggerFactory.getLogger(this.getClass()); + //只在when类型下有效,以区分当when调用链调用失败时是否继续往下执行 默认false不继续执行 + private boolean errorResume = false; + + //只在when类型下有效,用于不同node进行同组合并,相同的组会进行合并,不同的组不会进行合并 + private String group = LocalDefaultFlowConstant.DEFAULT; + + //只在when类型下有效,为true的话说明在多个并行节点下,任意一个成功,整个when就成功 + private boolean any = false; + + // when单独的线程池名称 + private String threadExecutorClass; + @Override public void execute(Integer slotIndex) throws Exception { @@ -154,4 +167,36 @@ public class WhenCondition extends Condition { LOG.warn("requestId [{}] executing when condition timeout , but ignore with errorResume.", slot.getRequestId()); } } + + public boolean isErrorResume() { + return errorResume; + } + + public void setErrorResume(boolean errorResume) { + this.errorResume = errorResume; + } + + public String getGroup() { + return group; + } + + public void setGroup(String group) { + this.group = group; + } + + public boolean isAny() { + return any; + } + + public void setAny(boolean any) { + this.any = any; + } + + public String getThreadExecutorClass() { + return threadExecutorClass; + } + + public void setThreadExecutorClass(String threadExecutorClass) { + this.threadExecutorClass = threadExecutorClass; + } }