From 85a4d5243b3a88c2b19ce0474578bf72692b0939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E5=8D=8E=E9=94=8B?= <799954772@qq.com> Date: Thu, 2 Nov 2023 12:55:22 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E3=80=90feature=E3=80=91https://gitee.com/?= =?UTF-8?q?dromara/liteFlow/issues/I8B0MI=20=E5=85=B3=E4=BA=8E=E6=AD=A4=20?= =?UTF-8?q?issue=20=E4=B8=AD=E7=9A=84=E5=B9=B6=E8=A1=8C=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E4=BC=98=E5=8C=96=EF=BC=8C=E5=B9=B6=E8=A1=8C?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E4=BD=BF=E7=94=A8=E3=80=90=E3=80=91=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=8C=85=E8=A3=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../liteflow/enums/CmpStepTypeEnum.java | 3 +- .../flow/element/condition/WhenCondition.java | 8 ++++- .../java/com/yomahub/liteflow/slot/Slot.java | 32 +++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/enums/CmpStepTypeEnum.java b/liteflow-core/src/main/java/com/yomahub/liteflow/enums/CmpStepTypeEnum.java index f01a4f189..474ec8429 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/enums/CmpStepTypeEnum.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/enums/CmpStepTypeEnum.java @@ -1,6 +1,7 @@ /** *

Title: liteflow

*

Description: 轻量级的组件式流程框架

