Browse Source

前端核心发布: 8.2.80

1) 修复画图组件新复制的图形的 parent 不是当前画布的第一个容器 id 的 bug.

基础框架发布: 8.2.18
  1) 修复规则引擎的决策树和决策表中引入枚举变量是的无法编译的问题。
  2)增加规则引擎导出时的文件添加类型标识(_model.json:模型; _lib.json: 特征库; _meta.json: 元数据)
  3) 修复规则引擎深度复制(新)出现错误的 Bug
main
wangshaoping 2 weeks ago
parent
commit
494dbd208b
  1. 4
      cips.frontend/package.json
  2. 4
      erm.frontend/package.json
  3. 4
      gradle.properties
  4. 4
      io.sc.engine.mv.frontend/package.json
  5. 23
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/processor/DecisionTree.java
  6. 36
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/processor/ExecutionFlow.java
  7. 4
      io.sc.engine.rule.frontend/package.json
  8. 2
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/controller/DictionaryWebController.java
  9. 2
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/controller/LibWebController.java
  10. 4
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterEntityConverter.java
  11. 16
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/InOptionParameterEntity.java
  12. 2
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/controller/ResourceWebController.java
  13. 4
      io.sc.engine.st.frontend/package.json
  14. 4
      io.sc.platform.ai.frontend/package.json
  15. 2
      io.sc.platform.core.frontend/package.json
  16. 7
      io.sc.platform.core.frontend/src/platform/components/graph/handler/PlatformKeyBindHandler.ts
  17. 1
      io.sc.platform.core.frontend/src/views/testcase/maxgraph/AutoCompletionManager.ts
  18. 4
      io.sc.platform.core.frontend/template-project/package.json
  19. 1
      io.sc.platform.core.frontend/template-project/src/views/testcase/maxgraph/AutoCompletionManager.ts
  20. 4
      io.sc.platform.developer.doc/package.json
  21. 4
      io.sc.platform.developer.frontend/package.json
  22. 4
      io.sc.platform.lcdp.frontend/package.json
  23. 4
      io.sc.platform.license.keygen.frontend/package.json
  24. 4
      io.sc.platform.mvc.frontend/package.json
  25. 4
      io.sc.platform.scheduler.manager.frontend/package.json
  26. 4
      io.sc.platform.system.frontend/package.json
  27. 4
      io.sc.standard.frontend/package.json
  28. 4
      io.sc.website/package.json
  29. 4
      wra.report.frontend/package.json

4
cips.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "cips.frontend", "name": "cips.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
erm.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "erm.frontend", "name": "erm.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
gradle.properties

@ -37,9 +37,9 @@ application_version=1.0.0
# platform # platform
########################################################### ###########################################################
platform_group=io.sc platform_group=io.sc
platform_version=8.2.17 platform_version=8.2.18
platform_plugin_version=8.2.10 platform_plugin_version=8.2.10
platform_core_frontend_version=8.2.79 platform_core_frontend_version=8.2.80
########################################################### ###########################################################
# dependencies version # dependencies version

4
io.sc.engine.mv.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.engine.mv.frontend", "name": "io.sc.engine.mv.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

23
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/processor/DecisionTree.java

