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