diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/CodeAndNameReplacer.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/CodeAndNameReplacer.java index 098714cb..c5d16c17 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/CodeAndNameReplacer.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/CodeAndNameReplacer.java @@ -3,6 +3,8 @@ package io.sc.engine.rule.server.common; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import java.util.Map; + /** * 代码/名称替换器接口 * 主要是用于在计算机存储和人们阅读之间进行转换,计算机中存储为代码形式,而人们阅读是以名称形式显示 @@ -10,4 +12,5 @@ import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; */ public interface CodeAndNameReplacer { public boolean replace(ParameterAndValueType parameterAndValueType, ReplaceMode mode); + public default boolean replace(Map code2codeMapping) { return false; } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/service/support/ParameterCodeReplacer.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/service/support/ParameterCodeReplacer.java new file mode 100644 index 00000000..778d9a91 --- /dev/null +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/service/support/ParameterCodeReplacer.java @@ -0,0 +1,30 @@ +package io.sc.engine.rule.server.common.service.support; + +import io.sc.platform.util.CollectionUtil; +import io.sc.platform.util.PlaceHolderExpressionUtil; +import io.sc.platform.util.support.PlaceholderExpression; +import io.sc.platform.util.support.PlaceholderExpressionPart; +import org.springframework.util.StringUtils; + +import java.util.List; +import java.util.Map; + +public class ParameterCodeReplacer { + public static String replace(String content,Map mapping) { + List expressions = PlaceHolderExpressionUtil.parse(content); + if(CollectionUtil.hasElements(expressions)){ + for(PlaceholderExpression expression : expressions){ + List parts =expression.getParts(); + if(CollectionUtil.hasElements(parts)){ + for(PlaceholderExpressionPart part : parts){ + String replaced =mapping.get(part.getName()); + if(StringUtils.hasText(replaced)) { + content = content.replace("${" + part.getName() + "}", "${" + replaced + "}"); + } + } + } + } + } + return content; + } +} diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java index bd75960d..4e324e66 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java @@ -16,7 +16,9 @@ import org.springframework.beans.BeanUtils; import javax.persistence.*; import javax.validation.constraints.Size; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 模型实体类 @@ -246,17 +248,35 @@ public class ModelEntity extends CorporationAuditorEntity implements De } //深度拷贝 parameters + Map parameterCodeMapping =new HashMap<>(); List parameters =this.getParameters(); if(parameters!=null && parameters.size()>0) { for(ParameterEntity parameter : parameters) { ParameterEntity clone =(ParameterEntity)parameter.deepClone(); clone.setModel(entity); entity.getParameters().add(clone); + parameterCodeMapping.put(parameter.getCode(),clone.getCode()); } } + entity.clearId(); + entity.setCode("M"+System.currentTimeMillis()); + entity.setName(entity.getName() + "_NEW"); + + List clonedParameters =entity.getParameters(); + if(clonedParameters!=null && clonedParameters.size()>0) { + for(ParameterEntity clonedParameter : clonedParameters) { + List clonedProcessors =clonedParameter.getProcessors(); + if(clonedProcessors!=null && clonedProcessors.size()>0) { + for(ParameterProcessorEntity clonedProcessor : clonedProcessors) { + clonedProcessor.replace(parameterCodeMapping); + } + } + } + } + return entity; } - + @Override public void clearId() { this.setId(null); diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java index a411b315..fab11470 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java @@ -276,9 +276,13 @@ public class ParameterEntity extends CorporationAuditorEntity imple entity.getProcessors().add(clone); } } + + entity.clearId(); + entity.setCode("P"+System.currentTimeMillis()); + entity.setName(entity.getName() + "_NEW"); return entity; } - + @Override public void clearId() { this.setId(null); diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterProcessorEntity.java index bfeb6fc6..022a1bd5 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterProcessorEntity.java @@ -146,6 +146,8 @@ public class ParameterProcessorEntity extends CorporationAuditorEntity code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.arithmetic, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.arithmetic)) { + result =true; + } + this.arithmetic =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ConditionRangeParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ConditionRangeParameterProcessorEntity.java index 11a2f348..5af02549 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ConditionRangeParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ConditionRangeParameterProcessorEntity.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.ConditionRangeParameterProcessorVo; import io.sc.platform.util.ObjectMapperUtil; @@ -14,6 +15,7 @@ import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import java.util.List; +import java.util.Map; /** * 模型参数处理器(条件范围操作)实体类 @@ -59,6 +61,18 @@ public class ConditionRangeParameterProcessorEntity extends ParameterProcessorEn return result; } + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.conditionRange,code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.conditionRange)) { + result =true; + } + this.conditionRange =replaced; + return result; + } + private String replaceJsonString(String json, ParameterAndValueType parameterAndValueType, ReplaceMode mode) { if(!StringUtils.hasText(json)){ return json; diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTable2CParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTable2CParameterProcessorEntity.java index f2a0b77f..9b0cfabb 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTable2CParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTable2CParameterProcessorEntity.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.DecisionTable2CParameterProcessorVo; import io.sc.platform.util.ObjectMapperUtil; @@ -62,6 +63,18 @@ public class DecisionTable2CParameterProcessorEntity extends ParameterProcessorE return result; } + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.decisionTable2C, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.decisionTable2C)) { + result =true; + } + this.decisionTable2C =replaced; + return result; + } + private String replaceJsonString(String json, ParameterAndValueType parameterAndValueType, ReplaceMode mode) { if(!StringUtils.hasText(json)){ return json; diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTableParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTableParameterProcessorEntity.java index d9ade977..6f34a3ae 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTableParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTableParameterProcessorEntity.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.DecisionTableParameterProcessorVo; import io.sc.platform.util.ObjectMapperUtil; @@ -60,6 +61,18 @@ public class DecisionTableParameterProcessorEntity extends ParameterProcessorEnt return result; } + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.decisionTable, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.decisionTable)) { + result =true; + } + this.decisionTable =replaced; + return result; + } + private String replaceJsonString(String json, ParameterAndValueType parameterAndValueType, ReplaceMode mode) { if(!StringUtils.hasText(json)){ return json; diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTreeParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTreeParameterProcessorEntity.java index ca871b9d..099ce574 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTreeParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/DecisionTreeParameterProcessorEntity.java @@ -5,6 +5,7 @@ import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.core.util.ExpressionReplacer; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.DecisionTreeParameterProcessorVo; @@ -56,4 +57,16 @@ public class DecisionTreeParameterProcessorEntity extends ParameterProcessorEnti this.decisionTree =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.decisionTree, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.decisionTree)) { + result =true; + } + this.decisionTree =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ExecutionFlowParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ExecutionFlowParameterProcessorEntity.java index 24779981..904eb4e7 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ExecutionFlowParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ExecutionFlowParameterProcessorEntity.java @@ -4,12 +4,14 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.ExecutionFlowParameterProcessorVo; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.Map; /** * 模型参数处理器(执行流)实体类 @@ -55,4 +57,16 @@ public class ExecutionFlowParameterProcessorEntity extends ParameterProcessorEnt this.executionFlow =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.executionFlow, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.executionFlow)) { + result =true; + } + this.executionFlow =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/GroovyScriptParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/GroovyScriptParameterProcessorEntity.java index 11bdca35..cb939a10 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/GroovyScriptParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/GroovyScriptParameterProcessorEntity.java @@ -4,12 +4,14 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.GroovyScriptParameterProcessorVo; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.Map; /** * 模型参数处理器(脚本代码操作)实体类 @@ -54,4 +56,16 @@ public class GroovyScriptParameterProcessorEntity extends ParameterProcessorEnti this.groovyScript =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.groovyScript, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.groovyScript)) { + result =true; + } + this.groovyScript =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/HttpRequestParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/HttpRequestParameterProcessorEntity.java index b683d372..8be475d2 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/HttpRequestParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/HttpRequestParameterProcessorEntity.java @@ -3,11 +3,13 @@ package io.sc.engine.rule.server.model.entity.processor; import com.fasterxml.jackson.annotation.JsonTypeName; import io.sc.engine.rule.core.enums.*; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.HttpRequestParameterProcessorVo; import io.sc.platform.orm.converter.NumericBooleanConverter; import javax.persistence.*; +import java.util.Map; /** * 模型参数处理器(Http 请求操作)实体类 @@ -339,4 +341,90 @@ public class HttpRequestParameterProcessorEntity extends ParameterProcessorEntit return result; } + + @Override + public boolean replace(Map code2codeMapping) { + // httpUrl + String replaced = ParameterCodeReplacer.replace(this.httpUrl, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.httpUrl)) { + result =true; + } + this.httpUrl =replaced; + + // httpUrlParameterValues + replaced =ParameterCodeReplacer.replace(this.httpUrlParameterValues, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.httpUrlParameterValues)) { + result =true; + } + this.httpUrlParameterValues =replaced; + + // httpAuthBasicUsername; + replaced =ParameterCodeReplacer.replace(this.httpAuthBasicUsername, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.httpAuthBasicUsername)) { + result =true; + } + this.httpAuthBasicUsername =replaced; + + // httpAuthBasicPassword; + replaced =ParameterCodeReplacer.replace(this.httpAuthBasicPassword, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.httpAuthBasicPassword)) { + result =true; + } + this.httpAuthBasicPassword =replaced; + + // BearerToken + replaced =ParameterCodeReplacer.replace(this.httpAuthBearerToken, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.httpAuthBearerToken)) { + result =true; + } + this.httpAuthBearerToken =replaced; + + // httpAuthParameterValues + replaced =ParameterCodeReplacer.replace(this.httpAuthParameterValues, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.httpAuthParameterValues)) { + result =true; + } + this.httpAuthParameterValues =replaced; + + // httpRequestHeader + replaced =ParameterCodeReplacer.replace(this.httpRequestHeader, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.httpRequestHeader)) { + result =true; + } + this.httpRequestHeader =replaced; + + // httpRequestHeaderParameterValues + replaced =ParameterCodeReplacer.replace(this.httpRequestHeaderParameterValues, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.httpRequestHeaderParameterValues)) { + result =true; + } + this.httpRequestHeaderParameterValues =replaced; + + // httpRequestBody + replaced =ParameterCodeReplacer.replace(this.httpRequestBody, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.httpRequestBody)) { + result =true; + } + this.httpRequestBody =replaced; + + // httpRequestBodyParameterValues + replaced =ParameterCodeReplacer.replace(this.httpRequestBodyParameterValues, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.httpRequestBodyParameterValues)) { + result =true; + } + this.httpRequestBodyParameterValues =replaced; + + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/MathFormulaParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/MathFormulaParameterProcessorEntity.java index 00bf25f2..6a999a4b 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/MathFormulaParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/MathFormulaParameterProcessorEntity.java @@ -7,6 +7,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.MathFormulaParameterProcessorVo; import io.sc.platform.util.ObjectMapperUtil; @@ -58,9 +59,18 @@ public class MathFormulaParameterProcessorEntity extends ParameterProcessorEntit if(!replaced.equals(this.mathFormula)) { result =true; } -// if(ReplaceMode.CODE_TO_NAME.equals(mode)) { -// replaced = replaced.replaceAll("\\$\\{(.+?)\\}","$1"); -// } + this.mathFormula =replaced; + return result; + } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.mathFormula, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.mathFormula)) { + result =true; + } this.mathFormula =replaced; return result; } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/NumberRangeParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/NumberRangeParameterProcessorEntity.java index c5088580..251f6a83 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/NumberRangeParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/NumberRangeParameterProcessorEntity.java @@ -4,12 +4,14 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.NumberRangeParameterProcessorVo; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.Map; /** * 模型参数处理器(数值范围操作)实体类 @@ -74,4 +76,23 @@ public class NumberRangeParameterProcessorEntity extends ParameterProcessorEntit this.numberRange =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.numberRangeVar,code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.numberRangeVar)) { + result =true; + } + this.numberRangeVar =replaced; + + replaced =ParameterCodeReplacer.replace(this.numberRange,code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.numberRange)) { + result =true; + } + this.numberRange =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ObjectPropertiesParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ObjectPropertiesParameterProcessorEntity.java index d36226b7..2f17a6cc 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ObjectPropertiesParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ObjectPropertiesParameterProcessorEntity.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.core.type.TypeReference; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.ObjectPropertiesParameterProcessorVo; import io.sc.platform.util.ObjectMapperUtil; @@ -14,6 +15,7 @@ import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import java.util.List; +import java.util.Map; /** * 模型参数处理器(对象属性操作)实体类 @@ -79,6 +81,25 @@ public class ObjectPropertiesParameterProcessorEntity extends ParameterProcessor return result; } + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.objectCondition, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.objectCondition)) { + result =true; + } + this.objectCondition =replaced; + + replaced =ParameterCodeReplacer.replace(this.objectProperties, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.objectProperties)) { + result =true; + } + this.objectProperties =replaced; + return result; + } + private String replaceJsonString(String json, ParameterAndValueType parameterAndValueType, ReplaceMode mode) { if(!StringUtils.hasText(json)){ return json; diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/OptionValueParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/OptionValueParameterProcessorEntity.java index 8f8ec1d8..cb142e67 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/OptionValueParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/OptionValueParameterProcessorEntity.java @@ -4,12 +4,14 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.OptionValueParameterProcessorVo; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.Map; /** * 模型参数处理器(选项值)实体类 @@ -54,4 +56,16 @@ public class OptionValueParameterProcessorEntity extends ParameterProcessorEntit this.optionCode =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.optionCode, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.optionCode)) { + result =true; + } + this.optionCode =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/PmmlParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/PmmlParameterProcessorEntity.java index b38c3a98..2f8855bf 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/PmmlParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/PmmlParameterProcessorEntity.java @@ -4,12 +4,14 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.PmmlParameterProcessorVo; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.Map; /** * 模型参数处理器(PMML)实体类 @@ -54,4 +56,16 @@ public class PmmlParameterProcessorEntity extends ParameterProcessorEntity { this.pmml =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.pmml, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.pmml)) { + result =true; + } + this.pmml =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/RuleSetParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/RuleSetParameterProcessorEntity.java index c78f17ef..4269a079 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/RuleSetParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/RuleSetParameterProcessorEntity.java @@ -4,12 +4,14 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.RuleSetParameterProcessorVo; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.Map; /** * 模型参数处理器(规则)实体类 @@ -55,4 +57,16 @@ public class RuleSetParameterProcessorEntity extends ParameterProcessorEntity { this.ruleSet =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.ruleSet, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.ruleSet)) { + result =true; + } + this.ruleSet =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ScoreCardParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ScoreCardParameterProcessorEntity.java index d9e2bb50..7f24cb4a 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ScoreCardParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/ScoreCardParameterProcessorEntity.java @@ -8,6 +8,7 @@ import io.sc.engine.rule.core.code.generator.impl.processor.NumberRange; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.ScoreCardParameterProcessorVo; import io.sc.platform.util.ObjectMapperUtil; @@ -18,6 +19,7 @@ import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * 模型参数处理器(算数运算操作)实体类 @@ -93,4 +95,50 @@ public class ScoreCardParameterProcessorEntity extends ParameterProcessorEntity this.scoreCard =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + List scoreCardItems =new ArrayList<>(); + try { + if(StringUtils.hasText(this.scoreCard)) { + scoreCardItems = ObjectMapperUtil.json().readValue(this.scoreCard, new TypeReference>() {}); + } + }catch (Exception e){ + + } + if(scoreCardItems!=null && !scoreCardItems.isEmpty()){ + for(ScoreCardItem scoreCardItem : scoreCardItems){ + String replaceCode =code2codeMapping.get(scoreCardItem.getCode()); + if(StringUtils.hasText(replaceCode)) { + scoreCardItem.setCode(replaceCode); + } + List conditionRanges =scoreCardItem.getConditionRange(); + if(conditionRanges!=null && !conditionRanges.isEmpty()){ + for(ConditionRange conditionRange : conditionRanges){ + conditionRange.setCondition(ParameterCodeReplacer.replace(conditionRange.getCondition(), code2codeMapping)); + conditionRange.setValue(ParameterCodeReplacer.replace(conditionRange.getValue(), code2codeMapping)); + } + } + List numberRanges =scoreCardItem.getNumberRange(); + if(numberRanges!=null && !numberRanges.isEmpty()){ + for(NumberRange numberRange : numberRanges){ + numberRange.setValue(ParameterCodeReplacer.replace(numberRange.getValue(), code2codeMapping)); + } + } + } + } + String replaced =""; + try { + replaced = ObjectMapperUtil.json().writeValueAsString(scoreCardItems); + }catch (Exception e){ + + } + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.scoreCard)) { + result =true; + } + this.scoreCard =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/SingleRuleParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/SingleRuleParameterProcessorEntity.java index 984c65c8..8f9a5035 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/SingleRuleParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/SingleRuleParameterProcessorEntity.java @@ -5,6 +5,7 @@ import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.core.util.ExpressionReplacer; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.SingleRuleParameterProcessorVo; @@ -56,4 +57,16 @@ public class SingleRuleParameterProcessorEntity extends ParameterProcessorEntity this.singleRule =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.singleRule, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.singleRule)) { + result =true; + } + this.singleRule =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/SqlParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/SqlParameterProcessorEntity.java index 5d64fd70..e6e09a3a 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/SqlParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/SqlParameterProcessorEntity.java @@ -4,12 +4,14 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.SqlParameterProcessorVo; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.Map; /** * 模型参数处理器(Sql操作)实体类 @@ -100,4 +102,30 @@ public class SqlParameterProcessorEntity extends ParameterProcessorEntity { this.sqlFieldMapping =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.sql, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.sql)) { + result =true; + } + this.sql =replaced; + + replaced =ParameterCodeReplacer.replace(this.sqlParameterValues, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.sqlParameterValues)) { + result =true; + } + this.sqlParameterValues =replaced; + + replaced =ParameterCodeReplacer.replace(this.sqlFieldMapping, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.sqlFieldMapping)) { + result =true; + } + this.sqlFieldMapping =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/TernaryParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/TernaryParameterProcessorEntity.java index b1ea625f..7ac9eadf 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/TernaryParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/TernaryParameterProcessorEntity.java @@ -3,13 +3,20 @@ package io.sc.engine.rule.server.model.entity.processor; import com.fasterxml.jackson.annotation.JsonTypeName; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; +import io.sc.engine.rule.core.util.PlaceHolderEnumExpressionUtil; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.TernaryParameterProcessorVo; +import io.sc.platform.util.CollectionUtil; +import io.sc.platform.util.PlaceHolderExpressionUtil; +import io.sc.platform.util.support.PlaceholderExpression; import javax.persistence.Column; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.List; +import java.util.Map; /** * 模型参数处理器(三元操作)实体类 @@ -94,4 +101,30 @@ public class TernaryParameterProcessorEntity extends ParameterProcessorEntity { this.ternaryFalse =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced =ParameterCodeReplacer.replace(this.ternaryCondition,code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.ternaryCondition)) { + result =true; + } + this.ternaryCondition =replaced; + + replaced =ParameterCodeReplacer.replace(this.ternaryTrue,code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.ternaryTrue)) { + result =true; + } + this.ternaryTrue =replaced; + + replaced =ParameterCodeReplacer.replace(this.ternaryFalse,code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.ternaryFalse)) { + result =true; + } + this.ternaryFalse =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/WhenThenParameterProcessorEntity.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/WhenThenParameterProcessorEntity.java index dc5493eb..37a44c08 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/WhenThenParameterProcessorEntity.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/WhenThenParameterProcessorEntity.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import io.sc.engine.rule.core.enums.ProcessorType; import io.sc.engine.rule.core.enums.ReplaceMode; import io.sc.engine.rule.server.common.service.support.ParameterAndValueType; +import io.sc.engine.rule.server.common.service.support.ParameterCodeReplacer; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.vo.processor.WhenThenParameterProcessorVo; import io.sc.platform.orm.converter.NumericBooleanConverter; @@ -12,6 +13,7 @@ import javax.persistence.Column; import javax.persistence.Convert; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; +import java.util.Map; /** * 模型参数处理器(WhenThen操作)实体类 @@ -90,4 +92,23 @@ public class WhenThenParameterProcessorEntity extends ParameterProcessorEntity { this.then =replaced; return result; } + + @Override + public boolean replace(Map code2codeMapping) { + String replaced = ParameterCodeReplacer.replace(this.when, code2codeMapping); + replaced =(replaced==null?"":replaced); + boolean result =false; + if(!replaced.equals(this.when)) { + result =true; + } + this.when =replaced; + + replaced =ParameterCodeReplacer.replace(this.then, code2codeMapping); + replaced =(replaced==null?"":replaced); + if(!replaced.equals(this.then)) { + result =true; + } + this.then =replaced; + return result; + } } diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ModelServiceImpl.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ModelServiceImpl.java index 85e986ac..b4a3d65e 100644 --- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ModelServiceImpl.java +++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ModelServiceImpl.java @@ -137,9 +137,6 @@ public class ModelServiceImpl extends DaoServiceImpl