From ce3600ded7760518e0eb5c8391cfebcb17fd164e Mon Sep 17 00:00:00 2001 From: noear Date: Mon, 19 Dec 2022 11:05:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90=20liteflow?= =?UTF-8?q?-solon-plugin=20=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solon/integration/XPluginImpl.java | 40 ++++++++++++++----- .../spi/solon/SolonCmpAroundAspect.java | 2 +- ...SolonAware.java => SolonContextAware.java} | 2 +- .../spi/solon/SolonContextCmpInit.java | 11 ++++- .../solon/SolonLiteflowComponentSupport.java | 2 +- .../com.yomahub.liteflow.spi.ContextAware | 2 +- .../src/test/java/demo/TestApp.java | 2 + pom.xml | 2 +- 8 files changed, 48 insertions(+), 15 deletions(-) rename liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/{SolonAware.java => SolonContextAware.java} (96%) diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/integration/XPluginImpl.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/integration/XPluginImpl.java index 44eaa502f..676a2f6a3 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/integration/XPluginImpl.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/integration/XPluginImpl.java @@ -1,5 +1,6 @@ package com.yomahub.liteflow.solon.integration; +import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.core.NodeComponent; import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.solon.LiteflowProperty; @@ -8,6 +9,8 @@ import org.noear.solon.Utils; import org.noear.solon.core.AopContext; import org.noear.solon.core.Plugin; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; /** @@ -15,6 +18,9 @@ import java.util.Properties; * @since 2.9 */ public class XPluginImpl implements Plugin { + + public static Map nodeComponentMap = new HashMap<>(); + @Override public void start(AopContext context) { //加载默认配置 @@ -34,17 +40,33 @@ public class XPluginImpl implements Plugin { //订阅 NodeComponent 组件 context.subWrapsOfType(NodeComponent.class, bw -> { - NodeComponent node1 = bw.raw(); +// NodeComponent node1 = bw.raw(); +// +// if (Utils.isNotEmpty(bw.name())) { +// node1.setName(bw.name()); +// node1.setNodeId(bw.name()); +// } - if (Utils.isNotEmpty(bw.name())) { - node1.setName(bw.name()); - node1.setNodeId(bw.name()); - } - - FlowBus.addSpringScanNode(node1.getNodeId(), node1); + nodeComponentMap.put(bw.name(), bw.raw()); + //FlowBus.addSpringScanNode(bw.name(), bw.raw()); }); - //扫描内部相关组件 - context.beanScan(LiteflowProperty.class); + context.beanBuilderAdd(LiteflowComponent.class, (clz, bw, anno) -> { + if(NodeComponent.class.isAssignableFrom(clz)) { + NodeComponent node1 = bw.raw(); + String id1 = Utils.annoAlias(anno.id(), anno.value()); + String name1 =Utils.annoAlias(anno.name(), id1); + + node1.setNodeId(id1); + node1.setName(name1); + + FlowBus.addSpringScanNode(node1.getNodeId(), node1); + } + }); + + //扫描相关组件 + context.beanOnloaded((ctx)->{ + context.beanScan(LiteflowProperty.class); + }); } } diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonCmpAroundAspect.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonCmpAroundAspect.java index ee3571e21..5fdf92cb1 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonCmpAroundAspect.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonCmpAroundAspect.java @@ -15,7 +15,7 @@ public class SolonCmpAroundAspect implements CmpAroundAspect { public static ICmpAroundAspect cmpAroundAspect; static { - Solon.context().getBeanAsyn(ICmpAroundAspect.class, bean -> { + Solon.context().getBeanAsync(ICmpAroundAspect.class, bean -> { cmpAroundAspect = bean; }); } diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonAware.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextAware.java similarity index 96% rename from liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonAware.java rename to liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextAware.java index da685287a..350cb580c 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonAware.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextAware.java @@ -9,7 +9,7 @@ import org.noear.solon.core.BeanWrap; * 基于代码形式的 Solon 上下文工具类 * @author Bryan.Zhang */ -public class SolonAware implements ContextAware { +public class SolonContextAware implements ContextAware { @Override public T getBean(String name) { diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextCmpInit.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextCmpInit.java index 419204aad..d39b70dd7 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextCmpInit.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextCmpInit.java @@ -1,7 +1,12 @@ package com.yomahub.liteflow.spi.solon; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.solon.integration.XPluginImpl; import com.yomahub.liteflow.spi.ContextCmpInit; +import java.util.Map; + /** * Solon 环境容器上下文组件初始化实现 @@ -11,7 +16,11 @@ import com.yomahub.liteflow.spi.ContextCmpInit; public class SolonContextCmpInit implements ContextCmpInit { @Override public void initCmp() { - //todo: 转到 FlowBus.addSpringScanNode 不需要了 + for (Map.Entry componentEntry : XPluginImpl.nodeComponentMap.entrySet()) { + if (!FlowBus.containNode(componentEntry.getKey())) { + FlowBus.addSpringScanNode(componentEntry.getKey(), componentEntry.getValue()); + } + } } @Override diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonLiteflowComponentSupport.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonLiteflowComponentSupport.java index ce5bd32a2..92ac27a0b 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonLiteflowComponentSupport.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonLiteflowComponentSupport.java @@ -19,7 +19,7 @@ public class SolonLiteflowComponentSupport implements LiteflowComponentSupport { if (ObjectUtil.isNotNull(liteflowComponent)) { return liteflowComponent.name(); }else{ - return null; + return nodeComponent.getNodeId(); } } diff --git a/liteflow-solon-plugin/src/main/resources/META-INF/services/com.yomahub.liteflow.spi.ContextAware b/liteflow-solon-plugin/src/main/resources/META-INF/services/com.yomahub.liteflow.spi.ContextAware index 29a2157ba..422f9870f 100644 --- a/liteflow-solon-plugin/src/main/resources/META-INF/services/com.yomahub.liteflow.spi.ContextAware +++ b/liteflow-solon-plugin/src/main/resources/META-INF/services/com.yomahub.liteflow.spi.ContextAware @@ -1,2 +1,2 @@ # Spring 的实现 -com.yomahub.liteflow.spi.solon.SolonAware \ No newline at end of file +com.yomahub.liteflow.spi.solon.SolonContextAware \ No newline at end of file diff --git a/liteflow-solon-plugin/src/test/java/demo/TestApp.java b/liteflow-solon-plugin/src/test/java/demo/TestApp.java index 55e926345..8cba950e8 100644 --- a/liteflow-solon-plugin/src/test/java/demo/TestApp.java +++ b/liteflow-solon-plugin/src/test/java/demo/TestApp.java @@ -24,5 +24,7 @@ public class TestApp { public void test() throws Exception{ LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg"); System.out.println(ONode.stringify(response)); + + assert response.isSuccess(); } } diff --git a/pom.xml b/pom.xml index d712efb68..4c1926b2a 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ 1.11.13 1.8.13 1.2.3 - 1.10.6 + 1.11.5