From 42495dbdcd388bf642fde86bd699efa98cbdf1fa Mon Sep 17 00:00:00 2001 From: zy <953725892@qq.com> Date: Wed, 5 Jul 2023 17:25:18 +0800 Subject: [PATCH] =?UTF-8?q?feature=20#I7HJFX=20=E5=B0=81=E8=A3=85ForCondit?= =?UTF-8?q?ion=EF=BC=8CIteratorCondition=EF=BC=8CWhileCondition=E4=B8=AD?= =?UTF-8?q?=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81=E5=88=B0LoopCondition?= =?UTF-8?q?=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flow/element/condition/ForCondition.java | 10 +--------- .../flow/element/condition/IteratorCondition.java | 10 +--------- .../flow/element/condition/LoopCondition.java | 15 +++++++++++++++ .../flow/element/condition/WhileCondition.java | 10 +--------- 4 files changed, 18 insertions(+), 27 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/ForCondition.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/ForCondition.java index 70142c85b..a04296a2c 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/ForCondition.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/ForCondition.java @@ -93,15 +93,7 @@ public class ForCondition extends LoopCondition { } } //等待所有的异步执行完毕 - CompletableFuture resultCompletableFuture = CompletableFuture.allOf(futureList.toArray(new CompletableFuture[]{})); - resultCompletableFuture.join(); - //获取所有的执行结果,如果有失败的,那么需要抛出异常 - for (CompletableFuture future : futureList) { - LoopFutureObj loopFutureObj = future.get(); - if (!loopFutureObj.isSuccess()) { - throw loopFutureObj.getEx(); - } - } + handleFutureList(futureList); } } finally { removeLoopIndex(executableItem); diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/IteratorCondition.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/IteratorCondition.java index a01edf4ac..8ebccb190 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/IteratorCondition.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/IteratorCondition.java @@ -99,15 +99,7 @@ public class IteratorCondition extends LoopCondition { index++; } //等待所有的异步执行完毕 - CompletableFuture resultCompletableFuture = CompletableFuture.allOf(futureList.toArray(new CompletableFuture[]{})); - resultCompletableFuture.join(); - //获取所有的执行结果,如果有失败的,那么需要抛出异常 - for (CompletableFuture future : futureList) { - LoopFutureObj loopFutureObj = future.get(); - if (!loopFutureObj.isSuccess()) { - throw loopFutureObj.getEx(); - } - } + handleFutureList(futureList); } } finally { removeLoopIndex(executableItem); diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/LoopCondition.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/LoopCondition.java index e04375b52..494d9a1ba 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/LoopCondition.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/LoopCondition.java @@ -6,6 +6,8 @@ import com.yomahub.liteflow.flow.element.Executable; import com.yomahub.liteflow.flow.element.Node; import com.yomahub.liteflow.flow.parallel.LoopFutureObj; +import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.function.Supplier; /** @@ -86,6 +88,19 @@ public abstract class LoopCondition extends Condition { this.parallel = parallel; } + //循环并行执行的futureList处理 + protected void handleFutureList(List> futureList)throws Exception{ + CompletableFuture resultCompletableFuture = CompletableFuture.allOf(futureList.toArray(new CompletableFuture[]{})); + resultCompletableFuture.join(); + //获取所有的执行结果,如果有失败的,那么需要抛出异常 + for (CompletableFuture future : futureList) { + LoopFutureObj loopFutureObj = future.get(); + if (!loopFutureObj.isSuccess()) { + throw loopFutureObj.getEx(); + } + } + } + // 循环并行执行的Supplier封装 public class LoopParallelSupplier implements Supplier { private final Executable executableItem; diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/WhileCondition.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/WhileCondition.java index b6aeffd3a..e616db763 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/WhileCondition.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/condition/WhileCondition.java @@ -77,15 +77,7 @@ public class WhileCondition extends LoopCondition { index++; } //等待所有的异步执行完毕 - CompletableFuture resultCompletableFuture = CompletableFuture.allOf(futureList.toArray(new CompletableFuture[]{})); - resultCompletableFuture.join(); - //获取所有的执行结果,如果有失败的,那么需要抛出异常 - for (CompletableFuture future : futureList) { - LoopFutureObj loopFutureObj = future.get(); - if (!loopFutureObj.isSuccess()) { - throw loopFutureObj.getEx(); - } - } + handleFutureList(futureList); } }