From 273a408d158ee0f729b68e963a893d43fe46b7b2 Mon Sep 17 00:00:00 2001 From: sikadai <466608943@qq.com> Date: Mon, 14 Feb 2022 15:34:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/core/FlowExecutor.java | 24 +++++-------------- .../yomahub/liteflow/entity/flow/Chain.java | 17 +++++++++++-- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java b/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java index 03cbe1a08..90405b966 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java @@ -13,24 +13,21 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; import com.google.common.collect.Lists; +import com.yomahub.liteflow.entity.data.DataBus; +import com.yomahub.liteflow.entity.data.DefaultSlot; +import com.yomahub.liteflow.entity.data.LiteflowResponse; +import com.yomahub.liteflow.entity.data.Slot; +import com.yomahub.liteflow.entity.flow.Chain; import com.yomahub.liteflow.entity.flow.Node; import com.yomahub.liteflow.enums.FlowParserTypeEnum; import com.yomahub.liteflow.exception.*; +import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.parser.*; import com.yomahub.liteflow.property.LiteflowConfig; import com.yomahub.liteflow.util.SpringAware; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.yomahub.liteflow.entity.flow.Chain; -import com.yomahub.liteflow.entity.data.DataBus; -import com.yomahub.liteflow.entity.data.DefaultSlot; -import com.yomahub.liteflow.entity.data.LiteflowResponse; -import com.yomahub.liteflow.entity.data.Slot; -import com.yomahub.liteflow.flow.FlowBus; -import com.yomahub.liteflow.parser.LocalXmlFlowParser; -import com.yomahub.liteflow.parser.XmlFlowParser; -import com.yomahub.liteflow.parser.ZookeeperXmlFlowParser; import java.util.ArrayList; import java.util.HashSet; import java.util.List; @@ -384,15 +381,6 @@ public class FlowExecutor { } slot.setException(e); } finally { - try{ - if (ObjectUtil.isNotNull(chain)){ - chain.executeFinally(slotIndex); - } - }catch (Exception e){ - String errMsg = StrUtil.format("[{}]:an exception occurred during the finally Component execution in chain[{}]", slot.getRequestId(), chain.getChainName()); - LOG.error(errMsg, e); - } - if (!isInnerChain) { slot.printStep(); DataBus.releaseSlot(slotIndex); diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Chain.java b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Chain.java index b30c5f549..c351945d4 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Chain.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Chain.java @@ -24,8 +24,13 @@ import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.thread.ExecutorHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.*; -import java.util.concurrent.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -74,7 +79,15 @@ public class Chain implements Executable { if (CollUtil.isEmpty(conditionList)) { throw new FlowSystemException("no conditionList in this chain[" + chainName + "]"); } + try { + executeBody(slotIndex); + } finally { + executeFinally(slotIndex); + } + } + // 执行主体的逻辑 + private void executeBody(Integer slotIndex) throws Exception { //循环chain里包含的condition,每一个condition分四种类型:pre,then,when,finally //这里conditionList其实已经是有序的,pre一定在最前面,finally一定在最后面 for (Condition condition : conditionList) {