|
|
@ -4,7 +4,7 @@ import io.sc.engine.rule.core.mxgraph.parser.ExecutionFlowParser; |
|
|
|
import io.sc.engine.rule.core.mxgraph.po.*; |
|
|
|
import io.sc.engine.rule.core.po.model.Parameter; |
|
|
|
import io.sc.engine.rule.core.po.model.processor.ExecutionFlowParameterProcessor; |
|
|
|
import io.sc.engine.rule.core.util.ExpressionReplacer; |
|
|
|
import io.sc.engine.rule.core.util.GroovyExpressionReplacer; |
|
|
|
import io.sc.platform.util.StringUtil; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
@ -101,7 +101,7 @@ public class ExecutionFlow { |
|
|
|
*/ |
|
|
|
private String generateConditionGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ConditionNode node,String methodName) { |
|
|
|
StringBuilder sb =new StringBuilder(); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(ExpressionReplacer.ARGUMENT_NAME).append("){//条件判断").append("\n"); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(GroovyExpressionReplacer.ARGUMENT_NAME).append("){//条件判断").append("\n"); |
|
|
|
List<GraphNode> branches =node.getOuts(); //获取条件的所有出口边
|
|
|
|
if(branches!=null && branches.size()>0) { |
|
|
|
List<GraphNode> outs =orderEdges(branches); //对出口边进行排序,有条件的放前面,无条件的放后面
|
|
|
@ -109,10 +109,10 @@ public class ExecutionFlow { |
|
|
|
EdgeConditionBranchNode edge =(EdgeConditionBranchNode)outs.get(i); //出口边
|
|
|
|
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点
|
|
|
|
if(i==0) { |
|
|
|
sb.append("\tif((").append(ExpressionReplacer.groovy(node.getCondition(),null)).append(")==").append(ExpressionReplacer.groovy(edge.getValue(),edge.getValueType())).append("){").append("\n"); |
|
|
|
sb.append("\tif((").append(GroovyExpressionReplacer.groovy(node.getCondition(),null)).append(")==").append(GroovyExpressionReplacer.groovy(edge.getValue(),edge.getValueType())).append("){").append("\n"); |
|
|
|
}else { |
|
|
|
if(edge.getValue()!=null && !edge.getValue().trim().isEmpty()) { |
|
|
|
sb.append("else if((").append(ExpressionReplacer.groovy(node.getCondition(),null)).append(")==").append(ExpressionReplacer.groovy(edge.getValue(),edge.getValueType())).append("){").append("\n"); |
|
|
|
sb.append("else if((").append(GroovyExpressionReplacer.groovy(node.getCondition(),null)).append(")==").append(GroovyExpressionReplacer.groovy(edge.getValue(),edge.getValueType())).append("){").append("\n"); |
|
|
|
}else { |
|
|
|
sb.append("else {").append("\n"); |
|
|
|
} |
|
|
@ -126,7 +126,7 @@ public class ExecutionFlow { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
sb.append("\t\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(ExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
sb.append("\t\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(GroovyExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
sb.append("\t}"); |
|
|
|
} |
|
|
|
sb.append("\n}\n\n"); |
|
|
@ -148,14 +148,14 @@ public class ExecutionFlow { |
|
|
|
*/ |
|
|
|
private String generateParallelGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ParallelNode node,String methodName) { |
|
|
|
StringBuilder sb =new StringBuilder(); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(ExpressionReplacer.ARGUMENT_NAME).append("){//并发网关").append("\n"); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(GroovyExpressionReplacer.ARGUMENT_NAME).append("){//并发网关").append("\n"); |
|
|
|
List<GraphNode> outs =node.getOuts(); //获取条件的所有出口边
|
|
|
|
if(outs!=null && outs.size()>0) { |
|
|
|
for(int i=0;i<outs.size();i++) { |
|
|
|
EdgeNode edge =(EdgeNode)outs.get(i); //出口边
|
|
|
|
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点
|
|
|
|
|
|
|
|
sb.append("\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(ExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
sb.append("\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(GroovyExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
} |
|
|
|
sb.append("}\n\n"); |
|
|
|
//继续生成后续方法
|
|
|
@ -176,16 +176,16 @@ public class ExecutionFlow { |
|
|
|
*/ |
|
|
|
private String generateCommandSetGroovyCode(Map<String,String> methodNameCache,Parameter parameter,CommandSetNode node,String methodName) { |
|
|
|
StringBuilder sb =new StringBuilder(); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(ExpressionReplacer.ARGUMENT_NAME).append("){//指令集").append("\n"); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(GroovyExpressionReplacer.ARGUMENT_NAME).append("){//指令集").append("\n"); |
|
|
|
String commands =node.getCommands(); |
|
|
|
if(commands!=null && !commands.isEmpty()) { |
|
|
|
sb.append("\t").append(ExpressionReplacer.groovy(commands,null)).append("\n"); |
|
|
|
sb.append("\t").append(GroovyExpressionReplacer.groovy(commands,null)).append("\n"); |
|
|
|
//继续调用后续方法
|
|
|
|
List<GraphNode> edges =node.getOuts(); //获取条件的所有出口边
|
|
|
|
if(edges!=null && edges.size()>0) { |
|
|
|
for(GraphNode edge : edges) { |
|
|
|
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点
|
|
|
|
sb.append("\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(ExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
sb.append("\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(GroovyExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -212,7 +212,7 @@ public class ExecutionFlow { |
|
|
|
*/ |
|
|
|
private String generateResourceAbstractGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ResourceAbstractNode node,String methodName) { |
|
|
|
StringBuilder sb =new StringBuilder(); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(ExpressionReplacer.ARGUMENT_NAME).append("){//资源").append("\n"); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(GroovyExpressionReplacer.ARGUMENT_NAME).append("){//资源").append("\n"); |
|
|
|
String code =node.getCode(); |
|
|
|
String version =node.getVersion(); |
|
|
|
if(version==null || version.trim().equals("")) { |
|
|
@ -225,7 +225,7 @@ public class ExecutionFlow { |
|
|
|
if(edges!=null && edges.size()>0) { |
|
|
|
for(GraphNode edge : edges) { |
|
|
|
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点
|
|
|
|
sb.append("\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(ExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
sb.append("\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(GroovyExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
sb.append("}").append("\n\n"); |
|
|
@ -251,7 +251,7 @@ public class ExecutionFlow { |
|
|
|
*/ |
|
|
|
private String generateConfigurableResourceAbstractGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ConfigurableResourceAbstractNode node,String methodName) { |
|
|
|
StringBuilder sb =new StringBuilder(); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(ExpressionReplacer.ARGUMENT_NAME).append("){//可配置资源").append("\n"); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(GroovyExpressionReplacer.ARGUMENT_NAME).append("){//可配置资源").append("\n"); |
|
|
|
String code =node.getCode(); |
|
|
|
String version =node.getVersion(); |
|
|
|
String inputCommands =node.getInputCommands(); |
|
|
@ -262,19 +262,19 @@ public class ExecutionFlow { |
|
|
|
|
|
|
|
sb.append("\t//准备调用资源的输入参数\n"); |
|
|
|
sb.append("\t").append("Map<String,Object> map =new HashMap<String,Object>();").append("\n"); |
|
|
|
sb.append("\t").append(StringUtil.tabs(ExpressionReplacer.groovy(inputCommands,null),1)).append("\n"); |
|
|
|
sb.append("\t").append(StringUtil.tabs(GroovyExpressionReplacer.groovy(inputCommands,null),1)).append("\n"); |
|
|
|
sb.append("\n"); |
|
|
|
sb.append("\t//调用资源\n"); |
|
|
|
sb.append("\t").append("ResourceResult result =executor.executeByCode(\"").append(code).append("\",").append(version).append(",map);").append("\n"); |
|
|
|
sb.append("\n"); |
|
|
|
sb.append("\t//处理资源调用完毕后的输出值\n"); |
|
|
|
sb.append("\t").append(ExpressionReplacer.groovy(outputCommands,null).replace("\n", "\n\t\t")).append("\n"); |
|
|
|
sb.append("\t").append(GroovyExpressionReplacer.groovy(outputCommands,null).replace("\n", "\n\t\t")).append("\n"); |
|
|
|
//继续调用后续方法
|
|
|
|
List<GraphNode> edges =node.getOuts(); //获取条件的所有出口边
|
|
|
|
if(edges!=null && edges.size()>0) { |
|
|
|
for(GraphNode edge : edges) { |
|
|
|
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点
|
|
|
|
sb.append("\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(ExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
sb.append("\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(GroovyExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
sb.append("}").append("\n\n"); |
|
|
@ -300,7 +300,7 @@ public class ExecutionFlow { |
|
|
|
*/ |
|
|
|
private String generateModelAbstractGroovyCode(Map<String,String> methodNameCache,Parameter parameter,SubModelAbstractNode node,String methodName) { |
|
|
|
StringBuilder sb =new StringBuilder(); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(ExpressionReplacer.ARGUMENT_NAME).append("){//模型").append("\n"); |
|
|
|
sb.append("private static void ").append(methodName).append("(Executor executor,Argument ").append(GroovyExpressionReplacer.ARGUMENT_NAME).append("){//模型").append("\n"); |
|
|
|
String code =node.getCode(); |
|
|
|
sb.append("\t").append("").append(code).append("(executor,arg);\n"); |
|
|
|
//继续调用后续方法
|
|
|
@ -308,7 +308,7 @@ public class ExecutionFlow { |
|
|
|
if(edges!=null && edges.size()>0) { |
|
|
|
for(GraphNode edge : edges) { |
|
|
|
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点
|
|
|
|
sb.append("\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(ExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
sb.append("\t").append("Flow_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(GroovyExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
sb.append("}").append("\n\n"); |
|
|
|