From 674bf39ae731961e412c2b441025262cc1c69500 Mon Sep 17 00:00:00 2001 From: "bryan.zhang" Date: Tue, 12 Mar 2019 19:28:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81springboot2.x=E7=89=88?= =?UTF-8?q?=E6=9C=AC=EF=BC=8C=E9=A1=B9=E7=9B=AE=E8=B7=AF=E5=BE=84=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _config.yml | 1 - deploy.bat | 1 - liteflow-test/pom.xml | 49 +++++++ .../flowtest/FlowtestApplication.java | 16 +++ .../com/thebeastshop/flowtest/TestFlow.java | 21 +++ .../flowtest/components/AComponent.java | 27 ++++ .../flowtest/components/BComponent.java | 30 ++++ .../flowtest/components/CComponent.java | 30 ++++ .../flowtest/components/CondComponent.java | 22 +++ .../flowtest/components/DComponent.java | 38 +++++ .../flowtest/components/EComponent.java | 31 +++++ .../flowtest/components/FComponent.java | 30 ++++ .../flowtest/components/GComponent.java | 24 ++++ .../flowtest/components/HComponent.java | 31 +++++ .../flowtest/components/M1Component.java | 29 ++++ .../flowtest/components/M2Component.java | 29 ++++ .../flowtest/components/M3Component.java | 31 +++++ .../flowtest/components/MComponent.java | 39 ++++++ .../flowtest/components/P1Component.java | 29 ++++ .../flowtest/components/P2Component.java | 29 ++++ .../flowtest/components/PComponent.java | 37 +++++ .../flowtest/curator/CuratorTest.java | 131 ++++++++++++++++++ .../flowtest/curator/CuratorTest2.java | 117 ++++++++++++++++ .../flowtest/regex/RegexTest.java | 23 +++ .../src/main/resources/application.properties | 1 + .../src/main/resources/config/flow.xml | 38 +++++ .../flowtest/FlowtestApplicationTests.java | 16 +++ pom.xml => liteflow/pom.xml | 37 +++-- .../liteflow/core/FlowExecutor.java | 0 .../liteflow/core/NodeComponent.java | 0 .../liteflow/core/NodeCondComponent.java | 0 .../liteflow/entity/config/Chain.java | 0 .../liteflow/entity/config/Condition.java | 0 .../liteflow/entity/config/Node.java | 0 .../liteflow/entity/config/ThenCondition.java | 0 .../liteflow/entity/config/WhenCondition.java | 0 .../liteflow/entity/data/AbsSlot.java | 0 .../liteflow/entity/data/CmpStep.java | 0 .../liteflow/entity/data/CmpStepType.java | 0 .../liteflow/entity/data/DataBus.java | 0 .../liteflow/entity/data/DefaultSlot.java | 0 .../liteflow/entity/data/Slot.java | 0 .../entity/monitor/CompStatistics.java | 0 .../exception/ChainNotFoundException.java | 0 .../ComponentNotAccessException.java | 0 .../FlowExecutorNotInitException.java | 0 .../exception/FlowSystemException.java | 0 .../exception/NoAvailableSlotException.java | 0 .../liteflow/exception/ParseException.java | 0 .../thebeastshop/liteflow/flow/FlowBus.java | 18 +-- .../liteflow/monitor/MonitorBus.java | 0 .../liteflow/parser/ClassXmlFlowParser.java | 0 .../liteflow/parser/LocalXmlFlowParser.java | 0 .../liteflow/parser/RegexEntity.java | 0 .../liteflow/parser/XmlFlowParser.java | 12 +- .../parser/ZookeeperXmlFlowParser.java | 0 .../liteflow/spring/ComponentScaner.java | 0 .../spring/FlowContextInitializer.java | 39 ++++++ .../liteflow/util/Dom4JReader.java | 0 .../thebeastshop/liteflow/util/IOUtil.java | 0 .../liteflow/util/LOGOPrinter.java | 0 .../liteflow/util/LimitQueue.java | 0 .../main/resources/META-INF/spring.factories | 2 + .../liteflow/test/TestCustomParser.java | 0 .../thebeastshop/liteflow/test/TestMain.java | 0 .../liteflow/test/TestWithSpringMain.java | 0 .../liteflow/test/component/AComponent.java | 0 .../liteflow/test/component/BComponent.java | 0 .../liteflow/test/component/CComponent.java | 0 .../test/component/CondComponent.java | 0 .../liteflow/test/component/DComponent.java | 0 .../liteflow/test/component/EComponent.java | 0 .../liteflow/test/component/FComponent.java | 0 .../liteflow/test/component/GComponent.java | 0 .../liteflow/test/component/HComponent.java | 0 .../liteflow/test/component/M1Component.java | 0 .../liteflow/test/component/M2Component.java | 0 .../liteflow/test/component/M3Component.java | 0 .../liteflow/test/component/MComponent.java | 0 .../liteflow/test/component/P1Component.java | 0 .../liteflow/test/component/P2Component.java | 0 .../liteflow/test/component/PComponent.java | 0 .../liteflow/test/curator/CuratorTest.java | 0 .../liteflow/test/curator/CuratorTest2.java | 0 .../liteflow/test/regex/RegexTest.java | 0 .../src}/test/resources/config/flow.xml | 0 .../src}/test/resources/log4j.xml | 0 .../src}/test/resources/spring-test.xml | 0 88 files changed, 979 insertions(+), 29 deletions(-) delete mode 100644 _config.yml delete mode 100644 deploy.bat create mode 100644 liteflow-test/pom.xml create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/FlowtestApplication.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/TestFlow.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/AComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/BComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/CComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/CondComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/DComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/EComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/FComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/GComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/HComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M1Component.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M2Component.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M3Component.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/MComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/P1Component.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/P2Component.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/components/PComponent.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/curator/CuratorTest.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/curator/CuratorTest2.java create mode 100644 liteflow-test/src/main/java/com/thebeastshop/flowtest/regex/RegexTest.java create mode 100644 liteflow-test/src/main/resources/application.properties create mode 100644 liteflow-test/src/main/resources/config/flow.xml create mode 100644 liteflow-test/src/test/java/com/thebeastshop/flowtest/FlowtestApplicationTests.java rename pom.xml => liteflow/pom.xml (84%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/core/FlowExecutor.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/core/NodeComponent.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/core/NodeCondComponent.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/config/Chain.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/config/Condition.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/config/Node.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/config/ThenCondition.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/config/WhenCondition.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/data/AbsSlot.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/data/CmpStep.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/data/CmpStepType.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/data/DataBus.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/data/DefaultSlot.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/data/Slot.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/entity/monitor/CompStatistics.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/exception/ChainNotFoundException.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/exception/ComponentNotAccessException.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/exception/FlowExecutorNotInitException.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/exception/FlowSystemException.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/exception/NoAvailableSlotException.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/exception/ParseException.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/flow/FlowBus.java (92%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/monitor/MonitorBus.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/parser/ClassXmlFlowParser.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/parser/LocalXmlFlowParser.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/parser/RegexEntity.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/parser/XmlFlowParser.java (97%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/parser/ZookeeperXmlFlowParser.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/spring/ComponentScaner.java (100%) create mode 100644 liteflow/src/main/java/com/thebeastshop/liteflow/spring/FlowContextInitializer.java rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/util/Dom4JReader.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/util/IOUtil.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/util/LOGOPrinter.java (100%) rename {src => liteflow/src}/main/java/com/thebeastshop/liteflow/util/LimitQueue.java (100%) create mode 100644 liteflow/src/main/resources/META-INF/spring.factories rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/TestCustomParser.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/TestMain.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/TestWithSpringMain.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/AComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/BComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/CComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/CondComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/DComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/EComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/FComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/GComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/HComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/M1Component.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/M2Component.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/M3Component.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/MComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/P1Component.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/P2Component.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/component/PComponent.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/curator/CuratorTest.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/curator/CuratorTest2.java (100%) rename {src => liteflow/src}/test/java/com/thebeastshop/liteflow/test/regex/RegexTest.java (100%) rename {src => liteflow/src}/test/resources/config/flow.xml (100%) rename {src => liteflow/src}/test/resources/log4j.xml (100%) rename {src => liteflow/src}/test/resources/spring-test.xml (100%) diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c4192631..00000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file diff --git a/deploy.bat b/deploy.bat deleted file mode 100644 index c382c102..00000000 --- a/deploy.bat +++ /dev/null @@ -1 +0,0 @@ -mvn clean install deploy \ No newline at end of file diff --git a/liteflow-test/pom.xml b/liteflow-test/pom.xml new file mode 100644 index 00000000..302b6745 --- /dev/null +++ b/liteflow-test/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.0.5.RELEASE + + + com.thebeastshop + flowtest + 1.0.0 + flowtest + Demo project for Spring Boot + + + 1.8 + + + + + org.springframework.boot + spring-boot-starter + + + + com.thebeastshop + liteflow + 2.1.0 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/FlowtestApplication.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/FlowtestApplication.java new file mode 100644 index 00000000..e2d0755a --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/FlowtestApplication.java @@ -0,0 +1,16 @@ +package com.thebeastshop.flowtest; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class FlowtestApplication { + + public static void main(String[] args) { + try{ + SpringApplication.run(FlowtestApplication.class, args); + }catch (Throwable t){ + t.printStackTrace(); + } + } +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/TestFlow.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/TestFlow.java new file mode 100644 index 00000000..88851b29 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/TestFlow.java @@ -0,0 +1,21 @@ +package com.thebeastshop.flowtest; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.entity.data.Slot; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class TestFlow implements CommandLineRunner { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void run(String... args) throws Exception { + Slot slot = flowExecutor.execute("chain1", "it's a request"); + System.out.println(slot); + } +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/AComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/AComponent.java new file mode 100644 index 00000000..1f04db03 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/AComponent.java @@ -0,0 +1,27 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +@Component("a") +public class AComponent extends NodeComponent { + + @Override + public void process() { + String str = this.getSlot().getRequestData(); + System.out.println(str); + System.out.println("Acomponent executed!"); + + this.getSlot().setOutput(this.getNodeId(), "A component output"); + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/BComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/BComponent.java new file mode 100644 index 00000000..8b70dba6 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/BComponent.java @@ -0,0 +1,30 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +@Component("b") +public class BComponent extends NodeComponent { + + @Override + public void process() { + try { + Thread.sleep(400L); + String[] temp = new String[1000]; + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("Bcomponent executed!"); + + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/CComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/CComponent.java new file mode 100644 index 00000000..0d52e06b --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/CComponent.java @@ -0,0 +1,30 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +@Component("c") +public class CComponent extends NodeComponent { + + @Override + public void process() { + try { + String[] temp = new String[4000]; + Thread.sleep(300L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("Ccomponent executed!"); + + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/CondComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/CondComponent.java new file mode 100644 index 00000000..d7819b32 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/CondComponent.java @@ -0,0 +1,22 @@ +/** + *

Title: litis

+ *

Description: redis的全方位开发运维平台

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email 47483522@qq.com + * @Date 2017-11-28 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.NodeComponent; +import com.thebeastshop.liteflow.core.NodeCondComponent; +import org.springframework.stereotype.Component; + +@Component("cond") +public class CondComponent extends NodeCondComponent { + + @Override + protected Class processCond() throws Exception { + return BComponent.class; + } +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/DComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/DComponent.java new file mode 100644 index 00000000..13e131a0 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/DComponent.java @@ -0,0 +1,38 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.NodeComponent; +import com.thebeastshop.liteflow.entity.data.Slot; +import org.springframework.stereotype.Component; + +@Component("d") +public class DComponent extends NodeComponent { + + @Override + public void process() { + try { + Slot slot = this.getSlot(); + String e = slot.getOutput("e"); + if(e == null){ + System.out.println(slot); + } + System.out.println("D:" + slot.getOutput("e")); + + String[] temp = new String[1400]; + Thread.sleep(450L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("Dcomponent executed!"); + + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/EComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/EComponent.java new file mode 100644 index 00000000..c56f0c69 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/EComponent.java @@ -0,0 +1,31 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +@Component("e") +public class EComponent extends NodeComponent { + + @Override + public void process() { + try { + Thread.sleep(120L); + System.out.println("E:" + this.getSlot().getOutput("a")); + this.getSlot().setOutput(this.getNodeId(), "E component output"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("Eomponent executed!"); + + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/FComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/FComponent.java new file mode 100644 index 00000000..68af66e6 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/FComponent.java @@ -0,0 +1,30 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +@Component("f") +public class FComponent extends NodeComponent { + + @Override + public void process() { + try { + String[] temp = new String[400]; + Thread.sleep(40L); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.out.println("Fcomponent executed!"); + + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/GComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/GComponent.java new file mode 100644 index 00000000..044a2c07 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/GComponent.java @@ -0,0 +1,24 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +@Component("g") +public class GComponent extends NodeComponent { + + @Override + public void process() { + System.out.println("Gcomponent executed!"); + this.getSlot().setResponseData("i am a response"); + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/HComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/HComponent.java new file mode 100644 index 00000000..d06d5b80 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/HComponent.java @@ -0,0 +1,31 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; +import com.thebeastshop.liteflow.entity.data.DefaultSlot; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component("h") +public class HComponent extends NodeComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void process() { + System.out.println("Hcomponent executed!"); + flowExecutor.invoke("strategy1",3, DefaultSlot.class, this.getSlotIndex()); + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M1Component.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M1Component.java new file mode 100644 index 00000000..c48ff1a7 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M1Component.java @@ -0,0 +1,29 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component("m1") +public class M1Component extends NodeComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void process() { + System.out.println("m1 component executed!"); + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M2Component.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M2Component.java new file mode 100644 index 00000000..5e9f491c --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M2Component.java @@ -0,0 +1,29 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component("m2") +public class M2Component extends NodeComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void process() { + System.out.println("m2 component executed!"); + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M3Component.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M3Component.java new file mode 100644 index 00000000..7f2b902a --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/M3Component.java @@ -0,0 +1,31 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; +import com.thebeastshop.liteflow.entity.data.DefaultSlot; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component("m3") +public class M3Component extends NodeComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void process() { + System.out.println("m3 component executed!"); + flowExecutor.invoke("strategy2",10, DefaultSlot.class, this.getSlotIndex()); + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/MComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/MComponent.java new file mode 100644 index 00000000..1e85233e --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/MComponent.java @@ -0,0 +1,39 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; +import com.thebeastshop.liteflow.core.NodeCondComponent; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component("m") +public class MComponent extends NodeCondComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + protected Class processCond() throws Exception { + System.out.println("m conponent executed"); + Integer flag = this.getSlot().getChainReqData("strategy1"); + if(flag == 1) { + return M1Component.class; + }else if(flag == 2){ + return M2Component.class; + }else { + return M3Component.class; + } + + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/P1Component.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/P1Component.java new file mode 100644 index 00000000..c244fc1d --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/P1Component.java @@ -0,0 +1,29 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component("p1") +public class P1Component extends NodeComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void process() { + System.out.println("p1 component executed!"); + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/P2Component.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/P2Component.java new file mode 100644 index 00000000..13c17bcc --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/P2Component.java @@ -0,0 +1,29 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component("p2") +public class P2Component extends NodeComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void process() { + System.out.println("p2 component executed!"); + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/PComponent.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/PComponent.java new file mode 100644 index 00000000..565f0c55 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/components/PComponent.java @@ -0,0 +1,37 @@ +/** + *

Title: liteFlow

+ *

Description: 轻量级的组件式流程框架

+ *

Copyright: Copyright (c) 2017

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.flowtest.components; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; +import com.thebeastshop.liteflow.core.NodeCondComponent; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component("p") +public class PComponent extends NodeCondComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + protected Class processCond() throws Exception { + System.out.println("p conponent executed"); + Integer flag = this.getSlot().getChainReqData("strategy2"); + if(flag == 10) { + return P1Component.class; + }else { + return P2Component.class; + } + + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/curator/CuratorTest.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/curator/CuratorTest.java new file mode 100644 index 00000000..9804a5d7 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/curator/CuratorTest.java @@ -0,0 +1,131 @@ +package com.thebeastshop.flowtest.curator; + +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.framework.recipes.cache.*; +import org.apache.curator.retry.RetryNTimes; + +public class CuratorTest { + + /** Zookeeper info */ + private static final String ZK_ADDRESS = "123.206.92.144:2181,123.206.92.144:2182,123.206.92.144:2183"; + private static final String ZK_PATH = "/zktest/a1/aa1"; + + public static void main(String[] args) throws Exception { + // 1.Connect to zk + CuratorFramework client = CuratorFrameworkFactory.newClient( + ZK_ADDRESS, + new RetryNTimes(10, 5000) + ); + client.start(); + + checkNode(client); + +// childNodeListen(client); + +// removeNodeData(client); + +// createNode(client); + +// nodeListen(client); +// +// modifyNodeData(client); + + System.in.read(); + +// getNodeData(client); +// +// + + } + + private static void checkNode(CuratorFramework client) throws Exception { + System.out.println(client.checkExists().forPath("/test")); + } + + private static void createNode(CuratorFramework client) throws Exception { + String data1 = "nice to meet you"; + print("create", ZK_PATH, data1); + client.create(). + creatingParentsIfNeeded(). + forPath(ZK_PATH, data1.getBytes()); + } + + private static void getNodeData(CuratorFramework client) throws Exception { + print("ls", "/"); + print(client.getChildren().forPath("/")); + print("get", ZK_PATH); + print(client.getData().forPath(ZK_PATH)); + } + + private static void modifyNodeData(CuratorFramework client) throws Exception { + String data2 = "world for u"; + print("set", ZK_PATH, data2); + client.setData().forPath(ZK_PATH, data2.getBytes()); + print("get", ZK_PATH); + print(client.getData().forPath(ZK_PATH)); + } + + private static void removeNodeData(CuratorFramework client) throws Exception { + print("delete", "/zktest/dddd"); + client.delete().forPath("/zktest/dddd"); + print("ls", "/"); + print(client.getChildren().forPath("/")); + } + + private static void nodeListen(CuratorFramework client) throws Exception { + final NodeCache cache = new NodeCache(client,ZK_PATH); + cache.start(); + + cache.getListenable().addListener(new NodeCacheListener() { + + @Override + public void nodeChanged() throws Exception { + byte[] res = cache.getCurrentData().getData(); + System.out.println("data: " + new String(res)); + } + }); + } + + private static void childNodeListen(CuratorFramework client) throws Exception { + final PathChildrenCache cache = new PathChildrenCache(client,"/zktest",true); + cache.start(); + + cache.getListenable().addListener(new PathChildrenCacheListener() { + + @Override + public void childEvent(CuratorFramework curator, PathChildrenCacheEvent event) throws Exception { + switch (event.getType()) { + case CHILD_ADDED: + System.out.println("add:" + event.getData().getPath() + ":" + new String(event.getData().getData())); + break; + case CHILD_UPDATED: + System.out.println("update:" + event.getData().getPath() + ":" + new String(event.getData().getData())); + break; + case CHILD_REMOVED: + System.out.println("remove:" + event.getData().getPath() + ":" + new String(event.getData().getData())); + break; + default: + break; + } + } + }); + } + + + private static void print(String... cmds) { + StringBuilder text = new StringBuilder("$ "); + for (String cmd : cmds) { + text.append(cmd).append(" "); + } + System.out.println(text.toString()); + } + + private static void print(Object result) { + System.out.println( + result instanceof byte[] + ? new String((byte[]) result) + : result); + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/curator/CuratorTest2.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/curator/CuratorTest2.java new file mode 100644 index 00000000..cb3c2a9a --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/curator/CuratorTest2.java @@ -0,0 +1,117 @@ +package com.thebeastshop.flowtest.curator; + +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.framework.recipes.cache.*; +import org.apache.curator.retry.RetryNTimes; + +public class CuratorTest2 { + + /** Zookeeper info */ + private static final String ZK_ADDRESS = "114.55.174.189:2181"; + private static final String ZK_PATH = "/zktest/ffff"; + + public static void main(String[] args) throws Exception { + // 1.Connect to zk + CuratorFramework client = CuratorFrameworkFactory.newClient( + ZK_ADDRESS, + new RetryNTimes(10, 5000) + ); + client.start(); + +// removeNodeData(client); + +// createNode(client); + +// nodeListen(client); +// + modifyNodeData(client); + + } + + private static void createNode(CuratorFramework client) throws Exception { + String data1 = "hello"; + print("create", ZK_PATH, data1); + client.create(). + creatingParentsIfNeeded(). + forPath(ZK_PATH, data1.getBytes()); + } + + private static void getNodeData(CuratorFramework client) throws Exception { + print("ls", "/"); + print(client.getChildren().forPath("/")); + print("get", ZK_PATH); + print(client.getData().forPath(ZK_PATH)); + } + + private static void modifyNodeData(CuratorFramework client) throws Exception { + String data2 = "world for u"; + print("set", ZK_PATH, data2); + client.setData().forPath(ZK_PATH, data2.getBytes()); + print("get", ZK_PATH); + print(client.getData().forPath(ZK_PATH)); + } + + private static void removeNodeData(CuratorFramework client) throws Exception { + print("delete", "/zktest/dddd"); + client.delete().forPath("/zktest/dddd"); + print("ls", "/"); + print(client.getChildren().forPath("/")); + } + + private static void nodeListen(CuratorFramework client) throws Exception { + final NodeCache cache = new NodeCache(client,ZK_PATH); + cache.start(); + + cache.getListenable().addListener(new NodeCacheListener() { + + @Override + public void nodeChanged() throws Exception { + byte[] res = cache.getCurrentData().getData(); + System.out.println("data: " + new String(res)); + } + }); + } + + private static void childNodeListen(CuratorFramework client) throws Exception { + final PathChildrenCache cache = new PathChildrenCache(client,"/zktest",true); + cache.start(); + + cache.getListenable().addListener(new PathChildrenCacheListener() { + + @Override + public void childEvent(CuratorFramework curator, PathChildrenCacheEvent event) throws Exception { + switch (event.getType()) { + case CHILD_ADDED: + System.out.println("add:" + event.getData().getPath() + ":" + new String(event.getData().getData())); + break; + case CHILD_UPDATED: + System.out.println("update:" + event.getData().getPath() + ":" + new String(event.getData().getData())); + break; + case CHILD_REMOVED: + System.out.println("remove:" + event.getData().getPath() + ":" + new String(event.getData().getData())); + break; + default: + break; + } + } + }); + } + + + private static void print(String... cmds) { + StringBuilder text = new StringBuilder("$ "); + for (String cmd : cmds) { + text.append(cmd).append(" "); + } + System.out.println(text.toString()); + } + + private static void print(Object result) { + System.out.println( + result instanceof byte[] + ? new String((byte[]) result) + : result); + } + +} diff --git a/liteflow-test/src/main/java/com/thebeastshop/flowtest/regex/RegexTest.java b/liteflow-test/src/main/java/com/thebeastshop/flowtest/regex/RegexTest.java new file mode 100644 index 00000000..5d1ab825 --- /dev/null +++ b/liteflow-test/src/main/java/com/thebeastshop/flowtest/regex/RegexTest.java @@ -0,0 +1,23 @@ +package com.thebeastshop.flowtest.regex; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class RegexTest { + + public static void main(String[] args) { + String str = "192.168.1.1:2181,192.168.1.2:2182,192.168.1.3:2183"; + List list = new ArrayList(); + Pattern p = Pattern.compile("[\\w\\d][\\w\\d\\.]+\\:(\\d)+(\\,[\\w\\d][\\w\\d\\.]+\\:(\\d)+)*"); + Matcher m = p.matcher(str); + while(m.find()){ + list.add(m.group()); + } + System.out.println(list.size()); + System.out.println(list); + + } + +} diff --git a/liteflow-test/src/main/resources/application.properties b/liteflow-test/src/main/resources/application.properties new file mode 100644 index 00000000..c79fb6b3 --- /dev/null +++ b/liteflow-test/src/main/resources/application.properties @@ -0,0 +1 @@ +liteFlow.ruleSource=config/flow.xml diff --git a/liteflow-test/src/main/resources/config/flow.xml b/liteflow-test/src/main/resources/config/flow.xml new file mode 100644 index 00000000..e072affa --- /dev/null +++ b/liteflow-test/src/main/resources/config/flow.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/liteflow-test/src/test/java/com/thebeastshop/flowtest/FlowtestApplicationTests.java b/liteflow-test/src/test/java/com/thebeastshop/flowtest/FlowtestApplicationTests.java new file mode 100644 index 00000000..97c0a42f --- /dev/null +++ b/liteflow-test/src/test/java/com/thebeastshop/flowtest/FlowtestApplicationTests.java @@ -0,0 +1,16 @@ +package com.thebeastshop.flowtest; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class FlowtestApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/pom.xml b/liteflow/pom.xml similarity index 84% rename from pom.xml rename to liteflow/pom.xml index 3f7fd823..d35965ae 100644 --- a/pom.xml +++ b/liteflow/pom.xml @@ -1,20 +1,20 @@  - com.thebeastshop.liteflow + com.thebeastshop liteflow jar 4.0.0 - 2.0.2 + 2.1.0 UTF-8 - 1.7 + 1.8 3.4 4.1 2.4 1.2 - 4.2.6.RELEASE + 5.0.9.RELEASE 1.7.21 1.2.17 1.7.5 @@ -124,14 +124,27 @@ ${java.version} - - org.apache.maven.plugins - maven-surefire-plugin - 2.18.1 - - true - + + org.apache.maven.plugins + maven-surefire-plugin + 2.18.1 + + true + - \ No newline at end of file + + + + nexus-releases + nexus-releases + http://118.178.236.200:8087/nexus/content/repositories/thirdparty + + + nexus-snapshots + nexus-snapshots + http://118.178.236.200:8087/nexus/content/repositories/snapshots + + + diff --git a/src/main/java/com/thebeastshop/liteflow/core/FlowExecutor.java b/liteflow/src/main/java/com/thebeastshop/liteflow/core/FlowExecutor.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/core/FlowExecutor.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/core/FlowExecutor.java diff --git a/src/main/java/com/thebeastshop/liteflow/core/NodeComponent.java b/liteflow/src/main/java/com/thebeastshop/liteflow/core/NodeComponent.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/core/NodeComponent.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/core/NodeComponent.java diff --git a/src/main/java/com/thebeastshop/liteflow/core/NodeCondComponent.java b/liteflow/src/main/java/com/thebeastshop/liteflow/core/NodeCondComponent.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/core/NodeCondComponent.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/core/NodeCondComponent.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/config/Chain.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/config/Chain.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/config/Chain.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/config/Chain.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/config/Condition.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/config/Condition.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/config/Condition.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/config/Condition.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/config/Node.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/config/Node.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/config/Node.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/config/Node.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/config/ThenCondition.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/config/ThenCondition.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/config/ThenCondition.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/config/ThenCondition.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/config/WhenCondition.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/config/WhenCondition.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/config/WhenCondition.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/config/WhenCondition.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/data/AbsSlot.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/AbsSlot.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/data/AbsSlot.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/AbsSlot.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/data/CmpStep.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/CmpStep.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/data/CmpStep.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/CmpStep.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/data/CmpStepType.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/CmpStepType.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/data/CmpStepType.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/CmpStepType.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/data/DataBus.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/DataBus.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/data/DataBus.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/DataBus.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/data/DefaultSlot.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/DefaultSlot.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/data/DefaultSlot.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/DefaultSlot.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/data/Slot.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/Slot.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/data/Slot.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/data/Slot.java diff --git a/src/main/java/com/thebeastshop/liteflow/entity/monitor/CompStatistics.java b/liteflow/src/main/java/com/thebeastshop/liteflow/entity/monitor/CompStatistics.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/entity/monitor/CompStatistics.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/entity/monitor/CompStatistics.java diff --git a/src/main/java/com/thebeastshop/liteflow/exception/ChainNotFoundException.java b/liteflow/src/main/java/com/thebeastshop/liteflow/exception/ChainNotFoundException.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/exception/ChainNotFoundException.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/exception/ChainNotFoundException.java diff --git a/src/main/java/com/thebeastshop/liteflow/exception/ComponentNotAccessException.java b/liteflow/src/main/java/com/thebeastshop/liteflow/exception/ComponentNotAccessException.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/exception/ComponentNotAccessException.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/exception/ComponentNotAccessException.java diff --git a/src/main/java/com/thebeastshop/liteflow/exception/FlowExecutorNotInitException.java b/liteflow/src/main/java/com/thebeastshop/liteflow/exception/FlowExecutorNotInitException.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/exception/FlowExecutorNotInitException.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/exception/FlowExecutorNotInitException.java diff --git a/src/main/java/com/thebeastshop/liteflow/exception/FlowSystemException.java b/liteflow/src/main/java/com/thebeastshop/liteflow/exception/FlowSystemException.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/exception/FlowSystemException.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/exception/FlowSystemException.java diff --git a/src/main/java/com/thebeastshop/liteflow/exception/NoAvailableSlotException.java b/liteflow/src/main/java/com/thebeastshop/liteflow/exception/NoAvailableSlotException.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/exception/NoAvailableSlotException.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/exception/NoAvailableSlotException.java diff --git a/src/main/java/com/thebeastshop/liteflow/exception/ParseException.java b/liteflow/src/main/java/com/thebeastshop/liteflow/exception/ParseException.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/exception/ParseException.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/exception/ParseException.java diff --git a/src/main/java/com/thebeastshop/liteflow/flow/FlowBus.java b/liteflow/src/main/java/com/thebeastshop/liteflow/flow/FlowBus.java similarity index 92% rename from src/main/java/com/thebeastshop/liteflow/flow/FlowBus.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/flow/FlowBus.java index ce799e58..7ca8ccb0 100644 --- a/src/main/java/com/thebeastshop/liteflow/flow/FlowBus.java +++ b/liteflow/src/main/java/com/thebeastshop/liteflow/flow/FlowBus.java @@ -18,36 +18,36 @@ import com.thebeastshop.liteflow.entity.config.Chain; import com.thebeastshop.liteflow.entity.config.Node; public class FlowBus { - + private static Map chainMap; - + private static Map nodeMap; - + public static Chain getChain(String id) throws Exception{ if(chainMap == null || chainMap.isEmpty()){ throw new Exception("please config the rule first"); } return chainMap.get(id); } - + public static void addChain(String name,Chain chain){ if(chainMap == null){ - chainMap = new HashMap(); + chainMap = new HashMap<>(); } chainMap.put(name, chain); } - + public static boolean needInit() { return MapUtils.isEmpty(chainMap); } - + public static void addNode(String nodeId, Node node) { if(nodeMap == null) { - nodeMap = new HashMap(); + nodeMap = new HashMap<>(); } nodeMap.put(nodeId, node); } - + public static Node getNode(String nodeId) { return nodeMap.get(nodeId); } diff --git a/src/main/java/com/thebeastshop/liteflow/monitor/MonitorBus.java b/liteflow/src/main/java/com/thebeastshop/liteflow/monitor/MonitorBus.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/monitor/MonitorBus.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/monitor/MonitorBus.java diff --git a/src/main/java/com/thebeastshop/liteflow/parser/ClassXmlFlowParser.java b/liteflow/src/main/java/com/thebeastshop/liteflow/parser/ClassXmlFlowParser.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/parser/ClassXmlFlowParser.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/parser/ClassXmlFlowParser.java diff --git a/src/main/java/com/thebeastshop/liteflow/parser/LocalXmlFlowParser.java b/liteflow/src/main/java/com/thebeastshop/liteflow/parser/LocalXmlFlowParser.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/parser/LocalXmlFlowParser.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/parser/LocalXmlFlowParser.java diff --git a/src/main/java/com/thebeastshop/liteflow/parser/RegexEntity.java b/liteflow/src/main/java/com/thebeastshop/liteflow/parser/RegexEntity.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/parser/RegexEntity.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/parser/RegexEntity.java diff --git a/src/main/java/com/thebeastshop/liteflow/parser/XmlFlowParser.java b/liteflow/src/main/java/com/thebeastshop/liteflow/parser/XmlFlowParser.java similarity index 97% rename from src/main/java/com/thebeastshop/liteflow/parser/XmlFlowParser.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/parser/XmlFlowParser.java index ef84df3a..f415d7a6 100644 --- a/src/main/java/com/thebeastshop/liteflow/parser/XmlFlowParser.java +++ b/liteflow/src/main/java/com/thebeastshop/liteflow/parser/XmlFlowParser.java @@ -24,11 +24,11 @@ import com.thebeastshop.liteflow.spring.ComponentScaner; import com.thebeastshop.liteflow.util.Dom4JReader; public abstract class XmlFlowParser { - + private final Logger LOG = LoggerFactory.getLogger(XmlFlowParser.class); - + public abstract void parseMain(String path) throws Exception; - + public void parse(String content) throws Exception { Document document = Dom4JReader.getFormatDocument(content); parse(document); @@ -77,14 +77,14 @@ public abstract class XmlFlowParser { List chainList = rootElement.elements("chain"); for (Element e : chainList) { chainName = e.attributeValue("name"); - conditionList = new ArrayList(); + conditionList = new ArrayList<>(); for (Iterator it = e.elementIterator(); it.hasNext();) { Element condE = it.next(); condArrayStr = condE.attributeValue("value"); if (StringUtils.isBlank(condArrayStr)) { continue; } - chainNodeList = new ArrayList(); + chainNodeList = new ArrayList<>(); condArray = condArrayStr.split(","); RegexEntity regexEntity = null; Node node = null; @@ -114,7 +114,7 @@ public abstract class XmlFlowParser { } } - + public static RegexEntity parseNodeStr(String str) { List list = new ArrayList(); Pattern p = Pattern.compile("[^\\)\\(]+"); diff --git a/src/main/java/com/thebeastshop/liteflow/parser/ZookeeperXmlFlowParser.java b/liteflow/src/main/java/com/thebeastshop/liteflow/parser/ZookeeperXmlFlowParser.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/parser/ZookeeperXmlFlowParser.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/parser/ZookeeperXmlFlowParser.java diff --git a/src/main/java/com/thebeastshop/liteflow/spring/ComponentScaner.java b/liteflow/src/main/java/com/thebeastshop/liteflow/spring/ComponentScaner.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/spring/ComponentScaner.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/spring/ComponentScaner.java diff --git a/liteflow/src/main/java/com/thebeastshop/liteflow/spring/FlowContextInitializer.java b/liteflow/src/main/java/com/thebeastshop/liteflow/spring/FlowContextInitializer.java new file mode 100644 index 00000000..35ecefa2 --- /dev/null +++ b/liteflow/src/main/java/com/thebeastshop/liteflow/spring/FlowContextInitializer.java @@ -0,0 +1,39 @@ +package com.thebeastshop.liteflow.spring; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +import org.springframework.beans.factory.support.BeanDefinitionBuilder; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; +import org.springframework.context.ApplicationContextInitializer; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.core.env.ConfigurableEnvironment; +import org.springframework.core.env.PropertySource; + +import java.util.Arrays; +import java.util.Iterator; + +public class FlowContextInitializer implements ApplicationContextInitializer { + + private final static String LITEFLOW_PROPERTY = "liteFlow.ruleSource"; + + @Override + public void initialize(ConfigurableApplicationContext context) { + ConfigurableEnvironment environment = context.getEnvironment(); + + Iterator> it = environment.getPropertySources().iterator(); + while (it.hasNext()){ + PropertySource propertySource = it.next(); + if(propertySource.containsProperty(LITEFLOW_PROPERTY)){ + //注册scaner + DefaultListableBeanFactory factory = (DefaultListableBeanFactory)context.getBeanFactory(); + BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(ComponentScaner.class); + factory.registerBeanDefinition("componentScaner", beanDefinitionBuilder.getRawBeanDefinition()); + //注册flowExecutor + String rulePath = (String)propertySource.getProperty(LITEFLOW_PROPERTY); + beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(FlowExecutor.class); + beanDefinitionBuilder.addPropertyValue("rulePath",Arrays.asList(rulePath.split(","))); + factory.registerBeanDefinition("flowExecutor", beanDefinitionBuilder.getRawBeanDefinition()); + } + } + } +} diff --git a/src/main/java/com/thebeastshop/liteflow/util/Dom4JReader.java b/liteflow/src/main/java/com/thebeastshop/liteflow/util/Dom4JReader.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/util/Dom4JReader.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/util/Dom4JReader.java diff --git a/src/main/java/com/thebeastshop/liteflow/util/IOUtil.java b/liteflow/src/main/java/com/thebeastshop/liteflow/util/IOUtil.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/util/IOUtil.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/util/IOUtil.java diff --git a/src/main/java/com/thebeastshop/liteflow/util/LOGOPrinter.java b/liteflow/src/main/java/com/thebeastshop/liteflow/util/LOGOPrinter.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/util/LOGOPrinter.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/util/LOGOPrinter.java diff --git a/src/main/java/com/thebeastshop/liteflow/util/LimitQueue.java b/liteflow/src/main/java/com/thebeastshop/liteflow/util/LimitQueue.java similarity index 100% rename from src/main/java/com/thebeastshop/liteflow/util/LimitQueue.java rename to liteflow/src/main/java/com/thebeastshop/liteflow/util/LimitQueue.java diff --git a/liteflow/src/main/resources/META-INF/spring.factories b/liteflow/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..e58aa7f0 --- /dev/null +++ b/liteflow/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.context.ApplicationContextInitializer=\ + com.thebeastshop.liteflow.spring.FlowContextInitializer diff --git a/src/test/java/com/thebeastshop/liteflow/test/TestCustomParser.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/TestCustomParser.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/TestCustomParser.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/TestCustomParser.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/TestMain.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/TestMain.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/TestMain.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/TestMain.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/TestWithSpringMain.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/TestWithSpringMain.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/TestWithSpringMain.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/TestWithSpringMain.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/AComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/AComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/AComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/AComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/BComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/BComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/BComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/BComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/CComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/CComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/CComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/CComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/CondComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/CondComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/CondComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/CondComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/DComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/DComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/DComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/DComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/EComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/EComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/EComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/EComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/FComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/FComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/FComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/FComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/GComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/GComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/GComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/GComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/HComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/HComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/HComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/HComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/M1Component.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/M1Component.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/M1Component.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/M1Component.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/M2Component.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/M2Component.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/M2Component.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/M2Component.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/M3Component.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/M3Component.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/M3Component.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/M3Component.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/MComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/MComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/MComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/MComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/P1Component.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/P1Component.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/P1Component.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/P1Component.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/P2Component.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/P2Component.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/P2Component.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/P2Component.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/PComponent.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/component/PComponent.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/component/PComponent.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/component/PComponent.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/curator/CuratorTest.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/curator/CuratorTest.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/curator/CuratorTest.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/curator/CuratorTest.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/curator/CuratorTest2.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/curator/CuratorTest2.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/curator/CuratorTest2.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/curator/CuratorTest2.java diff --git a/src/test/java/com/thebeastshop/liteflow/test/regex/RegexTest.java b/liteflow/src/test/java/com/thebeastshop/liteflow/test/regex/RegexTest.java similarity index 100% rename from src/test/java/com/thebeastshop/liteflow/test/regex/RegexTest.java rename to liteflow/src/test/java/com/thebeastshop/liteflow/test/regex/RegexTest.java diff --git a/src/test/resources/config/flow.xml b/liteflow/src/test/resources/config/flow.xml similarity index 100% rename from src/test/resources/config/flow.xml rename to liteflow/src/test/resources/config/flow.xml diff --git a/src/test/resources/log4j.xml b/liteflow/src/test/resources/log4j.xml similarity index 100% rename from src/test/resources/log4j.xml rename to liteflow/src/test/resources/log4j.xml diff --git a/src/test/resources/spring-test.xml b/liteflow/src/test/resources/spring-test.xml similarity index 100% rename from src/test/resources/spring-test.xml rename to liteflow/src/test/resources/spring-test.xml