diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/argument_render.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/argument_render.tpl deleted file mode 100644 index c46af8bf..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/argument_render.tpl +++ /dev/null @@ -1,49 +0,0 @@ -#define renderArgument(model) -@JsonIgnoreProperties(ignoreUnknown=true) -class Argument { - #(tabs(ParameterGenerator.generateFields(model.getAllParameters()),1)) - - public static Argument convertArgument(Map map){ - if(map!=null){ - Argument arg =new Argument(); - #(tabs(ParameterGenerator.generateConvertorFromMap(model.getAllParameters()),3)) - return arg; - } - return null; - } - - public static Argument convertArgument(String json){ - if(json!=null && !"".equals(json.trim())){ - Argument arg =ObjectMapperUtil.json().readValue(json, Argument.class); - #(tabs(ParameterGenerator.generateConvertorFromJson(model.getAllParameters()),3)) - return arg; - } - } - - public void validate(ValidateResult result) { - #(tabs(ParameterGenerator.generateValidator(model.getAllParameters()),2)) - } - - public void mergeParameterValueFromIndicatorLib(Map libs){ - #(tabs(ParameterGenerator.generateMergeParameterValueFromIndicatorLib(model.getAllParameters()),2)) - } - - public ResourceResult toResult(){ - ResourceResult result =new ResourceResult(); - #(tabs(ParameterGenerator.generateToResult(model.getAllParameters()),2)) - return result; - } - - public Map toMap(){ - Map map =new HashMap(); - #(tabs(ParameterGenerator.generateToMap(model.getAllParameters()),2)) - return map; - } - - public void mergeResult(ResourceResult result){ - if(result!=null){ - #(tabs(ParameterGenerator.generateMergeResult(model.getAllParameters()),3)) - } - } -} -#end \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/dictionary_render.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/dictionary_render.tpl deleted file mode 100644 index bd3b307b..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/dictionary_render.tpl +++ /dev/null @@ -1,13 +0,0 @@ -#define renderDictionary(dictionary) -/** - * #(dictionary.name) - */ -@JsonIgnoreProperties(ignoreUnknown=true) -class #(className(dictionary.code,dictionary.version)) { - #(tabs(DictionaryGenerator.generateFields(dictionary.getFields()),1)) - - public void init(){ - #(tabs(DictionaryGenerator.generateInits(dictionary.getFields()),2)) - } -} -#end \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/functions_render.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/functions_render.tpl deleted file mode 100644 index a6443382..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/functions_render.tpl +++ /dev/null @@ -1,7 +0,0 @@ -#define renderFunction(function) - - /** - * #(function.description) - */ - #(tabs(function.body,1)) -#end \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/impl/lib.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/impl/lib.tpl deleted file mode 100644 index 8f633187..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/impl/lib.tpl +++ /dev/null @@ -1,173 +0,0 @@ -#set(dictionaries =executeUnit.dictionaries) -#set(lib =executeUnit.lib) - -####################################### -### 模版函数 -####################################### -#include("/io/sc/engine/rule/core/code/template/package_render.tpl") -#include("/io/sc/engine/rule/core/code/template/import_render.tpl") -#include("/io/sc/engine/rule/core/code/template/functions_render.tpl") -#include("/io/sc/engine/rule/core/code/template/dictionary_render.tpl") -#include("/io/sc/engine/rule/core/code/template/lib_render.tpl") - -#@renderPackage(packageName) - -#@renderImport() - -//****************************************************************************** -// 自定义函数 -//****************************************************************************** -class UDF { -#for(function : executeUnit.functions) - #@renderFunction(function) -#end -} - -//****************************************************************************** -// 执行主体类 -//****************************************************************************** -/** - * type: #(executeUnit.type) - * code: #(lib.code), - * name: #(lib.name), - * version: #(lib.version) - */ -class #(className(lib.code,lib.version)) { - private static final Logger log =LoggerFactory.getLogger(#(className(lib.code,lib.version)).class); - - /** - * 执行方法(Map作为输入参数,该 Map 封装了调用模型的参数) - * @param map 输入参数封装器 - * @return 执行结果 - */ - public static ResourceResult execute(Map map) throws Exception { - return execute(map["executor"],map["subModelCode"],map["argument"]); - } - - public static ResourceResult execute(Executor executor,String subModelCode,Object data) throws Exception { - if(log.isDebugEnabled()){log.debug("开始执行指标库 : #(className(lib.code,lib.version))");} - if(data instanceof Map){ - if(log.isDebugEnabled()){log.debug("显示输入参数(Map)=================================================\n{}",ObjectMapperUtil.json().writeValueAsString(data));} - }else if(data instanceof String){ - if(log.isDebugEnabled()){log.debug("显示输入参数(Json字符串)=================================================\n{}",data);} - } - if(log.isDebugEnabled()){log.debug("初始化指标库参数");} - Argument arg =Argument.convertArgument(data); - - if(log.isDebugEnabled()){log.debug("开始检查指标库输入参数数据合法性");} - ValidateResult validateResult =new ValidateResult(); - arg.validate(validateResult); - if(validateResult.hasError()){ - if(log.isDebugEnabled()){log.debug("\t检查结果: 失败!");} - ResourceResult result =new ResourceResult(); - result.setValidateResult(validateResult); - return result; - } - if(log.isDebugEnabled()){log.debug("\t检查结果: 成功!");} - - #for(indicator : lib.indicators) - #if("INDICATOR"==indicator.type.toString()) - #(methodName(indicator.code))(executor,arg);//#(indicator.name),#(indicator.type) - #end - #end - - //返回结果 - ResourceResult result =arg.toResult(); - if(log.isDebugEnabled()){log.debug("指标库调用成功,返回结果:\n{}",ObjectMapperUtil.json().writeValueAsString(result));} - return result; - } - -#for(indicator : lib.indicators) - #if("INDICATOR"==indicator.type.toString()) - #set(parameter=indicator) - - public static void #(methodName(indicator.code))(Executor executor,Argument arg) { - #for(processor : indicator.processors) - if(log.isDebugEnabled()){log.debug(" {}","#(parameter.name)(#(parameter.type))");} - #switch (processor.type.toString()) - #case ("ARITHMETIC") - //算数运算 - #include("/io/sc/engine/rule/core/code/template/processor/arithmetic.tpl") - if(log.isDebugEnabled()){log.debug(" 算数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("CONDITION_RANGE") - //条件分段函数 - #include("/io/sc/engine/rule/core/code/template/processor/conditionRange.tpl") - if(log.isDebugEnabled()){log.debug(" 条件分段函数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("GROOVY_SCRIPT") - //Groovy 脚本 - #include("/io/sc/engine/rule/core/code/template/processor/groovy_script.tpl") - #case ("HTTP_REQUEST") - //Http 请求 - #include("/io/sc/engine/rule/core/code/template/processor/http_request.tpl") - #case ("MATH_FORMULA") - //数学公式 - #include("/io/sc/engine/rule/core/code/template/processor/math_formula.tpl") - if(log.isDebugEnabled()){log.debug(" 数学公式运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("NUMBER_RANGE") - //数值分段函数 - #include("/io/sc/engine/rule/core/code/template/processor/numberRange.tpl") - if(log.isDebugEnabled()){log.debug(" 数值分段函数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("OBJECT_PROPERTIES") - //对象属性赋值函数 - #include("/io/sc/engine/rule/core/code/template/processor/object_properties.tpl") - if(log.isDebugEnabled()){log.debug(" 对象属性函数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("SQL") - //SQL 运算 - #include("/io/sc/engine/rule/core/code/template/processor/sql.tpl") - #case ("TERNARY") - //三元运算 - #include("/io/sc/engine/rule/core/code/template/processor/ternary.tpl") - if(log.isDebugEnabled()){log.debug(" 三元运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("WHEN_THEN") - //WhenThen 运算 - #include("/io/sc/engine/rule/core/code/template/processor/when_then.tpl") - if(log.isDebugEnabled()){log.debug(" WhenThen 运算结果 : {}",arg.#(fieldName(parameter.code)));} - #end - #end - } - #end -#end -} - -@JsonIgnoreProperties(ignoreUnknown=true) -class Argument { - #(tabs(IndicatorGenerator.generateFields(lib.indicators),1)) - public static Argument convertArgument(Map map){ - if(map!=null){ - Argument arg =new Argument(); - #(tabs(IndicatorGenerator.generateConvertorFromMap(lib.indicators,"arg"),3)) - return arg; - } - return null; - } - - public static Argument convertArgument(String json){ - if(json!=null && !"".equals(json.trim())){ - Argument arg =ObjectMapperUtil.json().readValue(json, Argument.class); - #(tabs(IndicatorGenerator.generateConvertorFromJson(lib.indicators),3)) - return arg; - } - } - - public void validate(ValidateResult result) { - #(tabs(IndicatorGenerator.generateValidator(lib.indicators),2)) - } - - public ResourceResult toResult(){ - ResourceResult result =new ResourceResult(); - #(tabs(IndicatorGenerator.generateToResult(lib.indicators),2)) - return result; - } -} - -//****************************************************************************** -// 元数据定义类 -//****************************************************************************** -#for(dictionary : dictionaries) -#@renderDictionary(dictionary) -#end - -//****************************************************************************** -// 执行并返回结果 -//****************************************************************************** -#(className(lib.code,lib.version)).execute(INPUT_PARAMETER); \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/impl/resource.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/impl/resource.tpl deleted file mode 100644 index 9d058241..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/impl/resource.tpl +++ /dev/null @@ -1,183 +0,0 @@ -#set(resource = executeUnit.resource) -#set(dictionaries =executeUnit.dictionaries) -#set(libs =executeUnit.libs) -#set(model = resource.model) - -####################################### -### 模版函数 -####################################### -#include("/io/sc/engine/rule/core/code/template/package_render.tpl") -#include("/io/sc/engine/rule/core/code/template/import_render.tpl") -#include("/io/sc/engine/rule/core/code/template/functions_render.tpl") -#include("/io/sc/engine/rule/core/code/template/parameter_render.tpl") -#include("/io/sc/engine/rule/core/code/template/model_render.tpl") -#include("/io/sc/engine/rule/core/code/template/argument_render.tpl") -#include("/io/sc/engine/rule/core/code/template/dictionary_render.tpl") -#include("/io/sc/engine/rule/core/code/template/lib_render.tpl") - -#@renderPackage(packageName) - -#@renderImport() - -//****************************************************************************** -// 自定义函数 -//****************************************************************************** -class UDF { -#for(function : executeUnit.functions) - #@renderFunction(function) -#end -} - -//****************************************************************************** -// 执行主体类 -//****************************************************************************** -/** - * type: #(executeUnit.type) - * code: #(resource.code), - * name: #(resource.name), - * version: #(resource.version) - */ -class #(className(resource.code,resource.version)) { - private static final Logger log =LoggerFactory.getLogger(#(className(resource.code,resource.version)).class); - - /** - * 执行方法(Map作为输入参数,该 Map 封装了调用模型的参数) - * @param map 输入参数封装器 - * @return 执行结果 - */ - public static ResourceResult execute(Map map) throws Exception{ - return execute(map["executor"],map["subModelCode"],map["argument"]); - } - - /** - * 执行方法 - * @param executor 执行器对象 - * @param subModelCode 子模型代码 - * @param data 输入参数 - * @return 执行结果 - */ - public static ResourceResult execute(Executor executor,String subModelCode,Object data) throws Exception{ - if(log.isDebugEnabled()){log.debug("开始执行: #(resource.name)");} - if(data instanceof Map){ - if(log.isDebugEnabled()){log.debug("显示输入参数(Map)=================================================\n{}",ObjectMapperUtil.json().writeValueAsString(data));} - }else if(data instanceof String){ - if(log.isDebugEnabled()){log.debug("显示输入参数(Json字符串)=================================================\n{}",data);} - } - - //初始化指标库 -#for(lib : libs) - if(log.isDebugEnabled()){log.debug("初始化指标库 : #(lib.name)_V#(lib.version)");} - - #(className(lib.code,lib.version)) #(varName(lib.code,lib.version)) =new #(className(lib.code,lib.version))(); - #(varName(lib.code,lib.version)).convertArgument(data); -#end - - //初始化模型参数 - if(log.isDebugEnabled()){log.debug("从 {} 初始化模型参数",String.class==data.class?"Json":"Map");} - Argument arg =Argument.convertArgument(data); - - //输入参数合法性检查 - ValidateResult validateResult =new ValidateResult(); - - //输入参数合法性检查(指标库) -#for(lib : libs) - if(log.isDebugEnabled()){log.debug("开始检查输入参数数据合法性(指标库: #(lib.name)_V#(lib.version))");} - #(varName(lib.code,lib.version)).validate(validateResult); - if(validateResult.hasError()){ - if(log.isDebugEnabled()){log.debug("\t检查结果: 失败!");} - ResourceResult result =new ResourceResult(); - result.setValidateResult(validateResult); - return result; - } - if(log.isDebugEnabled()){log.debug("\t检查结果: 成功!");} -#end - - //输入参数合法性检查(模型) - if(log.isDebugEnabled()){log.debug("开始检查模型输入参数数据合法性");} - arg.validate(validateResult); - if(validateResult.hasError()){ - if(log.isDebugEnabled()){log.debug("\t检查结果: 失败!");} - ResourceResult result =new ResourceResult(); - result.setValidateResult(validateResult); - return result; - } - if(log.isDebugEnabled()){log.debug("\t检查结果: 成功!");} - - //执行指标库 -#for(lib : executeUnit.getLibs()) - if(log.isDebugEnabled()){log.debug("开始执行指标库: #(lib.name)_V#(lib.version)");} - #(varName(lib.code,lib.version)).execute(); -#end - - //合并指标库指标 - if(log.isDebugEnabled()){log.debug("开始合并指标库指标");} - Map indicatorLibs =new HashMap(); -#for(lib : executeUnit.getLibs()) - indicatorLibs.put("#(varName(lib.code,lib.version))",#(varName(lib.code,lib.version))); -#end - arg.mergeParameterValueFromIndicatorLib(indicatorLibs); - if(log.isDebugEnabled()){log.debug("显示合并后输入参数:\n{}",ObjectMapperUtil.json().writeValueAsString(arg));} - - //执行模型 - if(subModelCode){ - subModelCode =IdReplacer.methodName(subModelCode); - "${subModelCode}"(executor,arg);//调用子模型 - }else{ - #(methodName(model.code))(executor,arg);//调用顶级模型(#(model.name)) - } - - //返回结果 - ResourceResult result =arg.toResult(); - if(log.isDebugEnabled()){log.debug("模型调用成功,返回结果:\n{}",ObjectMapperUtil.json().writeValueAsString(result));} - return result; - } - - #@renderModel(model) - - ### 决策树函数 - #for(parameter : model.allParameters) - #if("INTERMEDIATE"==parameter.type.toString() || "OUT"==parameter.type.toString()) - #for(processor : parameter.processors) - #if("DECISION_TREE"==processor.type.toString()) - //决策树函数: #(parameter.name)(#(parameter.type)) - #(DecisionTree.groovy(parameter,processor)) - #end - #end - #end - #end - ### 执行流函数 - #for(parameter : model.allParameters) - #if("INTERMEDIATE"==parameter.type.toString() || "OUT"==parameter.type.toString()) - #for(processor : parameter.processors) - #if("EXECUTION_FLOW"==processor.type.toString()) - //执行流函数: #(parameter.name)(#(parameter.type)) - #(tabs(ExecutionFlow.groovy(parameter,processor),1)) - #end - #end - #end - #end -} - -//****************************************************************************** -// 模型参数定义类 -//****************************************************************************** -#@renderArgument(model) - -//****************************************************************************** -// 元数据定义类 -//****************************************************************************** -#for(dictionary : dictionaries) -#@renderDictionary(dictionary) -#end - -//****************************************************************************** -// 指标库定义类 -//****************************************************************************** -#for(lib : libs ) -#@renderLib(lib) -#end - -//****************************************************************************** -// 执行并返回结果 -//****************************************************************************** -#(className(resource.code,resource.version)).execute(INPUT_PARAMETER); \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/import_render.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/import_render.tpl deleted file mode 100644 index 03a5d341..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/import_render.tpl +++ /dev/null @@ -1,97 +0,0 @@ -#define renderImport() -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.core.type.TypeReference; -import groovy.transform.Canonical; -import io.sc.engine.rule.client.Executor; -import io.sc.engine.rule.core.ResourceAbstract; -import io.sc.engine.rule.core.RuleSetResult; -import io.sc.engine.rule.core.SingleRuleResult; -import io.sc.engine.rule.core.FieldValidator; -import io.sc.engine.rule.core.ParameterResult; -import io.sc.engine.rule.core.ResourceResult; -import io.sc.engine.rule.core.ValidateResult; -import io.sc.engine.rule.core.enums.ParameterType; -import io.sc.engine.rule.core.enums.RuntimeInputParameterType; -import io.sc.engine.rule.core.function.JpmmlEvaluator; -import io.sc.engine.rule.core.util.IdReplacer; -import io.sc.engine.rule.core.util.ESql; -import io.sc.platform.util.DateUtil; -import io.sc.platform.util.ObjectMapperUtil; -import io.sc.platform.util.StringUtil; -import io.sc.platform.util.TypeConvertor; -import java.math.*; -import java.util.Map; -import java.util.Random; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import static io.sc.engine.rule.core.function.ArithmeticFunction.div; -import static io.sc.engine.rule.core.function.ArithmeticFunction.lg; -import static io.sc.engine.rule.core.function.ArithmeticFunction.ln; -import static io.sc.engine.rule.core.function.ArithmeticFunction.log; -import static io.sc.engine.rule.core.function.ArithmeticFunction.max; -import static io.sc.engine.rule.core.function.ArithmeticFunction.min; -import static io.sc.engine.rule.core.function.ArithmeticFunction.mod; -import static io.sc.engine.rule.core.function.ArithmeticFunction.randomInt; -import static io.sc.engine.rule.core.function.ArithmeticFunction.root; -import static io.sc.engine.rule.core.function.ArithmeticFunction.sum; -import static io.sc.engine.rule.core.function.ArithmeticFunction.transformSequencing; -import static io.sc.engine.rule.core.function.DateFunction.now; -import static io.sc.engine.rule.core.function.DateFunction.yyyyMMdd; -import static io.sc.engine.rule.core.function.DateFunction.yyyy_MM_dd; -import static io.sc.engine.rule.core.function.NormalDistributionFunction.G; -import static io.sc.engine.rule.core.function.NormalDistributionFunction.iG; -import static io.sc.engine.rule.core.function.SpecialValueFunction.infinite; -import static io.sc.engine.rule.core.function.SpecialValueFunction.isInfinite; -import static io.sc.engine.rule.core.function.SpecialValueFunction.isNan; -import static io.sc.engine.rule.core.function.SpecialValueFunction.isNil; -import static io.sc.engine.rule.core.function.SpecialValueFunction.isZero; -import static io.sc.engine.rule.core.function.SpecialValueFunction.nan; -import static io.sc.engine.rule.core.function.SpecialValueFunction.nil; -import static io.sc.engine.rule.core.function.SpecialValueFunction.zero; -import static io.sc.engine.rule.core.function.StringFunction.contains; -import static io.sc.engine.rule.core.function.StringFunction.endsWith; -import static io.sc.engine.rule.core.function.StringFunction.join; -import static io.sc.engine.rule.core.function.StringFunction.length; -import static io.sc.engine.rule.core.function.StringFunction.lowerCase; -import static io.sc.engine.rule.core.function.StringFunction.startsWith; -import static io.sc.engine.rule.core.function.StringFunction.trim; -import static io.sc.engine.rule.core.function.StringFunction.upperCase; -import static io.sc.platform.util.CollectionUtil.hasElements; -import static io.sc.platform.util.DateUtil.yearsBetween; -import static io.sc.platform.util.DateUtil.monthsBetween; -import static io.sc.platform.util.DateUtil.weeksBetween; -import static io.sc.platform.util.DateUtil.daysBetween; -import static io.sc.platform.util.DateUtil.hoursBetween; -import static io.sc.platform.util.DateUtil.minutesBetween; -import static io.sc.platform.util.DateUtil.secondsBetween; -import static io.sc.platform.util.NumberUtil.comma; -import static io.sc.platform.util.NumberUtil.decimal; -import static io.sc.platform.util.NumberUtil.money; -import static io.sc.platform.util.NumberUtil.percent; -import static java.lang.Math.E; -import static java.lang.Math.IEEEremainder; -import static java.lang.Math.PI; -import static java.lang.Math.abs; -import static java.lang.Math.acos; -import static java.lang.Math.asin; -import static java.lang.Math.atan; -import static java.lang.Math.atan2; -import static java.lang.Math.cbrt; -import static java.lang.Math.ceil; -import static java.lang.Math.cos; -import static java.lang.Math.cosh; -import static java.lang.Math.exp; -import static java.lang.Math.expm1; -import static java.lang.Math.floor; -import static java.lang.Math.pow; -import static java.lang.Math.random; -import static java.lang.Math.rint; -import static java.lang.Math.round; -import static java.lang.Math.sin; -import static java.lang.Math.sinh; -import static java.lang.Math.sqrt; -import static java.lang.Math.tan; -import static java.lang.Math.tanh; -import static java.lang.Math.toDegrees; -import static java.lang.Math.toRadians; -#end \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/lib_render.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/lib_render.tpl deleted file mode 100644 index d821e3d3..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/lib_render.tpl +++ /dev/null @@ -1,80 +0,0 @@ -#define renderLib(lib) -@JsonIgnoreProperties(ignoreUnknown=true) -class #(className(lib.code,lib.version)) { - private static final Logger log =LoggerFactory.getLogger(#(className(lib.code,lib.version)).class); - #(tabs(IndicatorGenerator.generateFields(lib.indicators),1)) - - //通过输入参数构建指标库对象 - public void convertArgument(Map map){ - #(className(lib.code,lib.version)) arg =this; - #(tabs(IndicatorGenerator.generateConvertorFromMap(lib.indicators,"this"),2)) - } - - public void convertArgument(String json){ - #(tabs(IndicatorGenerator.generateConvertorFromJson(lib.indicators),2)) - } - - public void execute() throws Exception{ - #for(indicator : lib.indicators) - #if(indicator.type.toString()=="INDICATOR" && indicator.processors!=null && indicator.processors.size()>0) - #(methodName(indicator.code))();//#(indicator.name),#(indicator.type) - #end - #end - } - - public void validate(ValidateResult result) { - #(tabs(IndicatorGenerator.generateValidator(lib.indicators),2)) - } - -#for(indicator : lib.indicators) - #if(indicator.type.toString()=="INDICATOR" && indicator.processors!=null && indicator.processors.size()>0) - #set(parameter=indicator) - public void #(methodName(indicator.code))(){ - #(className(lib.code,lib.version)) arg =this; - #for(processor : indicator.processors) - if(log.isDebugEnabled()){log.debug(" {}","#(parameter.name)(#(parameter.type))");} - #switch (processor.type.toString()) - #case ("ARITHMETIC") - //算数运算 - #include("/io/sc/engine/rule/core/code/template/processor/arithmetic.tpl") - if(log.isDebugEnabled()){log.debug(" 算数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("CONDITION_RANGE") - //条件分段函数 - #include("/io/sc/engine/rule/core/code/template/processor/conditionRange.tpl") - if(log.isDebugEnabled()){log.debug(" 条件分段函数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("GROOVY_SCRIPT") - //Groovy 脚本 - #include("/io/sc/engine/rule/core/code/template/processor/groovy_script.tpl") - #case ("HTTP_REQUEST") - //Http 请求 - #include("/io/sc/engine/rule/core/code/template/processor/http_request.tpl") - #case ("MATH_FORMULA") - //数学公式 - #include("/io/sc/engine/rule/core/code/template/processor/math_formula.tpl") - if(log.isDebugEnabled()){log.debug(" 数学公式运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("NUMBER_RANGE") - //数值分段函数 - #include("/io/sc/engine/rule/core/code/template/processor/numberRange.tpl") - if(log.isDebugEnabled()){log.debug(" 数值分段函数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("OBJECT_PROPERTIES") - //对象属性赋值函数 - #include("/io/sc/engine/rule/core/code/template/processor/object_properties.tpl") - if(log.isDebugEnabled()){log.debug(" 对象属性函数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("SQL") - //SQL 运算 - #include("/io/sc/engine/rule/core/code/template/processor/sql.tpl") - #case ("TERNARY") - //三元运算 - #include("/io/sc/engine/rule/core/code/template/processor/ternary.tpl") - if(log.isDebugEnabled()){log.debug(" 三元运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("WHEN_THEN") - //WhenThen 运算 - #include("/io/sc/engine/rule/core/code/template/processor/when_then.tpl") - if(log.isDebugEnabled()){log.debug(" WhenThen 运算结果 : {}",arg.#(fieldName(parameter.code)));} - #end - #end - } - #end -#end -} -#end diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/model_render.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/model_render.tpl deleted file mode 100644 index bdb70d31..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/model_render.tpl +++ /dev/null @@ -1,30 +0,0 @@ -#define renderModel(model) - //#(model.fullName.contains("/")?"子":"主")模型(#(model.fullName)) - private static void #(methodName(model.code))(Executor executor,Argument arg){ - if(log.isDebugEnabled()){log.debug("开始调用模型: {}({})","#(model.fullName)","#(model.executeMode)");} - - #if(!model.enable) - if(log.isDebugEnabled()){log.debug("开始调用模型: enable==false");} - #end - #if(model.executeMode.toString()=="DOWN_UP") - //调用子模型 - #for(subModel : model.children) - #(methodName(subModel.code))(executor,arg);//#(subModel.name) - #end - #end - - //计算中间值和结果值 - #for(parameter : model.parameters) - #if(parameter.type.toString()=="INTERMEDIATE" || parameter.type.toString()=="OUT") - #(methodName(parameter.code))(executor,arg);//#(parameter.type), #(parameter.name) - #end - #end - } - - ### 递归调用生成子模式代码 - #for(subModel : model.children) - #@renderModel(subModel) - #end - - #@renderParameter(model) -#end diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/package_render.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/package_render.tpl deleted file mode 100644 index c50ae80f..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/package_render.tpl +++ /dev/null @@ -1,3 +0,0 @@ -#define renderPackage(packageName) -package #(packageName); -#end \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/parameter_render.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/parameter_render.tpl deleted file mode 100644 index b7b6986e..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/parameter_render.tpl +++ /dev/null @@ -1,103 +0,0 @@ -#define renderParameter(model) -#for(parameter : model.parameters) - #if(("INTERMEDIATE"==parameter.type.toString() || "OUT"==parameter.type.toString()) && ("io.sc.engine.rule.core.SingleRuleResult"==parameter.valueType || "io.sc.engine.rule.core.RuleSetResult"==parameter.valueType)) - //参数处理器, #(parameter.name)(#(parameter.type)) - private static void #(methodName(parameter.code))(Executor executor,Argument arg) { - if(log.isDebugEnabled()){log.debug(" {}","#(parameter.name)(#(parameter.type))");} - #for(processor : parameter.processors) - #if(processor.enable) - #switch (processor.type.toString()) - #case ("SINGLE_RULE") - //单规则 - #include("/io/sc/engine/rule/core/code/template/processor/single_rule.tpl") - if(log.isDebugEnabled()){log.debug(" 单规则运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("RULE_SET") - //规则集 - #include("/io/sc/engine/rule/core/code/template/processor/rule_set.tpl") - if(log.isDebugEnabled()){log.debug(" 规则集运算结果 : {}",arg.#(fieldName(parameter.code)));} - #end - #end - #end - } - #else if("INTERMEDIATE"==parameter.type.toString() || "OUT"==parameter.type.toString()) - //参数处理器, #(parameter.name)(#(parameter.type)) - private static void #(methodName(parameter.code))(Executor executor,Argument arg) { - if(log.isDebugEnabled()){log.debug(" {}","#(parameter.name)(#(parameter.type))");} - #for(processor : parameter.processors) - #if(processor.enable) - #switch (processor.type.toString()) - #case ("ARITHMETIC") - //算数运算 - #include("/io/sc/engine/rule/core/code/template/processor/arithmetic.tpl") - if(log.isDebugEnabled()){log.debug(" 算数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("CONDITION_RANGE") - //条件分段函数 - #include("/io/sc/engine/rule/core/code/template/processor/conditionRange.tpl") - if(log.isDebugEnabled()){log.debug(" 条件分段函数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("DECISION_TABLE") - //决策表 - #include("/io/sc/engine/rule/core/code/template/processor/decision_table.tpl") - if(log.isDebugEnabled()){log.debug(" 决策表运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("DECISION_TABLE_2C") - //简单决策表 - #include("/io/sc/engine/rule/core/code/template/processor/decision_table_2c.tpl") - if(log.isDebugEnabled()){log.debug(" 简单决策表运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("DECISION_TREE") - //决策树(此处只是入口,真正的决策树计算逻辑在后面通过一系列方法完成) - #include("/io/sc/engine/rule/core/code/template/processor/decision_tree.tpl") - if(log.isDebugEnabled()){log.debug(" 决策树运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("EXECUTION_FLOW") - //执行流(此处只是入口,真正的执行流计算逻辑在后面通过一系列方法完成) - #include("/io/sc/engine/rule/core/code/template/processor/execution_flow.tpl") - if(log.isDebugEnabled()){log.debug(" 执行流运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("GROOVY_SCRIPT") - //Groovy 脚本 - #include("/io/sc/engine/rule/core/code/template/processor/groovy_script.tpl") - #case ("HTTP_REQUEST") - //Http 请求 - #include("/io/sc/engine/rule/core/code/template/processor/http_request.tpl") - #case ("MATH_FORMULA") - //数学公式 - #include("/io/sc/engine/rule/core/code/template/processor/math_formula.tpl") - if(log.isDebugEnabled()){log.debug(" 数学公式运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("NUMBER_RANGE") - //数值分段函数 - #include("/io/sc/engine/rule/core/code/template/processor/numberRange.tpl") - if(log.isDebugEnabled()){log.debug(" 数值分段函数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("OBJECT_PROPERTIES") - //对象属性赋值函数 - #include("/io/sc/engine/rule/core/code/template/processor/object_properties.tpl") - if(log.isDebugEnabled()){log.debug(" 对象属性函数运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("OPTION_VALUE") - //选项值运算 - #include("/io/sc/engine/rule/core/code/template/processor/option_value.tpl") - if(log.isDebugEnabled()){log.debug(" 选项运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("PMML") - //PMML - #include("/io/sc/engine/rule/core/code/template/processor/pmml.tpl") - #case ("RULE") - #case ("SCORE_CARD") - //评分卡 - #include("/io/sc/engine/rule/core/code/template/processor/score_card.tpl") - #case ("SINGLE_RULE") - #case ("SQL") - //SQL 运算 - #include("/io/sc/engine/rule/core/code/template/processor/sql.tpl") - #case ("TERNARY") - //三元运算 - #include("/io/sc/engine/rule/core/code/template/processor/ternary.tpl") - if(log.isDebugEnabled()){log.debug(" 三元运算结果 : {}",arg.#(fieldName(parameter.code)));} - #case ("WHEN_THEN") - //WhenThen 运算 - #include("/io/sc/engine/rule/core/code/template/processor/when_then.tpl") - if(log.isDebugEnabled()){log.debug(" WhenThen 运算结果 : {}",arg.#(fieldName(parameter.code)));} - #end - #end - #end - - if(log.isDebugEnabled()){log.debug(" 参数结果值 : {}",arg.#(fieldName(parameter.code)));} - } - -#end -#end -#end \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/arithmetic.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/arithmetic.tpl deleted file mode 100644 index 76ad3cbf..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/arithmetic.tpl +++ /dev/null @@ -1 +0,0 @@ -arg.#(fieldName(parameter.code)) =#(Arithmetic.groovy(parameter,processor)); \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/conditionRange.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/conditionRange.tpl deleted file mode 100644 index df3f6ba8..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/conditionRange.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(ConditionRange.groovy(parameter,processor),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/decision_table.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/decision_table.tpl deleted file mode 100644 index 0aac00c9..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/decision_table.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(DecisionTable.groovy(parameter,processor,model.allParameters),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/decision_table_2c.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/decision_table_2c.tpl deleted file mode 100644 index eaec55ec..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/decision_table_2c.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(DecisionTable2C.groovy(parameter,processor),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/decision_tree.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/decision_tree.tpl deleted file mode 100644 index adc08687..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/decision_tree.tpl +++ /dev/null @@ -1 +0,0 @@ -arg.#(fieldName(parameter.code)) =Tree_#(fieldName(parameter.code))_#(DecisionTree.parse(processor.decisionTree).id)(executor,arg); \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/execution_flow.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/execution_flow.tpl deleted file mode 100644 index c987cb11..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/execution_flow.tpl +++ /dev/null @@ -1 +0,0 @@ -Flow_#(fieldName(parameter.code))_#(ExecutionFlow.parse(processor.executionFlow).id)(executor,arg); \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/groovy_script.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/groovy_script.tpl deleted file mode 100644 index 7e3a0b40..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/groovy_script.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(io.sc.engine.rule.core.util.GroovyExpressionReplacer::groovy(processor.groovyScript),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/http_request.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/http_request.tpl deleted file mode 100644 index 2c139ef3..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/http_request.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(HttpRequest.groovy(parameter,processor),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/math_formula.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/math_formula.tpl deleted file mode 100644 index 287307a4..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/math_formula.tpl +++ /dev/null @@ -1 +0,0 @@ -arg.#(fieldName(parameter.code)) =#(MathFormula.groovy(parameter,processor)); \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/numberRange.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/numberRange.tpl deleted file mode 100644 index 44e2df37..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/numberRange.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(NumberRange.groovy(parameter,processor),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/object_properties.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/object_properties.tpl deleted file mode 100644 index 5f5907f5..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/object_properties.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(ObjectProperty.groovy(parameter,processor),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/option_value.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/option_value.tpl deleted file mode 100644 index fa0592b6..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/option_value.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(OptionValue.groovy(parameter,processor,model),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/pmml.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/pmml.tpl deleted file mode 100644 index 8a9ba03b..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/pmml.tpl +++ /dev/null @@ -1,4 +0,0 @@ -arg.#(fieldName(parameter.code)) =JpmmlEvaluator.evaluate( - '#(parameter.id)_#(processor.id)', - '''#(tabs(processor.pmml,3))''' - ,arg.toMap()); diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/rule_set.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/rule_set.tpl deleted file mode 100644 index f7e97293..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/rule_set.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(RuleSet.groovy(parameter,processor),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/score_card.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/score_card.tpl deleted file mode 100644 index 5564e645..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/score_card.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(ScoreCard.groovy(parameter,processor),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/single_rule.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/single_rule.tpl deleted file mode 100644 index 6d3b5d94..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/single_rule.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(SingleRule.groovy(parameter,processor),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/sql.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/sql.tpl deleted file mode 100644 index 784203e7..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/sql.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(SqlFieldMapping.groovy(parameter,processor),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/ternary.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/ternary.tpl deleted file mode 100644 index d3ba932d..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/ternary.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(Ternary.groovy(parameter,processor),2)) \ No newline at end of file diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/when_then.tpl b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/when_then.tpl deleted file mode 100644 index 67c2fcad..00000000 --- a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/template/processor/when_then.tpl +++ /dev/null @@ -1 +0,0 @@ -#(tabs(WhenThen.groovy(parameter,processor),2)) \ No newline at end of file