+ * * @author Bryan.Zhang * @email weenyc31@163.com * @Date 2020/4/1 @@ -14,6 +15,6 @@ package com.yomahub.liteflow.enums; */ public enum CmpStepTypeEnum { - START, END, SINGLE; + START, END, SINGLE, THEN_START, THEN_END; } 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 15eb31cbd..3736be2d7 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,13 +8,17 @@ package com.yomahub.liteflow.flow.element.condition; import com.yomahub.liteflow.common.LocalDefaultFlowConstant; +import com.yomahub.liteflow.enums.CmpStepTypeEnum; import com.yomahub.liteflow.enums.ConditionTypeEnum; import com.yomahub.liteflow.enums.ParallelStrategyEnum; import com.yomahub.liteflow.flow.element.Condition; +import com.yomahub.liteflow.flow.entity.CmpStep; import com.yomahub.liteflow.flow.parallel.strategy.ParallelStrategyExecutor; import com.yomahub.liteflow.flow.parallel.strategy.ParallelStrategyHelper; import com.yomahub.liteflow.log.LFLog; import com.yomahub.liteflow.log.LFLoggerManager; +import com.yomahub.liteflow.slot.DataBus; +import com.yomahub.liteflow.slot.Slot; import com.yomahub.liteflow.thread.ExecutorHelper; import java.util.Set; @@ -64,13 +68,15 @@ public class WhenCondition extends Condition { // 使用线程池执行 when 并发流程 // 这块涉及到挺多的多线程逻辑,所以注释比较详细,看到这里的童鞋可以仔细阅读 private void executeAsyncCondition(Integer slotIndex) throws Exception { - + Slot slot = DataBus.getSlot(slotIndex); + slot.addStep(new CmpStep("-1", "-1", CmpStepTypeEnum.THEN_START)); // 获取并发执行策略 ParallelStrategyExecutor parallelStrategyExecutor = ParallelStrategyHelper.loadInstance().buildParallelExecutor(this.getParallelStrategy()); // 执行并发逻辑 parallelStrategyExecutor.execute(this, slotIndex); + slot.addStep(new CmpStep("-1", "-1", CmpStepTypeEnum.THEN_END)); } public boolean isIgnoreError() { diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java index 8bd133c14..f2b730567 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java @@ -1,6 +1,7 @@ /** *

Title: liteflow

*

Description: 轻量级的组件式流程框架

+ * * @author Bryan.Zhang * @email weenyc31@163.com * @Date 2020/4/1 @@ -11,6 +12,7 @@ import cn.hutool.core.collection.ConcurrentHashSet; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.enums.CmpStepTypeEnum; import com.yomahub.liteflow.exception.NoSuchContextBeanException; import com.yomahub.liteflow.exception.NullParamException; import com.yomahub.liteflow.flow.element.Condition; @@ -340,6 +342,21 @@ public class Slot { CmpStep cmpStep; for (Iterator it = executeSteps.iterator(); it.hasNext();) { cmpStep = it.next(); + if (CmpStepTypeEnum.THEN_START.equals(cmpStep.getStepType())) { + str.append("【"); + continue; + } + if (CmpStepTypeEnum.THEN_END.equals(cmpStep.getStepType())) { + // 如果最后一个是==>则移除最后一个==> + if (str.toString().endsWith("==>")) { + str.delete(str.length() - 3, str.length()); + } + str.append("】"); + if (it.hasNext()) { + str.append("==>"); + } + continue; + } if (withTimeSpent) { str.append(cmpStep.buildStringWithTime()); } @@ -376,6 +393,21 @@ public class Slot { CmpStep cmpStep; for (Iterator it = rollbackSteps.iterator(); it.hasNext();) { cmpStep = it.next(); + if (CmpStepTypeEnum.THEN_START.equals(cmpStep.getStepType())) { + str.append("【"); + continue; + } + if (CmpStepTypeEnum.THEN_END.equals(cmpStep.getStepType())) { + // 如果最后一个是==>则移除最后一个==> + if (str.toString().endsWith("==>")) { + str.delete(str.length() - 3, str.length()); + } + str.append("】"); + if (it.hasNext()) { + str.append("==>"); + } + continue; + } if (withRollbackTimeSpent) { str.append(cmpStep.buildRollbackStringWithTime()); } -- Gitee From ae97426ef339fec0e36ec7e823c2dd53718367d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E5=8D=8E=E9=94=8B?= <799954772@qq.com> Date: Fri, 3 Nov 2023 11:24:48 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E3=80=90fix=E3=80=91THEN=5FSTART,THEN=5FEN?= =?UTF-8?q?D=E5=91=BD=E5=90=8D=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/yomahub/liteflow/slot/Slot.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java index f2b730567..6b8787204 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java @@ -342,11 +342,11 @@ public class Slot { CmpStep cmpStep; for (Iterator it = executeSteps.iterator(); it.hasNext();) { cmpStep = it.next(); - if (CmpStepTypeEnum.THEN_START.equals(cmpStep.getStepType())) { + if (CmpStepTypeEnum.WHEN_START.equals(cmpStep.getStepType())) { str.append("【"); continue; } - if (CmpStepTypeEnum.THEN_END.equals(cmpStep.getStepType())) { + if (CmpStepTypeEnum.WHEN_END.equals(cmpStep.getStepType())) { // 如果最后一个是==>则移除最后一个==> if (str.toString().endsWith("==>")) { str.delete(str.length() - 3, str.length()); @@ -393,11 +393,11 @@ public class Slot { CmpStep cmpStep; for (Iterator it = rollbackSteps.iterator(); it.hasNext();) { cmpStep = it.next(); - if (CmpStepTypeEnum.THEN_START.equals(cmpStep.getStepType())) { + if (CmpStepTypeEnum.WHEN_START.equals(cmpStep.getStepType())) { str.append("【"); continue; } - if (CmpStepTypeEnum.THEN_END.equals(cmpStep.getStepType())) { + if (CmpStepTypeEnum.WHEN_END.equals(cmpStep.getStepType())) { // 如果最后一个是==>则移除最后一个==> if (str.toString().endsWith("==>")) { str.delete(str.length() - 3, str.length()); -- Gitee From 414c2fc6c3380a451ae3527da831f887dacbb789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E5=8D=8E=E9=94=8B?= <799954772@qq.com> Date: Fri, 3 Nov 2023 11:28:59 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E3=80=90fix=E3=80=91THEN=5FSTART,THEN=5FEN?= =?UTF-8?q?D=E5=91=BD=E5=90=8D=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../liteflow/flow/element/condition/WhenCondition.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 3736be2d7..9312ea709 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 @@ -69,14 +69,14 @@ public class WhenCondition extends Condition { // 这块涉及到挺多的多线程逻辑,所以注释比较详细,看到这里的童鞋可以仔细阅读 private void executeAsyncCondition(Integer slotIndex) throws Exception { Slot slot = DataBus.getSlot(slotIndex); - slot.addStep(new CmpStep("-1", "-1", CmpStepTypeEnum.THEN_START)); + slot.addStep(new CmpStep("-1", "-1", CmpStepTypeEnum.WHEN_START)); // 获取并发执行策略 ParallelStrategyExecutor parallelStrategyExecutor = ParallelStrategyHelper.loadInstance().buildParallelExecutor(this.getParallelStrategy()); // 执行并发逻辑 parallelStrategyExecutor.execute(this, slotIndex); - slot.addStep(new CmpStep("-1", "-1", CmpStepTypeEnum.THEN_END)); + slot.addStep(new CmpStep("-1", "-1", CmpStepTypeEnum.WHEN_END)); } public boolean isIgnoreError() { -- Gitee From 2f8973fd1537c5274a48bc4a4adb8857905b240d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E5=8D=8E=E9=94=8B?= <799954772@qq.com> Date: Fri, 3 Nov 2023 12:29:03 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E3=80=90fix=E3=80=91=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E5=AF=BC=E8=87=B4=E7=9A=84=E6=8B=AC=E5=8F=B7?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E7=BB=93=E5=B0=BE=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flow/element/condition/WhenCondition.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 9312ea709..e38dbac83 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 @@ -72,11 +72,12 @@ public class WhenCondition extends Condition { slot.addStep(new CmpStep("-1", "-1", CmpStepTypeEnum.WHEN_START)); // 获取并发执行策略 ParallelStrategyExecutor parallelStrategyExecutor = ParallelStrategyHelper.loadInstance().buildParallelExecutor(this.getParallelStrategy()); - - // 执行并发逻辑 - parallelStrategyExecutor.execute(this, slotIndex); - - slot.addStep(new CmpStep("-1", "-1", CmpStepTypeEnum.WHEN_END)); + try { + // 执行并发逻辑 + parallelStrategyExecutor.execute(this, slotIndex); + } finally { + slot.addStep(new CmpStep("-1", "-1", CmpStepTypeEnum.WHEN_END)); + } } public boolean isIgnoreError() { -- Gitee From 412b8a81fe67d76bd71fce5703be003c98bf8a2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9F=A9=E5=8D=8E=E9=94=8B?= <799954772@qq.com> Date: Wed, 22 Nov 2023 11:34:46 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E3=80=90fix=E3=80=91THEN=5FSTART,THEN=5FEN?= =?UTF-8?q?D=E5=91=BD=E5=90=8D=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/yomahub/liteflow/enums/CmpStepTypeEnum.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/enums/CmpStepTypeEnum.java b/liteflow-core/src/main/java/com/yomahub/liteflow/enums/CmpStepTypeEnum.java index 474ec8429..c8c6137ff 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/enums/CmpStepTypeEnum.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/enums/CmpStepTypeEnum.java @@ -15,6 +15,6 @@ package com.yomahub.liteflow.enums; */ public enum CmpStepTypeEnum { - START, END, SINGLE, THEN_START, THEN_END; + START, END, SINGLE, WHEN_START, WHEN_END; } -- Gitee