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