Browse Source

enhancement #I6RFOE LiteFlow能否在流程(表达式)添加类似tag字段的属性,提高选择组件的复用率呢

everywhere.z 2 years ago
parent
commit
5e3be2be15

+ 1 - 6
liteflow-core/src/main/java/com/yomahub/liteflow/core/ScriptBreakComponent.java

@@ -15,12 +15,7 @@ public class ScriptBreakComponent extends NodeBreakComponent implements ScriptCo
 
 	@Override
 	public boolean processBreak() throws Exception {
-		ScriptExecuteWrap wrap = new ScriptExecuteWrap();
-		wrap.setCurrChainId(this.getCurrChainId());
-		wrap.setNodeId(this.getNodeId());
-		wrap.setSlotIndex(this.getSlotIndex());
-		wrap.setTag(this.getTag());
-		wrap.setCmpData(this.getCmpData(Map.class));
+		ScriptExecuteWrap wrap = this.buildWrap(this);
 		return (boolean) ScriptExecutorFactory.loadInstance()
 			.getScriptExecutor(this.getRefNode().getLanguage())
 			.execute(wrap);

+ 1 - 6
liteflow-core/src/main/java/com/yomahub/liteflow/core/ScriptCommonComponent.java

@@ -19,12 +19,7 @@ public class ScriptCommonComponent extends NodeComponent implements ScriptCompon
 
 	@Override
 	public void process() throws Exception {
-		ScriptExecuteWrap wrap = new ScriptExecuteWrap();
-		wrap.setCurrChainId(this.getCurrChainId());
-		wrap.setNodeId(this.getNodeId());
-		wrap.setSlotIndex(this.getSlotIndex());
-		wrap.setTag(this.getTag());
-		wrap.setCmpData(this.getCmpData(Map.class));
+		ScriptExecuteWrap wrap = this.buildWrap(this);
 		ScriptExecutorFactory.loadInstance().getScriptExecutor(this.getRefNode().getLanguage()).execute(wrap);
 	}
 

+ 13 - 0
liteflow-core/src/main/java/com/yomahub/liteflow/core/ScriptComponent.java

@@ -1,6 +1,7 @@
 package com.yomahub.liteflow.core;
 
 import com.yomahub.liteflow.enums.NodeTypeEnum;
+import com.yomahub.liteflow.script.ScriptExecuteWrap;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -33,4 +34,16 @@ public interface ScriptComponent {
 	 */
 	void loadScript(String script, String language);
 
+	default ScriptExecuteWrap buildWrap(NodeComponent cmp){
+		ScriptExecuteWrap wrap = new ScriptExecuteWrap();
+		wrap.setCurrChainId(cmp.getCurrChainId());
+		wrap.setNodeId(cmp.getNodeId());
+		wrap.setSlotIndex(cmp.getSlotIndex());
+		wrap.setTag(cmp.getTag());
+		wrap.setCmpData(cmp.getCmpData(Map.class));
+		wrap.setLoopIndex(cmp.getLoopIndex());
+		wrap.setLoopObject(cmp.getCurrLoopObj());
+		return wrap;
+	}
+
 }

+ 1 - 6
liteflow-core/src/main/java/com/yomahub/liteflow/core/ScriptForComponent.java

@@ -15,12 +15,7 @@ public class ScriptForComponent extends NodeForComponent implements ScriptCompon
 
 	@Override
 	public int processFor() throws Exception {
-		ScriptExecuteWrap wrap = new ScriptExecuteWrap();
-		wrap.setCurrChainId(this.getCurrChainId());
-		wrap.setNodeId(this.getNodeId());
-		wrap.setSlotIndex(this.getSlotIndex());
-		wrap.setTag(this.getTag());
-		wrap.setCmpData(this.getCmpData(Map.class));
+		ScriptExecuteWrap wrap = this.buildWrap(this);
 		return (int) ScriptExecutorFactory.loadInstance()
 			.getScriptExecutor(this.getRefNode().getLanguage())
 			.execute(wrap);

+ 19 - 0
liteflow-core/src/main/java/com/yomahub/liteflow/script/ScriptExecuteWrap.java

@@ -18,6 +18,10 @@ public class ScriptExecuteWrap {
 
 	private Object cmpData;
 
+	private Integer loopIndex;
+
+	private Object loopObject;
+
 	public int getSlotIndex() {
 		return slotIndex;
 	}
@@ -74,4 +78,19 @@ public class ScriptExecuteWrap {
 		this.cmpData = cmpData;
 	}
 
+	public Integer getLoopIndex() {
+		return loopIndex;
+	}
+
+	public void setLoopIndex(Integer loopIndex) {
+		this.loopIndex = loopIndex;
+	}
+
+	public Object getLoopObject() {
+		return loopObject;
+	}
+
+	public void setLoopObject(Object loopObject) {
+		this.loopObject = loopObject;
+	}
 }