@ -4,8 +4,7 @@ import io.sc.engine.rule.core.mxgraph.parser.DecisionTreeParser;
import io.sc.engine.rule.core.mxgraph.po.*; 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.Parameter;
import io.sc.engine.rule.core.po.model.processor.DecisionTreeParameterProcessor; import io.sc.engine.rule.core.po.model.processor.DecisionTreeParameterProcessor;
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; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -81,7 +80,7 @@ public class DecisionTree {
*/ */
private String generateConditionGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ConditionNode conditionNode,String methodName) { private String generateConditionGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ConditionNode conditionNode,String methodName) {
StringBuilder sb =new StringBuilder(); StringBuilder sb =new StringBuilder();
sb.append("private static ").append(parameter.getValueType()).append(" ").append(methodName).append("(Executor executor,Argument ").append(ExpressionReplacer.ARGUMENT_NAME).append("){//条件判断").append("\n"); sb.append("private static ").append(parameter.getValueType()).append(" ").append(methodName).append("(Executor executor,Argument ").append(GroovyExpressionReplacer.ARGUMENT_NAME).append("){//条件判断").append("\n");
List<GraphNode> branches =conditionNode.getOuts(); //获取条件的所有出口边 List<GraphNode> branches =conditionNode.getOuts(); //获取条件的所有出口边
if(branches!=null && branches.size()>0) { if(branches!=null && branches.size()>0) {
List<GraphNode> outs =orderEdges(branches); //对出口边进行排序,有条件的放前面,无条件的放后面 List<GraphNode> outs =orderEdges(branches); //对出口边进行排序,有条件的放前面,无条件的放后面
@ -90,10 +89,10 @@ public class DecisionTree {
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点 GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点
if(i==0) { if(i==0) {
sb.append("\tif((").append(ExpressionReplacer.groovy(conditionNode.getCondition(),null)).append(")==").append(ExpressionReplacer.groovy(edge.getValue(),edge.getValueType())).append("){").append("\n"); sb.append("\tif((").append(GroovyExpressionReplacer.groovy(conditionNode.getCondition(),null)).append(")==").append(GroovyExpressionReplacer.groovy(edge.getValue(),edge.getValueType())).append("){").append("\n");
}else { }else {
if(edge.getValue()!=null && !edge.getValue().trim().isEmpty()) { if(edge.getValue()!=null && !edge.getValue().trim().isEmpty()) {
sb.append("else if((").append(ExpressionReplacer.groovy(conditionNode.getCondition(),null)).append(")==").append(ExpressionReplacer.groovy(edge.getValue(),edge.getValueType())).append("){").append("\n"); sb.append("else if((").append(GroovyExpressionReplacer.groovy(conditionNode.getCondition(),null)).append(")==").append(GroovyExpressionReplacer.groovy(edge.getValue(),edge.getValueType())).append("){").append("\n");
}else { }else {
sb.append("else {").append("\n"); sb.append("else {").append("\n");
} }
@ -107,7 +106,7 @@ public class DecisionTree {
} }
} }
} }
sb.append("\t\t").append("return Tree_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(ExpressionReplacer.ARGUMENT_NAME).append(");").append("\n"); sb.append("\t\t").append("return Tree_").append(parameter.getCode()).append("_").append(nexNode.getId()).append("(").append("executor,").append(GroovyExpressionReplacer.ARGUMENT_NAME).append(");").append("\n");
sb.append("\t}"); sb.append("\t}");
} }
sb.append("\n}\n\n"); sb.append("\n}\n\n");
@ -129,13 +128,13 @@ public class DecisionTree {
*/ */
private String generateExpressionGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ExpressionNode expressionNode,String methodName) { private String generateExpressionGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ExpressionNode expressionNode,String methodName) {
StringBuilder sb =new StringBuilder(); StringBuilder sb =new StringBuilder();
sb.append("private static ").append(parameter.getValueType()).append(" ").append(methodName).append("(Executor executor,Argument ").append(ExpressionReplacer.ARGUMENT_NAME).append("){//表达式").append("\n"); sb.append("private static ").append(parameter.getValueType()).append(" ").append(methodName).append("(Executor executor,Argument ").append(GroovyExpressionReplacer.ARGUMENT_NAME).append("){//表达式").append("\n");
String expression =expressionNode.getExpression(); String expression =expressionNode.getExpression();
String commands =expressionNode.getCommands(); String commands =expressionNode.getCommands();
if(commands!=null && !commands.isEmpty()) { 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");
} }
sb.append("\t").append("return ").append(ExpressionReplacer.groovy(expression,parameter.getValueType())).append(";\n"); sb.append("\t").append("return ").append(GroovyExpressionReplacer.groovy(expression,parameter.getValueType())).append(";\n");
sb.append("}").append("\n\n"); sb.append("}").append("\n\n");
return sb.toString(); return sb.toString();
@ -151,9 +150,9 @@ public class DecisionTree {
*/ */
private String generateResourceAbstractGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ResourceAbstractNode expressionNode,String methodName) { private String generateResourceAbstractGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ResourceAbstractNode expressionNode,String methodName) {
StringBuilder sb =new StringBuilder(); StringBuilder sb =new StringBuilder();
sb.append("private static ").append(parameter.getValueType()).append(" ").append(methodName).append("(Executor executor,Argument ").append(ExpressionReplacer.ARGUMENT_NAME).append("){//资源").append("\n"); sb.append("private static ").append(parameter.getValueType()).append(" ").append(methodName).append("(Executor executor,Argument ").append(GroovyExpressionReplacer.ARGUMENT_NAME).append("){//资源").append("\n");
String code =ExpressionReplacer.groovy(expressionNode.getCode(),String.class.getName()); String code =GroovyExpressionReplacer.groovy(expressionNode.getCode(),String.class.getName());
String version =ExpressionReplacer.groovy(expressionNode.getVersion(),Long.class.getName()); String version =GroovyExpressionReplacer.groovy(expressionNode.getVersion(),Long.class.getName());
if(version==null || version.trim().isEmpty()) { if(version==null || version.trim().isEmpty()) {
version ="null"; version ="null";
} }

36
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/generator/impl/processor/ExecutionFlow.java

@ -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.mxgraph.po.*;
import io.sc.engine.rule.core.po.model.Parameter; 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.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 io.sc.platform.util.StringUtil;
import java.util.ArrayList; import java.util.ArrayList;
@ -101,7 +101,7 @@ public class ExecutionFlow {
*/ */
private String generateConditionGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ConditionNode node,String methodName) { private String generateConditionGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ConditionNode node,String methodName) {
StringBuilder sb =new StringBuilder(); 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(); //获取条件的所有出口边 List<GraphNode> branches =node.getOuts(); //获取条件的所有出口边
if(branches!=null && branches.size()>0) { if(branches!=null && branches.size()>0) {
List<GraphNode> outs =orderEdges(branches); //对出口边进行排序,有条件的放前面,无条件的放后面 List<GraphNode> outs =orderEdges(branches); //对出口边进行排序,有条件的放前面,无条件的放后面
@ -109,10 +109,10 @@ public class ExecutionFlow {
EdgeConditionBranchNode edge =(EdgeConditionBranchNode)outs.get(i); //出口边 EdgeConditionBranchNode edge =(EdgeConditionBranchNode)outs.get(i); //出口边
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点 GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点
if(i==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 { }else {
if(edge.getValue()!=null && !edge.getValue().trim().isEmpty()) { 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 { }else {
sb.append("else {").append("\n"); 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("\t}");
} }
sb.append("\n}\n\n"); 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) { private String generateParallelGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ParallelNode node,String methodName) {
StringBuilder sb =new StringBuilder(); 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(); //获取条件的所有出口边 List<GraphNode> outs =node.getOuts(); //获取条件的所有出口边
if(outs!=null && outs.size()>0) { if(outs!=null && outs.size()>0) {
for(int i=0;i<outs.size();i++) { for(int i=0;i<outs.size();i++) {
EdgeNode edge =(EdgeNode)outs.get(i); //出口边 EdgeNode edge =(EdgeNode)outs.get(i); //出口边
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点 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"); sb.append("}\n\n");
//继续生成后续方法 //继续生成后续方法
@ -176,16 +176,16 @@ public class ExecutionFlow {
*/ */
private String generateCommandSetGroovyCode(Map<String,String> methodNameCache,Parameter parameter,CommandSetNode node,String methodName) { private String generateCommandSetGroovyCode(Map<String,String> methodNameCache,Parameter parameter,CommandSetNode node,String methodName) {
StringBuilder sb =new StringBuilder(); 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(); String commands =node.getCommands();
if(commands!=null && !commands.isEmpty()) { 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(); //获取条件的所有出口边 List<GraphNode> edges =node.getOuts(); //获取条件的所有出口边
if(edges!=null && edges.size()>0) { if(edges!=null && edges.size()>0) {
for(GraphNode edge : edges) { for(GraphNode edge : edges) {
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点 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) { private String generateResourceAbstractGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ResourceAbstractNode node,String methodName) {
StringBuilder sb =new StringBuilder(); 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 code =node.getCode();
String version =node.getVersion(); String version =node.getVersion();
if(version==null || version.trim().equals("")) { if(version==null || version.trim().equals("")) {
@ -225,7 +225,7 @@ public class ExecutionFlow {
if(edges!=null && edges.size()>0) { if(edges!=null && edges.size()>0) {
for(GraphNode edge : edges) { for(GraphNode edge : edges) {
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点 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"); 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) { private String generateConfigurableResourceAbstractGroovyCode(Map<String,String> methodNameCache,Parameter parameter,ConfigurableResourceAbstractNode node,String methodName) {
StringBuilder sb =new StringBuilder(); 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 code =node.getCode();
String version =node.getVersion(); String version =node.getVersion();
String inputCommands =node.getInputCommands(); String inputCommands =node.getInputCommands();
@ -262,19 +262,19 @@ public class ExecutionFlow {
sb.append("\t//准备调用资源的输入参数\n"); sb.append("\t//准备调用资源的输入参数\n");
sb.append("\t").append("Map<String,Object> map =new HashMap<String,Object>();").append("\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("\n");
sb.append("\t//调用资源\n"); sb.append("\t//调用资源\n");
sb.append("\t").append("ResourceResult result =executor.executeByCode(\"").append(code).append("\",").append(version).append(",map);").append("\n"); sb.append("\t").append("ResourceResult result =executor.executeByCode(\"").append(code).append("\",").append(version).append(",map);").append("\n");
sb.append("\n"); sb.append("\n");
sb.append("\t//处理资源调用完毕后的输出值\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(); //获取条件的所有出口边 List<GraphNode> edges =node.getOuts(); //获取条件的所有出口边
if(edges!=null && edges.size()>0) { if(edges!=null && edges.size()>0) {
for(GraphNode edge : edges) { for(GraphNode edge : edges) {
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点 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"); 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) { private String generateModelAbstractGroovyCode(Map<String,String> methodNameCache,Parameter parameter,SubModelAbstractNode node,String methodName) {
StringBuilder sb =new StringBuilder(); 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 code =node.getCode();
sb.append("\t").append("").append(code).append("(executor,arg);\n"); sb.append("\t").append("").append(code).append("(executor,arg);\n");
//继续调用后续方法 //继续调用后续方法
@ -308,7 +308,7 @@ public class ExecutionFlow {
if(edges!=null && edges.size()>0) { if(edges!=null && edges.size()>0) {
for(GraphNode edge : edges) { for(GraphNode edge : edges) {
GraphNode nexNode =edge.getOuts().get(0); //出口边指向的节点 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"); sb.append("}").append("\n\n");

4
io.sc.engine.rule.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.engine.rule.frontend", "name": "io.sc.engine.rule.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/controller/DictionaryWebController.java

@ -158,7 +158,7 @@ public class DictionaryWebController extends RestCrudController<DictionaryVo, Di
if(po!=null) { if(po!=null) {
String json = ObjectMapperUtil.json().writeValueAsString(po); String json = ObjectMapperUtil.json().writeValueAsString(po);
InputStream in =new ByteArrayInputStream(json.getBytes("UTF-8")); InputStream in =new ByteArrayInputStream(json.getBytes("UTF-8"));
FileDownloader.download(request, response, po.getName() + ".json", in); FileDownloader.download(request, response, po.getName() + "_meta.json", in);
} }
} }

2
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/controller/LibWebController.java

@ -137,7 +137,7 @@ public class LibWebController extends RestCrudController<LibVo,LibEntity,String,
if(po!=null) { if(po!=null) {
String json =ObjectMapperUtil.json().writeValueAsString(po); String json =ObjectMapperUtil.json().writeValueAsString(po);
InputStream in =new ByteArrayInputStream(json.getBytes("UTF-8")); InputStream in =new ByteArrayInputStream(json.getBytes("UTF-8"));
FileDownloader.download(request, response, po.getName() + ".json", in); FileDownloader.download(request, response, po.getName() + "_lib.json", in);
} }
} }

4
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterEntityConverter.java

@ -35,7 +35,7 @@ public class ParameterEntityConverter {
InOptionParameterEntity _entity =(InOptionParameterEntity)entity; InOptionParameterEntity _entity =(InOptionParameterEntity)entity;
InOptionParameter _po =new InOptionParameter(); InOptionParameter _po =new InOptionParameter();
_po.setOptions(ParameterInOptionItemEntityConverter.toPo(_entity.getOptions())); _po.setOptions(ParameterInOptionItemEntityConverter.toPo(_entity.getOptions()));
_po.setAdditons(ParameterInOptionAdditionEntityConverter.toPo(_entity.getAddtions())); _po.setAdditons(ParameterInOptionAdditionEntityConverter.toPo(_entity.getAdditions()));
po =_po; po =_po;
}else if(entity instanceof InSubOutParameterEntity) { }else if(entity instanceof InSubOutParameterEntity) {
po =new InSubOutParameter(); po =new InSubOutParameter();
@ -117,7 +117,7 @@ public class ParameterEntityConverter {
addition.setParameter(_entity); addition.setParameter(_entity);
} }
} }
_entity.setAddtions(additions); _entity.setAdditions(additions);
entity =_entity; entity =_entity;
}else if(po instanceof InSubOutParameter) { }else if(po instanceof InSubOutParameter) {
entity =new InSubOutParameterEntity(); entity =new InSubOutParameterEntity();

16
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/InOptionParameterEntity.java

@ -25,7 +25,7 @@ public class InOptionParameterEntity extends ParameterEntity {
//补录项列表 //补录项列表
@OneToMany(mappedBy="parameter",cascade= {CascadeType.PERSIST}) @OneToMany(mappedBy="parameter",cascade= {CascadeType.PERSIST})
@OrderBy("order") @OrderBy("order")
protected List<ParameterInOptionAdditionEntity> addtions =new ArrayList<>(); protected List<ParameterInOptionAdditionEntity> additions =new ArrayList<>();
@Override @Override
public InOptionParameterVo toVo() { public InOptionParameterVo toVo() {
@ -51,11 +51,11 @@ public class InOptionParameterEntity extends ParameterEntity {
public void setOptions(List<ParameterInOptionItemEntity> options) { public void setOptions(List<ParameterInOptionItemEntity> options) {
this.options = options; this.options = options;
} }
public List<ParameterInOptionAdditionEntity> getAddtions() { public List<ParameterInOptionAdditionEntity> getAdditions() {
return addtions; return additions;
} }
public void setAddtions(List<ParameterInOptionAdditionEntity> addtions) { public void setAdditions(List<ParameterInOptionAdditionEntity> additions) {
this.addtions = addtions; this.additions = additions;
} }
@Override @Override
@ -93,12 +93,12 @@ public class InOptionParameterEntity extends ParameterEntity {
} }
//additions //additions
List<ParameterInOptionAdditionEntity> additions =this.getAddtions(); List<ParameterInOptionAdditionEntity> additions =this.getAdditions();
if(additions!=null && additions.size()>0) { if(additions!=null && additions.size()>0) {
for(ParameterInOptionAdditionEntity addition : additions) { for(ParameterInOptionAdditionEntity addition : additions) {
ParameterInOptionAdditionEntity clone =(ParameterInOptionAdditionEntity)addition.deepClone(); ParameterInOptionAdditionEntity clone =(ParameterInOptionAdditionEntity)addition.deepClone();
clone.setParameter(entity); clone.setParameter(entity);
entity.getAddtions().add(clone); entity.getAdditions().add(clone);
} }
} }
return entity; return entity;
@ -115,7 +115,7 @@ public class InOptionParameterEntity extends ParameterEntity {
} }
} }
//additions //additions
List<ParameterInOptionAdditionEntity> additions =this.getAddtions(); List<ParameterInOptionAdditionEntity> additions =this.getAdditions();
if(additions!=null && additions.size()>0) { if(additions!=null && additions.size()>0) {
for(ParameterInOptionAdditionEntity addition : additions) { for(ParameterInOptionAdditionEntity addition : additions) {
addition.clearId(); addition.clearId();

2
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/controller/ResourceWebController.java

@ -236,7 +236,7 @@ public class ResourceWebController extends RestCrudController<ResourceVo, Resour
if(po!=null) { if(po!=null) {
String json =ObjectMapperUtil.json().writeValueAsString(po); String json =ObjectMapperUtil.json().writeValueAsString(po);
InputStream in =new ByteArrayInputStream(json.getBytes("UTF-8")); InputStream in =new ByteArrayInputStream(json.getBytes("UTF-8"));
FileDownloader.download(request, response, po.getName() + ".json", in); FileDownloader.download(request, response, po.getName() + "_model.json", in);
} }
} }

4
io.sc.engine.st.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.engine.st.frontend", "name": "io.sc.engine.st.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.ai.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.ai.frontend", "name": "io.sc.platform.ai.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

2
io.sc.platform.core.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "platform-core", "name": "platform-core",
"version": "8.2.79", "version": "8.2.80",
"description": "前端核心包,用于快速构建前端的脚手架", "description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件", "//main": "库的主文件",
"main": "dist/platform-core.js", "main": "dist/platform-core.js",

7
io.sc.platform.core.frontend/src/platform/components/graph/handler/PlatformKeyBindHandler.ts

@ -39,13 +39,12 @@ export class PlatformKeyBindHandler implements GraphPlugin {
return; return;
} }
const model = this.graph.getDataModel(); const model = this.graph.getDataModel();
const parent = model.getRoot().getChildAt(0); // id=1 的节点
const importedModel: GraphDataModel = new GraphDataModel(); const importedModel: GraphDataModel = new GraphDataModel();
new ModelXmlSerializer(importedModel).import(xml); new ModelXmlSerializer(importedModel).import(xml);
model.beginUpdate(); model.beginUpdate();
const importedCells: Cell[] = this.graph.importCells(importedModel.getRoot()?.children, 0, 0, model.getRoot()); const importedCells: Cell[] = this.graph.importCells(importedModel.getRoot()?.children[0].children, 10, 10, parent);
const cells = importedCells[0].children; this.graph.setSelectionCells(importedCells);
this.graph.moveCells(cells, 10, 10);
this.graph.setSelectionCells(cells);
model.endUpdate(); model.endUpdate();
}; };

1
io.sc.platform.core.frontend/src/views/testcase/maxgraph/AutoCompletionManager.ts

@ -216,7 +216,6 @@ class AutoCompletionManager {
} }
public autoCompletion(): any { public autoCompletion(): any {
console.log('????');
return (context: any) => { return (context: any) => {
return this.doAutoCompletion(context); return this.doAutoCompletion(context);
}; };

4
io.sc.platform.core.frontend/template-project/package.json

@ -1,6 +1,6 @@
{ {
"name": "platform-core", "name": "platform-core",
"version": "8.2.79", "version": "8.2.80",
"description": "前端核心包,用于快速构建前端的脚手架", "description": "前端核心包,用于快速构建前端的脚手架",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

1
io.sc.platform.core.frontend/template-project/src/views/testcase/maxgraph/AutoCompletionManager.ts

@ -216,7 +216,6 @@ class AutoCompletionManager {
} }
public autoCompletion(): any { public autoCompletion(): any {
console.log('????');
return (context: any) => { return (context: any) => {
return this.doAutoCompletion(context); return this.doAutoCompletion(context);
}; };

4
io.sc.platform.developer.doc/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.developer.doc", "name": "io.sc.platform.developer.doc",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@ -28,7 +28,7 @@
"vuepress": "2.0.0-rc.15" "vuepress": "2.0.0-rc.15"
}, },
"dependencies": { "dependencies": {
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"vue": "3.5.13", "vue": "3.5.13",
"vue-i18n": "11.0.1" "vue-i18n": "11.0.1"

4
io.sc.platform.developer.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.developer.frontend", "name": "io.sc.platform.developer.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.lcdp.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.lcdp.frontend", "name": "io.sc.platform.lcdp.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.license.keygen.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.license.keygen.frontend", "name": "io.sc.platform.license.keygen.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.mvc.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.mvc.frontend", "name": "io.sc.platform.mvc.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.scheduler.manager.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.scheduler.manager.frontend", "name": "io.sc.platform.scheduler.manager.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.platform.system.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.platform.system.frontend", "name": "io.sc.platform.system.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.standard.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.standard.frontend", "name": "io.sc.standard.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"pinia-undo": "0.2.4", "pinia-undo": "0.2.4",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

4
io.sc.website/package.json

@ -1,6 +1,6 @@
{ {
"name": "io.sc.website", "name": "io.sc.website",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@ -28,6 +28,6 @@
}, },
"dependencies": { "dependencies": {
"vue": "3.5.13", "vue": "3.5.13",
"platform-core": "8.2.79" "platform-core": "8.2.80"
} }
} }

4
wra.report.frontend/package.json

@ -1,6 +1,6 @@
{ {
"name": "wra.report.frontend", "name": "wra.report.frontend",
"version": "8.2.17", "version": "8.2.18",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.6", "node-sql-parser": "5.3.6",
"pinia": "2.3.0", "pinia": "2.3.0",
"platform-core": "8.2.79", "platform-core": "8.2.80",
"quasar": "2.17.6", "quasar": "2.17.6",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.7", "svg-path-commander": "2.1.7",

Loading…
Cancel
Save