componentEntry : ComponentScaner.nodeComponentMap.entrySet()){
+ nodeMap.put(componentEntry.getKey(), new Node(componentEntry.getKey(), componentEntry.getValue().getClass().getName(), componentEntry.getValue()));
}
- component.setNodeId(id);
- node.setInstance(component);
- nodeMap.put(id, node);
}
// 解析chain节点
diff --git a/src/main/java/com/thebeastshop/liteflow/spring/ComponentScaner.java b/src/main/java/com/thebeastshop/liteflow/spring/ComponentScaner.java
new file mode 100644
index 000000000..1249e21cf
--- /dev/null
+++ b/src/main/java/com/thebeastshop/liteflow/spring/ComponentScaner.java
@@ -0,0 +1,50 @@
+/**
+ * Title: liteFlow
+ * Description: 轻量级的组件式流程框架
+ * Copyright: Copyright (c) 2017
+ * @author Bryan.Zhang
+ * @email weenyc31@163.com
+ * @Date 2017-11-23
+ * @version 1.0
+ */
+package com.thebeastshop.liteflow.spring;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.core.Ordered;
+import org.springframework.core.PriorityOrdered;
+import com.thebeastshop.liteflow.core.NodeComponent;
+import com.thebeastshop.liteflow.entity.config.Node;
+
+public class ComponentScaner implements BeanPostProcessor, PriorityOrdered {
+
+ private static final Logger LOG = LoggerFactory.getLogger(ComponentScaner.class);
+
+ public static Map nodeComponentMap = new HashMap();
+
+ @Override
+ public int getOrder() {
+ return Ordered.LOWEST_PRECEDENCE;
+ }
+
+ @Override
+ public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
+ Class clazz = bean.getClass();
+ if(NodeComponent.class.isAssignableFrom(clazz)){
+ LOG.info("component[{}] has been found",beanName);
+ NodeComponent nodeComponent = (NodeComponent)bean;
+ nodeComponent.setNodeId(beanName);
+ nodeComponentMap.put(beanName, nodeComponent);
+ }
+ return bean;
+ }
+
+ @Override
+ public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
+ return bean;
+ }
+}
diff --git a/src/test/java/com/thebeastshop/liteflow/test/TestWithSpringMain.java b/src/test/java/com/thebeastshop/liteflow/test/TestWithSpringMain.java
new file mode 100644
index 000000000..6ed6b1e05
--- /dev/null
+++ b/src/test/java/com/thebeastshop/liteflow/test/TestWithSpringMain.java
@@ -0,0 +1,26 @@
+package com.thebeastshop.liteflow.test;
+
+import javax.annotation.Resource;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import com.thebeastshop.liteflow.core.FlowExecutor;
+
+
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(locations = { "classpath:spring-test.xml" })
+public class TestWithSpringMain {
+
+ @Resource
+ private FlowExecutor flowExecutor;
+
+ @Test
+ public void test1() throws Exception {
+ String response = flowExecutor.execute("chain2", "it's a request");
+ System.out.println(response);
+ }
+}
diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/AComponent.java b/src/test/java/com/thebeastshop/liteflow/test/component/AComponent.java
index 5ba32c658..177ad20f9 100644
--- a/src/test/java/com/thebeastshop/liteflow/test/component/AComponent.java
+++ b/src/test/java/com/thebeastshop/liteflow/test/component/AComponent.java
@@ -9,9 +9,12 @@
*/
package com.thebeastshop.liteflow.test.component;
-import com.thebeastshop.liteflow.core.Component;
+import org.springframework.stereotype.Component;
-public class AComponent extends Component {
+import com.thebeastshop.liteflow.core.NodeComponent;
+
+@Component("a")
+public class AComponent extends NodeComponent {
@Override
public void process() {
diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/BComponent.java b/src/test/java/com/thebeastshop/liteflow/test/component/BComponent.java
index a25394204..cac3113eb 100644
--- a/src/test/java/com/thebeastshop/liteflow/test/component/BComponent.java
+++ b/src/test/java/com/thebeastshop/liteflow/test/component/BComponent.java
@@ -12,9 +12,12 @@ package com.thebeastshop.liteflow.test.component;
import java.util.ArrayList;
import java.util.List;
-import com.thebeastshop.liteflow.core.Component;
+import org.springframework.stereotype.Component;
-public class BComponent extends Component {
+import com.thebeastshop.liteflow.core.NodeComponent;
+
+@Component("b")
+public class BComponent extends NodeComponent {
@Override
public void process() {
diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/CComponent.java b/src/test/java/com/thebeastshop/liteflow/test/component/CComponent.java
index 187c5c3fa..25420668e 100644
--- a/src/test/java/com/thebeastshop/liteflow/test/component/CComponent.java
+++ b/src/test/java/com/thebeastshop/liteflow/test/component/CComponent.java
@@ -9,9 +9,12 @@
*/
package com.thebeastshop.liteflow.test.component;
-import com.thebeastshop.liteflow.core.Component;
+import org.springframework.stereotype.Component;
-public class CComponent extends Component {
+import com.thebeastshop.liteflow.core.NodeComponent;
+
+@Component("c")
+public class CComponent extends NodeComponent {
@Override
public void process() {
diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/DComponent.java b/src/test/java/com/thebeastshop/liteflow/test/component/DComponent.java
index 8ed3cdc54..18d7b277c 100644
--- a/src/test/java/com/thebeastshop/liteflow/test/component/DComponent.java
+++ b/src/test/java/com/thebeastshop/liteflow/test/component/DComponent.java
@@ -9,10 +9,13 @@
*/
package com.thebeastshop.liteflow.test.component;
-import com.thebeastshop.liteflow.core.Component;
+import org.springframework.stereotype.Component;
+
+import com.thebeastshop.liteflow.core.NodeComponent;
import com.thebeastshop.liteflow.entity.data.Slot;
-public class DComponent extends Component {
+@Component("d")
+public class DComponent extends NodeComponent {
@Override
public void process() {
diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/EComponent.java b/src/test/java/com/thebeastshop/liteflow/test/component/EComponent.java
index 40d4105f4..1ceb6e439 100644
--- a/src/test/java/com/thebeastshop/liteflow/test/component/EComponent.java
+++ b/src/test/java/com/thebeastshop/liteflow/test/component/EComponent.java
@@ -9,9 +9,12 @@
*/
package com.thebeastshop.liteflow.test.component;
-import com.thebeastshop.liteflow.core.Component;
+import org.springframework.stereotype.Component;
-public class EComponent extends Component {
+import com.thebeastshop.liteflow.core.NodeComponent;
+
+@Component("e")
+public class EComponent extends NodeComponent {
@Override
public void process() {
diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/FComponent.java b/src/test/java/com/thebeastshop/liteflow/test/component/FComponent.java
index 73f9655e1..710a3284f 100644
--- a/src/test/java/com/thebeastshop/liteflow/test/component/FComponent.java
+++ b/src/test/java/com/thebeastshop/liteflow/test/component/FComponent.java
@@ -9,9 +9,12 @@
*/
package com.thebeastshop.liteflow.test.component;
-import com.thebeastshop.liteflow.core.Component;
+import org.springframework.stereotype.Component;
-public class FComponent extends Component {
+import com.thebeastshop.liteflow.core.NodeComponent;
+
+@Component("f")
+public class FComponent extends NodeComponent {
@Override
public void process() {
diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/GComponent.java b/src/test/java/com/thebeastshop/liteflow/test/component/GComponent.java
index 9b59ea375..fec1169aa 100644
--- a/src/test/java/com/thebeastshop/liteflow/test/component/GComponent.java
+++ b/src/test/java/com/thebeastshop/liteflow/test/component/GComponent.java
@@ -9,9 +9,12 @@
*/
package com.thebeastshop.liteflow.test.component;
-import com.thebeastshop.liteflow.core.Component;
+import org.springframework.stereotype.Component;
-public class GComponent extends Component {
+import com.thebeastshop.liteflow.core.NodeComponent;
+
+@Component("g")
+public class GComponent extends NodeComponent {
@Override
public void process() {
diff --git a/src/test/resources/spring-test.xml b/src/test/resources/spring-test.xml
new file mode 100644
index 000000000..4caa5f00f
--- /dev/null
+++ b/src/test/resources/spring-test.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+ flow.xml
+
+
+
+
\ No newline at end of file