Title: liteFlow
+ *Description: 轻量级的组件式流程框架
+ *Copyright: Copyright (c) 2017
+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-12-8 + * @version 1.0 + */ +package com.thebeastshop.liteflow.entity.data; + +import java.text.MessageFormat; + +public class CmpStep { + private String nodeId; + + private CmpStepType stepType; + + public CmpStep(String nodeId, CmpStepType stepType) { + this.nodeId = nodeId; + this.stepType = stepType; + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public CmpStepType getStepType() { + return stepType; + } + + public void setStepType(CmpStepType stepType) { + this.stepType = stepType; + } + + @Override + public String toString() { + if(stepType.equals(CmpStepType.SINGLE)) { + return MessageFormat.format("{0}", nodeId); + }else { + return MessageFormat.format("{0}({1})", nodeId,stepType); + } + + + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + }else { + if(getClass() != obj.getClass()) { + return false; + }else { + if(((CmpStep)obj).getNodeId().equals(this.getNodeId())) { + return true; + }else { + return false; + } + } + } + } +} diff --git a/src/main/java/com/thebeastshop/liteflow/entity/data/CmpStepType.java b/src/main/java/com/thebeastshop/liteflow/entity/data/CmpStepType.java new file mode 100644 index 000000000..ba40c63ea --- /dev/null +++ b/src/main/java/com/thebeastshop/liteflow/entity/data/CmpStepType.java @@ -0,0 +1,14 @@ +/** + *Title: beast-price
+ *Description: 价格计算服务
+ *Copyright: Copyright (c) 2017
+ * @author Bryan.Zhang + * @Date 2017年12月8日 + */ +package com.thebeastshop.liteflow.entity.data; + +public enum CmpStepType { + START, + END, + SINGLE; +} diff --git a/src/main/java/com/thebeastshop/liteflow/entity/data/Slot.java b/src/main/java/com/thebeastshop/liteflow/entity/data/Slot.java index c6e5ca159..c7556439f 100644 --- a/src/main/java/com/thebeastshop/liteflow/entity/data/Slot.java +++ b/src/main/java/com/thebeastshop/liteflow/entity/data/Slot.java @@ -34,7 +34,7 @@ public interface Slot { publicTitle: liteFlow
+ *Description: 轻量级的组件式流程框架
+ *Copyright: Copyright (c) 2017
+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.liteflow.test.component; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; +import com.thebeastshop.liteflow.entity.data.DefaultSlot; + +@Component("h") +public class HComponent extends NodeComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void process() { + System.out.println("Hcomponent executed!"); + flowExecutor.invoke("strategy", DefaultSlot.class, this.getSlotIndex()); + } + +} diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/M1Component.java b/src/test/java/com/thebeastshop/liteflow/test/component/M1Component.java new file mode 100644 index 000000000..9efbb153f --- /dev/null +++ b/src/test/java/com/thebeastshop/liteflow/test/component/M1Component.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.liteflow.test.component; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; + +@Component("m1") +public class M1Component extends NodeComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void process() { + System.out.println("m1 component executed!"); + } + +} diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/M2Component.java b/src/test/java/com/thebeastshop/liteflow/test/component/M2Component.java new file mode 100644 index 000000000..96a6bf906 --- /dev/null +++ b/src/test/java/com/thebeastshop/liteflow/test/component/M2Component.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.liteflow.test.component; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; + +@Component("m2") +public class M2Component extends NodeComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + public void process() { + System.out.println("m2 component executed!"); + } + +} diff --git a/src/test/java/com/thebeastshop/liteflow/test/component/MComponent.java b/src/test/java/com/thebeastshop/liteflow/test/component/MComponent.java new file mode 100644 index 000000000..d9267b908 --- /dev/null +++ b/src/test/java/com/thebeastshop/liteflow/test/component/MComponent.java @@ -0,0 +1,32 @@ +/** + *Title: liteFlow
+ *Description: 轻量级的组件式流程框架
+ *Copyright: Copyright (c) 2017
+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2017-8-1 + * @version 1.0 + */ +package com.thebeastshop.liteflow.test.component; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Component; + +import com.thebeastshop.liteflow.core.FlowExecutor; +import com.thebeastshop.liteflow.core.NodeComponent; +import com.thebeastshop.liteflow.core.NodeCondComponent; + +@Component("m") +public class MComponent extends NodeCondComponent { + + @Resource + private FlowExecutor flowExecutor; + + @Override + protected String processCond() throws Exception { + System.out.println("m conponent executed"); + return "m1"; + } + +} diff --git a/src/test/resources/config/flow.xml b/src/test/resources/config/flow.xml index 87fe28548..d29fc2d61 100644 --- a/src/test/resources/config/flow.xml +++ b/src/test/resources/config/flow.xml @@ -24,8 +24,10 @@