From 91610bdccd6dd5053da4b53fc699e965392e334d Mon Sep 17 00:00:00 2001 From: wangshaoping Date: Sat, 30 Mar 2024 15:07:06 +0800 Subject: [PATCH] update --- erm.frontend/package.json | 4 +- io.sc.engine.mv.frontend/package.json | 4 +- .../META-INF/platform/plugins/liquibase.json | 2 +- io.sc.engine.rule.client.spring/README.adoc | 0 .../client/spring/service/LocalLoader.java | 10 + .../spring/service/impl/LocalLoaderImpl.java | 94 + ...rm.core.initializer.ApplicationInitializer | 1 + io.sc.engine.rule.client/README.adoc | 0 .../java/io/sc/engine/rule/client/Loader.java | 44 + .../engine/rule/client/enums/LoaderMode.java | 18 + .../rule/client/local/LocalExecutor.java | 134 + .../rule/client/remote/RemoteExecutor.java | 148 + .../rule/client/remote/RemoteLoader.java | 112 + io.sc.engine.rule.core/README.adoc | 0 .../rule/core/classes/ResourceAbstract.java | 79 + .../io/sc/engine/rule/core/classes/Rule.java | 121 + .../engine/rule/core/classes/RuleResult.java | 106 + .../rule/core/classes/SingleRuleResult.java | 70 + .../sc/engine/rule/core/code/SourceCode.java | 42 + .../core/code/impl/support/ModelAbstract.java | 43 + .../code/impl/support/ParameterResult.java | 146 + .../code/impl/support/ResourceResult.java | 100 + .../code/impl/support/ResourceWrapper.java | 30 + .../impl/support/ResourceWrapper4Lib.java | 43 + .../support/ResourceWrapper4Resource.java | 52 + .../core/code/impl/support/ValidateField.java | 38 + .../code/impl/support/ValidateResult.java | 25 + .../core/code/impl/support/lib/LibUtil.java | 54 + .../ParameterGroovyCodeContributionItem.java | 9 + .../impl/support/processor/NumberRange.java | 245 + .../code/impl/support/processor/Option.java | 104 + .../code/impl/support/processor/Rule.java | 155 + .../impl/support/processor/SingleRule.java | 127 + .../support/processor/SqlFieldMapping.java | 82 + .../JsonStringToObjectConverterFactory.java | 32 + .../support/MapToObjectConverterFactory.java | 45 + .../NumberToNumberConverterFactory.java | 33 + .../support/ObjectToStringConverter.java | 10 + .../support/StringToBooleanConverter.java | 43 + .../support/StringToDateConverter.java | 21 + .../StringToNumberConverterFactory.java | 30 + .../engine/rule/core/enums/IndicatorType.java | 11 + .../io/sc/engine/rule/core/enums/LibType.java | 24 + .../engine/rule/core/enums/ModelCategory.java | 12 + .../engine/rule/core/enums/ParameterType.java | 17 + .../engine/rule/core/enums/ProcessorType.java | 26 + .../engine/rule/core/enums/ResourceType.java | 19 + .../core/enums/RuntimeInputParameterType.java | 11 + .../rule/core/enums/ScoreCardVarType.java | 15 + .../rule/core/enums/TestCaseOwnerType.java | 13 + .../sc/engine/rule/core/enums/TestResult.java | 12 + .../engine/rule/core/enums/ValidatorType.java | 17 + .../sc/engine/rule/core/enums/ValueType.java | 151 + .../rule/core/function/JpmmlEvaluator.java | 64 + .../function/NormalDistributionFunction.java | 19 + .../rule/core/function/StringFunction.java | 29 + .../rule/core/mxgraph/po/ParallelNode.java | 15 + .../core/mxgraph/po/ResourceAbstractNode.java | 36 + .../rule/core/mxgraph/po/StartNode.java | 15 + .../core/mxgraph/po/SubModelAbstractNode.java | 26 + .../po/dictionary/JavaClassDictionary.java | 18 + .../po/dictionary/ReleasableDictionary.java | 25 + .../UserDefinedJavaClassDictionary.java | 21 + .../dictionary/UserDefinedJavaClassField.java | 68 + .../io/sc/engine/rule/core/po/lib/Lib.java | 74 + .../core/po/lib/RangeIndicatorValidator.java | 45 + .../rule/core/po/lib/ReleasableLib.java | 25 + .../po/lib/indicator/IndicatorIndicator.java | 32 + .../po/lib/indicator/InterfaceIndicator.java | 21 + .../NumberRangeIndicatorProcessor.java | 37 + .../lib/processor/SqlIndicatorProcessor.java | 51 + .../processor/TernaryIndicatorProcessor.java | 44 + .../processor/WhenThenIndicatorProcessor.java | 44 + .../IntegerRangeIndicatorValidator.java | 21 + .../LengthRangeIndicatorValidator.java | 21 + .../validator/NotEmptyIndicatorValidator.java | 21 + .../validator/PatternIndicatorValidator.java | 31 + .../lib/validator/TrueIndicatorValidator.java | 21 + .../sc/engine/rule/core/po/model/Model.java | 168 + .../engine/rule/core/po/model/Parameter.java | 209 + .../core/po/model/ParameterInOptionItem.java | 54 + .../core/po/model/ParameterProcessor.java | 92 + .../core/po/model/ParameterValidator.java | 66 + .../po/model/RangeParameterValidator.java | 45 + .../po/model/parameter/InOptionParameter.java | 34 + .../core/po/model/parameter/InParameter.java | 21 + .../po/model/parameter/InSubOutParameter.java | 27 + .../parameter/IntermediateParameter.java | 33 + .../core/po/model/parameter/OutParameter.java | 32 + .../model/parameter/RuleResultParameter.java | 40 + .../parameter/SingleRuleResultParameter.java | 40 + .../NumberRangeParameterProcessor.java | 40 + .../OptionValueParameterProcessor.java | 31 + .../processor/PmmlParameterProcessor.java | 31 + .../processor/RuleParameterProcessor.java | 31 + .../SingleRuleParameterProcessor.java | 31 + .../processor/SqlParameterProcessor.java | 58 + .../processor/TernaryParameterProcessor.java | 49 + .../processor/WhenThenParameterProcessor.java | 49 + .../IntegerRangeParameterValidator.java | 17 + .../LengthRangeParameterValidator.java | 17 + .../validator/NotEmptyParameterValidator.java | 17 + .../validator/PatternParameterValidator.java | 25 + .../validator/TrueParameterValidator.java | 17 + .../rule/core/po/resource/ModelResource.java | 26 + .../core/po/resource/ReleasableResource.java | 47 + .../rule/core/po/resource/Resource.java | 81 + .../core/po/resource/ScoreCardResource.java | 29 + .../NumberRangeScoreCardIndicatorVar.java | 29 + .../po/scorecard/NumberRangeScoreCardVar.java | 29 + .../OptionScoreCardIndicatorVar.java | 29 + .../core/po/scorecard/OptionScoreCardVar.java | 29 + .../scorecard/ScoreCardIndicatorValueVar.java | 21 + .../po/scorecard/ScoreCardIndicatorVar.java | 36 + .../rule/core/po/scorecard/ScoreCardVar.java | 53 + .../rule/core/po/testcase/LibTestCase.java | 15 + .../rule/core/po/testcase/ModelTestCase.java | 15 + .../core/po/testcase/ResourceTestCase.java | 15 + .../core/po/testcase/ScoreCardTestCase.java | 15 + .../rule/core/po/testcase/TestCase.java | 82 + .../core/po/testcase/TestCaseParameter.java | 73 + .../rule/core/util/JacksonObjectMapper.java | 26 + .../io/sc/engine/rule/core/util/Logger.java | 62 + .../engine/rule/core/util/NumberFormater.java | 235 + .../sc/engine/rule/core/util/ObjectUtil.java | 51 + .../sc/engine/rule/core/util/PinyinUtil.java | 55 + .../io/sc/engine/rule/core/util/Strings.java | 91 + .../sc/engine/rule/core/util/TimeTracer.java | 76 + .../src/main/resources/META-INF/MANIFEST.MF | 4 + .../META-INF/platform/plugins/messages.json | 16 + io.sc.engine.rule.frontend/nodemon.json | 6 + io.sc.engine.rule.frontend/package.json | 105 + io.sc.engine.rule.frontend/postcss.config.cjs | 6 + .../public/login-bg.jpg | Bin 0 -> 945301 bytes io.sc.engine.rule.frontend/public/logo.svg | 5 + .../assets/iconfont/Pacifico-Regular.ttf | Bin 0 -> 229996 bytes .../webjars/luckysheet/2.1.13/css/loading.gif | Bin 0 -> 69010 bytes .../luckysheet/2.1.13/css/luckysheet.css | 1 + .../luckysheet/2.1.13/css/menuSprite.svg | 505 ++ .../luckysheet/2.1.13/css/paint_16px.ico | Bin 0 -> 1022 bytes .../luckysheet/2.1.13/css/paint_24px.ico | Bin 0 -> 2174 bytes .../luckysheet/2.1.13/css/paint_32px.ico | Bin 0 -> 3774 bytes .../luckysheet/2.1.13/css/sprite38.svg | 528 ++ .../luckysheet/2.1.13/css/waffle_sprite.png | Bin 0 -> 8116 bytes .../luckysheet/2.1.13/demoData/sheetCell.js | 1578 ++++ .../luckysheet/2.1.13/demoData/sheetChart.js | 4918 ++++++++++++ .../2.1.13/demoData/sheetComment.js | 67 + .../2.1.13/demoData/sheetConditionFormat.js | 6541 +++++++++++++++ .../2.1.13/demoData/sheetDataVerification.js | 579 ++ .../2.1.13/demoData/sheetFormula.js | 6600 +++++++++++++++ .../2.1.13/demoData/sheetPicture.js | 159 + .../2.1.13/demoData/sheetPivotTable.js | 189 + .../2.1.13/demoData/sheetPivotTableData.js | 741 ++ .../2.1.13/demoData/sheetSparkline.js | 7066 +++++++++++++++++ .../luckysheet/2.1.13/demoData/sheetTable.js | 1068 +++ .../luckysheet/2.1.13/luckysheet.umd.js | 4152 ++++++++++ .../luckysheet/2.1.13/luckysheet.umd.js.map | 7 + .../2.1.13/plugins/css/pluginsCss.css | 1 + .../luckysheet/2.1.13/plugins/images/js.png | Bin 0 -> 314 bytes .../images/ui-icons_444444_256x240.png | Bin 0 -> 6992 bytes .../images/ui-icons_555555_256x240.png | Bin 0 -> 6988 bytes .../images/ui-icons_777620_256x240.png | Bin 0 -> 4549 bytes .../images/ui-icons_777777_256x240.png | Bin 0 -> 6999 bytes .../images/ui-icons_cc0000_256x240.png | Bin 0 -> 4549 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 6299 bytes .../luckysheet/2.1.13/plugins/js/plugin.js | 1 + .../luckysheet/2.1.13/plugins/plugins.css | 10 + .../webjars/tailwindcss/3.3.5/tailwindcss.js | 63 + .../src/css/tailwind.css | 7 + .../src/i18n/messages.json | 70 + .../src/i18n/messages_tw_CN.json | 70 + .../src/i18n/messages_zh_CN.json | 71 + io.sc.engine.rule.frontend/src/main.ts | 1 + .../src/menus/menus.json | 37 + .../src/routes/routes.json | 107 + io.sc.engine.rule.frontend/src/shims-vue.d.ts | 33 + .../src/views/lib/Lib.vue | 4 + .../src/views/migration/Migration.vue | 4 + .../src/views/resources/Resources.vue | 312 + .../src/views/resources/designer/Model.vue | 156 + .../src/views/resources/designer/Option.vue | 6 + .../views/resources/designer/Parameter.vue | 359 + .../views/resources/designer/Processor.vue | 6 + .../src/views/resources/designer/Testcase.vue | 7 + .../views/resources/designer/Validator.vue | 213 + .../src/views/testcase/Testcase.vue | 4 + .../src/views/workflow/Workflow.vue | 4 + .../tailwind.config.cjs | 19 + io.sc.engine.rule.frontend/tsconfig.json | 21 + .../util-components-generator.cjs | 32 + .../util-frontend-register.cjs | 173 + .../webpack.config.common.cjs | 159 + .../webpack.config.mf.cjs | 66 + .../webpack.env.build.cjs | 83 + .../webpack.env.prod.cjs | 35 + .../webpack.env.serve.cjs | 35 + io.sc.engine.rule.sample/README.adoc | 0 io.sc.engine.rule.server/README.adoc | 0 .../common/bean/JpaEntityChangedListener.java | 1029 +++ ...serDefinedJavaClassFieldWebController.java | 38 + .../UserDefinedJavaClassFieldConverter.java | 90 + .../entity/JavaClassDictionaryEntity.java | 111 + .../entity/ReleasableDictionaryEntity.java | 81 + .../UserDefinedJavaClassDictionaryEntity.java | 139 + .../UserDefinedJavaClassFieldEntity.java | 252 + .../JavaClassNotExistsException.java | 26 + ...dJavaClassFieldAlreadyExistsException.java | 26 + ...meNotAllowSameWithDictionaryException.java | 23 + .../UserDefinedJavaClassFieldRepository.java | 31 + .../UserDefinedJavaClassFieldService.java | 12 + .../UserDefinedJavaClassFieldServiceImpl.java | 204 + ...eleasableDictionaryEntityChangedEvent.java | 12 + ...finedJavaClassFieldEntityChangedEvent.java | 12 + .../dictionary/vo/JavaClassDictionaryVo.java | 23 + .../dictionary/vo/ReleasableDictionaryVo.java | 35 + .../vo/UserDefinedJavaClassDictionaryVo.java | 27 + .../vo/UserDefinedJavaClassFieldVo.java | 130 + .../JpaEntityPersistentEventListener.java | 80 + .../handler/IndicatorEntityEventHandler.java | 164 + .../IndicatorProcessorEntityEventHandler.java | 55 + .../IndicatorValidatorEntityEventHandler.java | 55 + .../handler/LibEntityEventHandler.java | 180 + .../handler/ModelEntityEventHandler.java | 64 + .../handler/ParameterEntityEventHandler.java | 139 + .../ParameterProcessorEntityEventHandler.java | 55 + .../ParameterValidatorEntityEventHandler.java | 55 + .../handler/ResourceEntityEventHandler.java | 87 + .../ScoreCardVarEntityEventHandler.java | 96 + ...finedJavaClassFieldEntityEventHandler.java | 206 + .../IndicatorProcessorWebController.java | 18 + .../IndicatorValidatorWebController.java | 20 + .../controller/IndicatorWebController.java | 70 + .../lib/controller/LibWebController.java | 182 + .../lib/converter/LibEntityConverter.java | 155 + .../lib/entity/IndicatorValidatorEntity.java | 142 + .../rule/server/lib/entity/LibEntity.java | 244 + .../entity/RangeIndicatorValidatorEntity.java | 65 + .../lib/entity/ReleasableLibEntity.java | 80 + .../indicator/IndicatorIndicatorEntity.java | 59 + .../indicator/InterfaceIndicatorEntity.java | 59 + .../NumberRangeIndicatorProcessorEntity.java | 78 + .../SqlIndicatorProcessorEntity.java | 104 + .../TernaryIndicatorProcessorEntity.java | 98 + .../WhenThenIndicatorProcessorEntity.java | 96 + .../IntegerRangeIndicatorValidatorEntity.java | 30 + .../LengthRangeIndicatorValidatorEntity.java | 31 + .../NotEmptyIndicatorValidatorEntity.java | 30 + .../PatternIndicatorValidatorEntity.java | 44 + .../TrueIndicatorValidatorEntity.java | 30 + .../exception/LibAlreadyExistsException.java | 26 + .../IndicatorProcessorRepository.java | 11 + .../lib/repository/IndicatorRepository.java | 44 + .../IndicatorValidatorRepository.java | 11 + .../server/lib/repository/LibRepository.java | 75 + .../service/IndicatorProcessorService.java | 12 + .../server/lib/service/IndicatorService.java | 27 + .../rule/server/lib/service/LibService.java | 102 + .../impl/IndicatorProcessorServiceImpl.java | 95 + .../service/impl/IndicatorServiceImpl.java | 384 + .../impl/IndicatorValidatorServiceImpl.java | 22 + .../lib/service/impl/LibServiceImpl.java | 413 + .../lib/service/support/IndicatorWrapper.java | 24 + .../support/LibEntityChangedEvent.java | 14 + .../lib/service/support/LibWrapper.java | 47 + .../lib/service/support/LibWrapperMap.java | 43 + .../server/lib/vo/IndicatorProcessorVo.java | 64 + .../server/lib/vo/IndicatorValidatorVo.java | 74 + .../rule/server/lib/vo/IndicatorVo.java | 136 + .../sc/engine/rule/server/lib/vo/LibVo.java | 79 + .../lib/vo/RangeIndicatorValidatorVo.java | 50 + .../rule/server/lib/vo/ReleasableLibVo.java | 32 + .../vo/indicator/IndicatorIndicatorVo.java | 15 + .../vo/indicator/InterfaceIndicatorVo.java | 14 + .../NumberRangeIndicatorProcessorVo.java | 36 + .../vo/processor/SqlIndicatorProcessorVo.java | 51 + .../TernaryIndicatorProcessorVo.java | 48 + .../WhenThenIndicatorProcessorVo.java | 47 + .../IntegerRangeIndicatorValidatorVo.java | 15 + .../LengthRangeIndicatorValidatorVo.java | 14 + .../NotEmptyIndicatorValidatorVo.java | 14 + .../PatternIndicatorValidatorVo.java | 25 + .../validator/TrueIndicatorValidatorVo.java | 14 + .../controller/MigrationWebController.java | 112 + .../migration/service/MigrationService.java | 9 + .../service/impl/MigrationServiceImpl.java | 90 + .../model/controller/ModelWebController.java | 50 + .../ParameterInOptionItemWebController.java | 18 + .../ParameterProcessorWebController.java | 127 + .../ParameterValidatorWebController.java | 38 + .../controller/ParameterWebController.java | 126 + .../model/converter/ModelEntityConverter.java | 106 + .../converter/ParameterEntityConverter.java | 198 + .../ParameterInOptionItemEntityConverter.java | 84 + .../ParameterProcessorEntityConverter.java | 325 + .../ParameterValidatorEntityConverter.java | 173 + .../rule/server/model/entity/ModelEntity.java | 315 + .../server/model/entity/ParameterEntity.java | 323 + .../entity/ParameterInOptionItemEntity.java | 148 + .../entity/ParameterProcessorEntity.java | 157 + .../entity/ParameterValidatorEntity.java | 146 + .../entity/RangeParameterValidatorEntity.java | 81 + .../parameter/InOptionParameterEntity.java | 124 + .../entity/parameter/InParameterEntity.java | 59 + .../parameter/InSubOutParameterEntity.java | 85 + .../IntermediateParameterEntity.java | 59 + .../entity/parameter/OutParameterEntity.java | 62 + .../parameter/RuleResultParameterEntity.java | 61 + .../SingleRuleResultParameterEntity.java | 61 + .../NumberRangeParameterProcessorEntity.java | 77 + .../OptionValueParameterProcessorEntity.java | 57 + .../PmmlParameterProcessorEntity.java | 57 + .../RuleParameterProcessorEntity.java | 58 + .../SingleRuleParameterProcessorEntity.java | 57 + .../SqlParameterProcessorEntity.java | 103 + .../TernaryParameterProcessorEntity.java | 97 + .../WhenThenParameterProcessorEntity.java | 93 + .../IntegerRangeParameterValidatorEntity.java | 29 + .../LengthRangeParameterValidatorEntity.java | 29 + .../NotEmptyParameterValidatorEntity.java | 29 + .../PatternParameterValidatorEntity.java | 43 + .../TrueParameterValidatorEntity.java | 29 + .../ModelEntityAlreadyExistsException.java | 26 + ...ParameterEntityAlreadyExistsException.java | 26 + .../RootModelEntityNotExistsException.java | 23 + .../model/repository/ModelRepository.java | 30 + .../ParameterInOptionItemRepository.java | 11 + .../ParameterProcessorRepository.java | 78 + .../model/repository/ParameterRepository.java | 71 + .../ParameterValidatorRepository.java | 17 + .../server/model/service/ModelService.java | 111 + .../service/ParameterInOptionItemService.java | 12 + .../service/ParameterProcessorService.java | 18 + .../model/service/ParameterService.java | 90 + .../service/ParameterValidatorService.java | 21 + .../model/service/impl/ModelServiceImpl.java | 304 + .../ParameterInOptionItemServiceImpl.java | 21 + .../impl/ParameterProcessorServiceImpl.java | 240 + .../service/impl/ParameterServiceImpl.java | 535 ++ .../impl/ParameterValidatorServiceImpl.java | 34 + .../support/ModelEntityChangedEvent.java | 11 + .../support/ParameterEntityChangedEvent.java | 11 + .../support/ParameterIndicatorsWrapper.java | 24 + .../ParameterProcessorEntityChangedEvent.java | 11 + .../model/service/support/ParemterHints.java | 30 + .../support/PmmlDataTypeConvertor.java | 34 + .../model/support/ModelJsonSerializer.java | 50 + .../ParameterInOptionItemJsonSerializer.java | 44 + .../support/ParameterJsonSerializer.java | 45 + .../ParameterProcessorJsonSerializer.java | 43 + .../ParameterValidatorJsonSerializer.java | 45 + ...RangeParameterValidatorJsonSerializer.java | 37 + .../support/processor/SqlQueryRequest.java | 57 + .../support/processor/SqlQueryResult.java | 84 + .../engine/rule/server/model/vo/ModelVo.java | 101 + .../model/vo/ParameterInOptionItemVo.java | 98 + .../server/model/vo/ParameterProcessorVo.java | 77 + .../server/model/vo/ParameterValidatorVo.java | 77 + .../rule/server/model/vo/ParameterVo.java | 158 + .../model/vo/RangeParameterValidatorVo.java | 50 + .../vo/parameter/InOptionParameterVo.java | 14 + .../model/vo/parameter/InParameterVo.java | 15 + .../vo/parameter/InSubOutParameterVo.java | 15 + .../vo/parameter/IntermediateParameterVo.java | 16 + .../model/vo/parameter/OutParameterVo.java | 14 + .../vo/parameter/RuleResultParameterVo.java | 15 + .../SingleRuleResultParameterVo.java | 14 + .../NumberRangeParameterProcessorVo.java | 37 + .../OptionValueParameterProcessorVo.java | 25 + .../processor/PmmlParameterProcessorVo.java | 26 + .../processor/RuleParameterProcessorVo.java | 26 + .../SingleRuleParameterProcessorVo.java | 26 + .../vo/processor/SqlParameterProcessorVo.java | 52 + .../TernaryParameterProcessorVo.java | 48 + .../WhenThenParameterProcessorVo.java | 48 + .../IntegerRangeParameterValidatorVo.java | 14 + .../LengthRangeParameterValidatorVo.java | 14 + .../NotEmptyParameterValidatorVo.java | 14 + .../PatternParameterValidatorVo.java | 25 + .../validator/TrueParameterValidatorVo.java | 14 + .../rule/server/plugins/PluginManager.java | 176 + .../server/plugins/PluginSpiServiceImpl.java | 13 + .../server/plugins/item/LibExampleItem.java | 105 + .../plugins/item/ResourceExampleItem.java | 139 + .../item/wrapper/LibExampleWrapper.java | 175 + .../item/wrapper/ResourceExampleWrapper.java | 175 + .../ResourcePermissionWebController.java | 53 + .../controller/ResourceWebController.java | 302 + .../converter/ResourceEntityConverter.java | 179 + .../resource/entity/ModelResourceEntity.java | 139 + .../entity/ReleasableResourceEntity.java | 114 + .../resource/entity/ResourceEntity.java | 299 + .../entity/ScoreCardResourceEntity.java | 120 + .../ResourceAlreadyExistsException.java | 30 + .../repository/ResourceRepository.java | 94 + .../service/ResourceQueryService.java | 7 + .../resource/service/ResourceService.java | 139 + .../impl/ResourceQueryServiceImpl.java | 324 + .../service/impl/ResourceServiceImpl.java | 807 ++ .../support/ResourceEntityChangedEvent.java | 11 + .../service/support/ResourceWrapper.java | 63 + .../server/resource/vo/ModelResourceVo.java | 25 + .../resource/vo/ReleasableResourceVo.java | 91 + .../rule/server/resource/vo/ResourceVo.java | 85 + .../resource/vo/ScoreCardResourceVo.java | 13 + .../controller/ScoreCardVarWebController.java | 15 + .../ScoreCardVarEntityConverter.java | 171 + ...umberRangeScoreCardIndicatorVarEntity.java | 66 + .../entity/NumberRangeScoreCardVarEntity.java | 66 + .../OptionScoreCardIndicatorVarEntity.java | 66 + .../entity/OptionScoreCardVarEntity.java | 69 + .../ScoreCardIndicatorValueVarEntity.java | 50 + .../entity/ScoreCardIndicatorVarEntity.java | 77 + .../scorecard/entity/ScoreCardVarEntity.java | 155 + .../ScoreCardVarAlreadyExistsException.java | 28 + ...dVarCodeAndIndicatorCodeSameException.java | 28 + .../repository/ScoreCardVarRepository.java | 24 + .../service/ScoreCardVarService.java | 17 + .../service/impl/ScoreCardVarServiceImpl.java | 151 + .../ScoreCardVarEntityChangedEvent.java | 11 + .../NumberRangeScoreCardIndicatorVarVo.java | 26 + .../vo/NumberRangeScoreCardVarVo.java | 23 + .../vo/OptionScoreCardIndicatorVarVo.java | 24 + .../scorecard/vo/OptionScoreCardVarVo.java | 24 + .../vo/ScoreCardIndicatorValueVarVo.java | 13 + .../scorecard/vo/ScoreCardIndicatorVarVo.java | 41 + .../server/scorecard/vo/ScoreCardVarVo.java | 64 + .../RuleEngineServerConfigurationService.java | 28 + ...eEngineServerConfigurationServiceImpl.java | 41 + .../annotation/TestCaseParameterAble.java | 14 + .../TestCaseParameterBuilderType.java | 14 + .../bean/LibTestCaseParameterBuilder.java | 100 + .../bean/ModelTestCaseParameterBuilder.java | 144 + .../ScoreCardTestCaseParameterBuilder.java | 136 + .../bean/TestCaseParameterBuilderFactory.java | 42 + .../TestCaseParameterWebController.java | 50 + .../controller/TestCaseWebController.java | 62 + .../converter/LibTestCaseEntityConverter.java | 96 + .../ResourceTestCaseEntityConverter.java | 110 + .../TestCaseParameterEntityConverter.java | 79 + .../testcase/entity/LibTestCaseEntity.java | 48 + .../testcase/entity/ModelTestCaseEntity.java | 36 + .../entity/ResourceTestCaseEntity.java | 50 + .../entity/ScoreCardTestCaseEntity.java | 36 + .../testcase/entity/TestCaseEntity.java | 193 + .../entity/TestCaseParameterEntity.java | 162 + .../repository/LibTestCaseRepository.java | 11 + .../repository/ModelTestCaseRepository.java | 11 + .../ScoreCardTestCaseRepository.java | 11 + .../TestCaseParameterRepository.java | 13 + .../repository/TestCaseRepository.java | 8 + .../service/TestCaseParameterBuilder.java | 19 + .../service/TestCaseParameterService.java | 27 + .../testcase/service/TestCaseService.java | 53 + .../impl/TestCaseParameterServiceImpl.java | 44 + .../service/impl/TestCaseServiceImpl.java | 471 ++ .../server/testcase/vo/LibTestCaseVo.java | 23 + .../server/testcase/vo/ModelTestCaseVo.java | 13 + .../testcase/vo/ResourceTestCaseVo.java | 23 + .../testcase/vo/ScoreCardTestCaseVo.java | 13 + .../testcase/vo/TestCaseParameterVo.java | 86 + .../rule/server/testcase/vo/TestCaseVo.java | 85 + .../wrapper/TestCaseParameterWrapper.java | 184 + .../testcase/wrapper/TestCaseWrapper.java | 122 + .../util/VariableCodeAndNameReplacer.java | 41 + .../ResourceDeployApprovingController.java | 60 + ...ngineResourceDeployComplementListener.java | 58 + .../service/RuleEngineWorkflowService.java | 44 + .../impl/RuleEngineWorkflowServiceImpl.java | 219 + ...RuleEngineApprovingHistoryTaskWrapper.java | 77 + .../RuleEngineApprovingTaskWrapper.java | 116 + .../META-INF/platform/plugins/liquibase.json | 10 + .../META-INF/platform/plugins/menu.json | 88 + .../META-INF/platform/plugins/messages.json | 32 + .../META-INF/platform/plugins/parameter.json | 51 + .../platform/plugins/repositories.json | 38 + .../plugins/rule-engine-example-resource.json | 12 + .../main/resources/META-INF/spring.factories | 3 + .../i18n/dictionary/messages.properties | 109 + .../i18n/dictionary/messages_tw_CN.properties | 107 + .../i18n/dictionary/messages_zh_CN.properties | 107 + .../rule/server/i18n/lib/messages.properties | 84 + .../server/i18n/lib/messages_zh_CN.properties | 83 + .../engine/rule/server/i18n/menu.properties | 8 + .../rule/server/i18n/menu_zh_CN.properties | 8 + .../rule/server/i18n/messages.properties | 182 + .../server/i18n/messages_zh_CN.properties | 185 + .../server/i18n/migration/messages.properties | 33 + .../i18n/migration/messages_zh_CN.properties | 33 + .../server/i18n/model/messages.properties | 97 + .../i18n/model/messages_zh_CN.properties | 97 + .../rule/server/i18n/parameter.properties | 9 + .../server/i18n/parameter_zh_CN.properties | 9 + .../server/i18n/resource/messages.properties | 59 + .../i18n/resource/messages_zh_CN.properties | 62 + .../server/i18n/scorecard/messages.properties | 28 + .../i18n/scorecard/messages_zh_CN.properties | 29 + .../server/i18n/testcase/messages.properties | 53 + .../i18n/testcase/messages_zh_CN.properties | 56 + .../server/i18n/workflow/messages.properties | 31 + .../i18n/workflow/messages_zh_CN.properties | 30 + ...20515__Rule Engine Database Schema DDL.xml | 656 ++ .../attachment/api/enums/PersistenceType.java | 9 + io.sc.platform.attachment/README.adoc | 0 .../src/main/resources/META-INF/MANIFEST.MF | 4 + .../META-INF/platform/plugins/liquibase.json | 10 + .../platform/plugins/repositories.json | 16 + ...220606__Attachment Database Schema DDL.xml | 40 + io.sc.platform.core.frontend/package.json | 2 +- .../src/platform/utils/Tools.ts | 34 + .../template-project/package.json | 4 +- .../io/sc/platform/core/i18n/words.properties | 10 +- .../platform/core/i18n/words_tw_CN.properties | 10 +- .../platform/core/i18n/words_zh_CN.properties | 10 +- .../package.json | 4 +- io.sc.platform.lcdp.frontend/package.json | 4 +- io.sc.platform.mvc.frontend/package.json | 4 +- .../service/support/criteria/impl/InSet.java | 8 + io.sc.platform.security.frontend/package.json | 4 +- io.sc.platform.system.frontend/package.json | 4 +- .../role/jpa/repository/RoleRepository.java | 3 + .../system/role/service/RoleService.java | 6 + .../role/service/impl/RoleServiceImpl.java | 5 + io.sc.standard.frontend/package.json | 4 +- settings.gradle | 8 + 524 files changed, 68213 insertions(+), 23 deletions(-) create mode 100644 io.sc.engine.rule.client.spring/README.adoc create mode 100644 io.sc.engine.rule.client.spring/src/main/java/io/sc/engine/rule/client/spring/service/LocalLoader.java create mode 100644 io.sc.engine.rule.client.spring/src/main/java/io/sc/engine/rule/client/spring/service/impl/LocalLoaderImpl.java create mode 100644 io.sc.engine.rule.client.spring/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer create mode 100644 io.sc.engine.rule.client/README.adoc create mode 100644 io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/Loader.java create mode 100644 io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/enums/LoaderMode.java create mode 100644 io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/local/LocalExecutor.java create mode 100644 io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteExecutor.java create mode 100644 io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteLoader.java create mode 100644 io.sc.engine.rule.core/README.adoc create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/ResourceAbstract.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/Rule.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/RuleResult.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/SingleRuleResult.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCode.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ModelAbstract.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ParameterResult.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceResult.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper4Lib.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper4Resource.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ValidateField.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ValidateResult.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/lib/LibUtil.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/parameter/ParameterGroovyCodeContributionItem.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/NumberRange.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/Option.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/Rule.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/SingleRule.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/SqlFieldMapping.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/convert/support/JsonStringToObjectConverterFactory.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/convert/support/MapToObjectConverterFactory.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/convert/support/NumberToNumberConverterFactory.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/convert/support/ObjectToStringConverter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/convert/support/StringToBooleanConverter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/convert/support/StringToDateConverter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/convert/support/StringToNumberConverterFactory.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/IndicatorType.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/LibType.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ModelCategory.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ParameterType.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ProcessorType.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ResourceType.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/RuntimeInputParameterType.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ScoreCardVarType.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/TestCaseOwnerType.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/TestResult.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ValidatorType.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ValueType.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/function/JpmmlEvaluator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/function/NormalDistributionFunction.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/function/StringFunction.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/po/ParallelNode.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/po/ResourceAbstractNode.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/po/StartNode.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/mxgraph/po/SubModelAbstractNode.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/dictionary/JavaClassDictionary.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/dictionary/ReleasableDictionary.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/dictionary/UserDefinedJavaClassDictionary.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/dictionary/UserDefinedJavaClassField.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/Lib.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/RangeIndicatorValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/ReleasableLib.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/indicator/IndicatorIndicator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/indicator/InterfaceIndicator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/processor/NumberRangeIndicatorProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/processor/SqlIndicatorProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/processor/TernaryIndicatorProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/processor/WhenThenIndicatorProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/validator/IntegerRangeIndicatorValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/validator/LengthRangeIndicatorValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/validator/NotEmptyIndicatorValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/validator/PatternIndicatorValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/lib/validator/TrueIndicatorValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/Model.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/Parameter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/ParameterInOptionItem.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/ParameterProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/ParameterValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/RangeParameterValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/InOptionParameter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/InParameter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/InSubOutParameter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/IntermediateParameter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/OutParameter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/RuleResultParameter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/parameter/SingleRuleResultParameter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/processor/NumberRangeParameterProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/processor/OptionValueParameterProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/processor/PmmlParameterProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/processor/RuleParameterProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/processor/SingleRuleParameterProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/processor/SqlParameterProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/processor/TernaryParameterProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/processor/WhenThenParameterProcessor.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/validator/IntegerRangeParameterValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/validator/LengthRangeParameterValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/validator/NotEmptyParameterValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/validator/PatternParameterValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/model/validator/TrueParameterValidator.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/resource/ModelResource.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/resource/ReleasableResource.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/resource/Resource.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/resource/ScoreCardResource.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/scorecard/NumberRangeScoreCardIndicatorVar.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/scorecard/NumberRangeScoreCardVar.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/scorecard/OptionScoreCardIndicatorVar.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/scorecard/OptionScoreCardVar.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/scorecard/ScoreCardIndicatorValueVar.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/scorecard/ScoreCardIndicatorVar.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/scorecard/ScoreCardVar.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/testcase/LibTestCase.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/testcase/ModelTestCase.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/testcase/ResourceTestCase.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/testcase/ScoreCardTestCase.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/testcase/TestCase.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/po/testcase/TestCaseParameter.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/JacksonObjectMapper.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/Logger.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/NumberFormater.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/ObjectUtil.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/PinyinUtil.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/Strings.java create mode 100644 io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/util/TimeTracer.java create mode 100644 io.sc.engine.rule.core/src/main/resources/META-INF/MANIFEST.MF create mode 100644 io.sc.engine.rule.core/src/main/resources/META-INF/platform/plugins/messages.json create mode 100644 io.sc.engine.rule.frontend/nodemon.json create mode 100644 io.sc.engine.rule.frontend/package.json create mode 100644 io.sc.engine.rule.frontend/postcss.config.cjs create mode 100644 io.sc.engine.rule.frontend/public/login-bg.jpg create mode 100644 io.sc.engine.rule.frontend/public/logo.svg create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/Pacifico-Regular.ttf create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/css/loading.gif create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/css/luckysheet.css create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/css/menuSprite.svg create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/css/paint_16px.ico create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/css/paint_24px.ico create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/css/paint_32px.ico create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/css/sprite38.svg create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/css/waffle_sprite.png create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetCell.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetChart.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetComment.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetConditionFormat.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetDataVerification.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetFormula.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetPicture.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetPivotTable.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetPivotTableData.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetSparkline.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetTable.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/luckysheet.umd.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/luckysheet.umd.js.map create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/plugins/css/pluginsCss.css create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/plugins/images/js.png create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/plugins/images/ui-icons_444444_256x240.png create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/plugins/images/ui-icons_555555_256x240.png create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/plugins/images/ui-icons_777620_256x240.png create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/plugins/images/ui-icons_777777_256x240.png create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/plugins/images/ui-icons_cc0000_256x240.png create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/plugins/images/ui-icons_ffffff_256x240.png create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/plugins/js/plugin.js create mode 100644 io.sc.engine.rule.frontend/public/webjars/luckysheet/2.1.13/plugins/plugins.css create mode 100644 io.sc.engine.rule.frontend/public/webjars/tailwindcss/3.3.5/tailwindcss.js create mode 100644 io.sc.engine.rule.frontend/src/css/tailwind.css create mode 100644 io.sc.engine.rule.frontend/src/i18n/messages.json create mode 100644 io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json create mode 100644 io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json create mode 100644 io.sc.engine.rule.frontend/src/main.ts create mode 100644 io.sc.engine.rule.frontend/src/menus/menus.json create mode 100644 io.sc.engine.rule.frontend/src/routes/routes.json create mode 100644 io.sc.engine.rule.frontend/src/shims-vue.d.ts create mode 100644 io.sc.engine.rule.frontend/src/views/lib/Lib.vue create mode 100644 io.sc.engine.rule.frontend/src/views/migration/Migration.vue create mode 100644 io.sc.engine.rule.frontend/src/views/resources/Resources.vue create mode 100644 io.sc.engine.rule.frontend/src/views/resources/designer/Model.vue create mode 100644 io.sc.engine.rule.frontend/src/views/resources/designer/Option.vue create mode 100644 io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue create mode 100644 io.sc.engine.rule.frontend/src/views/resources/designer/Processor.vue create mode 100644 io.sc.engine.rule.frontend/src/views/resources/designer/Testcase.vue create mode 100644 io.sc.engine.rule.frontend/src/views/resources/designer/Validator.vue create mode 100644 io.sc.engine.rule.frontend/src/views/testcase/Testcase.vue create mode 100644 io.sc.engine.rule.frontend/src/views/workflow/Workflow.vue create mode 100644 io.sc.engine.rule.frontend/tailwind.config.cjs create mode 100644 io.sc.engine.rule.frontend/tsconfig.json create mode 100644 io.sc.engine.rule.frontend/util-components-generator.cjs create mode 100644 io.sc.engine.rule.frontend/util-frontend-register.cjs create mode 100644 io.sc.engine.rule.frontend/webpack.config.common.cjs create mode 100644 io.sc.engine.rule.frontend/webpack.config.mf.cjs create mode 100644 io.sc.engine.rule.frontend/webpack.env.build.cjs create mode 100644 io.sc.engine.rule.frontend/webpack.env.prod.cjs create mode 100644 io.sc.engine.rule.frontend/webpack.env.serve.cjs create mode 100644 io.sc.engine.rule.sample/README.adoc create mode 100644 io.sc.engine.rule.server/README.adoc create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/common/bean/JpaEntityChangedListener.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/controller/UserDefinedJavaClassFieldWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/converter/UserDefinedJavaClassFieldConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/JavaClassDictionaryEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/ReleasableDictionaryEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/UserDefinedJavaClassDictionaryEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/entity/UserDefinedJavaClassFieldEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/exception/JavaClassNotExistsException.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/exception/UserDefinedJavaClassFieldAlreadyExistsException.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/exception/UserDefinedJavaClassFieldCodeOrNameNotAllowSameWithDictionaryException.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/repository/UserDefinedJavaClassFieldRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/service/UserDefinedJavaClassFieldService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/service/impl/UserDefinedJavaClassFieldServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/service/support/ReleasableDictionaryEntityChangedEvent.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/service/support/UserDefinedJavaClassFieldEntityChangedEvent.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/vo/JavaClassDictionaryVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/vo/ReleasableDictionaryVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/vo/UserDefinedJavaClassDictionaryVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/dictionary/vo/UserDefinedJavaClassFieldVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/JpaEntityPersistentEventListener.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/IndicatorEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/IndicatorProcessorEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/IndicatorValidatorEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/LibEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/ModelEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/ParameterEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/ParameterProcessorEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/ParameterValidatorEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/ResourceEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/ScoreCardVarEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/jpa/listener/handler/UserDefinedJavaClassFieldEntityEventHandler.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/controller/IndicatorProcessorWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/controller/IndicatorValidatorWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/controller/IndicatorWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/controller/LibWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/converter/LibEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/IndicatorValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/LibEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/RangeIndicatorValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/ReleasableLibEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/indicator/IndicatorIndicatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/indicator/InterfaceIndicatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/NumberRangeIndicatorProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/SqlIndicatorProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/TernaryIndicatorProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/processor/WhenThenIndicatorProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/validator/IntegerRangeIndicatorValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/validator/LengthRangeIndicatorValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/validator/NotEmptyIndicatorValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/validator/PatternIndicatorValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/entity/validator/TrueIndicatorValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/exception/LibAlreadyExistsException.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/repository/IndicatorProcessorRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/repository/IndicatorRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/repository/IndicatorValidatorRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/repository/LibRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/IndicatorProcessorService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/IndicatorService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/LibService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/impl/IndicatorProcessorServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/impl/IndicatorServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/impl/IndicatorValidatorServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/impl/LibServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/support/IndicatorWrapper.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/support/LibEntityChangedEvent.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/support/LibWrapper.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/service/support/LibWrapperMap.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/IndicatorProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/IndicatorValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/IndicatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/LibVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/RangeIndicatorValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/ReleasableLibVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/indicator/IndicatorIndicatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/indicator/InterfaceIndicatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/processor/NumberRangeIndicatorProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/processor/SqlIndicatorProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/processor/TernaryIndicatorProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/processor/WhenThenIndicatorProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/validator/IntegerRangeIndicatorValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/validator/LengthRangeIndicatorValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/validator/NotEmptyIndicatorValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/validator/PatternIndicatorValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/lib/vo/validator/TrueIndicatorValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/migration/controller/MigrationWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/migration/service/MigrationService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/migration/service/impl/MigrationServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ModelWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterInOptionItemWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterProcessorWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterValidatorWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ModelEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterInOptionItemEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterProcessorEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/converter/ParameterValidatorEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterInOptionItemEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ParameterValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/RangeParameterValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/InOptionParameterEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/InParameterEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/InSubOutParameterEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/IntermediateParameterEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/OutParameterEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/RuleResultParameterEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/parameter/SingleRuleResultParameterEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/NumberRangeParameterProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/OptionValueParameterProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/PmmlParameterProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/RuleParameterProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/SingleRuleParameterProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/SqlParameterProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/TernaryParameterProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/processor/WhenThenParameterProcessorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/validator/IntegerRangeParameterValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/validator/LengthRangeParameterValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/validator/NotEmptyParameterValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/validator/PatternParameterValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/validator/TrueParameterValidatorEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/exception/ModelEntityAlreadyExistsException.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/exception/ParameterEntityAlreadyExistsException.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/exception/RootModelEntityNotExistsException.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ModelRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterInOptionItemRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterProcessorRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterValidatorRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ModelService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ParameterInOptionItemService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ParameterProcessorService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ParameterService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ParameterValidatorService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ModelServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterInOptionItemServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterProcessorServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterValidatorServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/support/ModelEntityChangedEvent.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/support/ParameterEntityChangedEvent.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/support/ParameterIndicatorsWrapper.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/support/ParameterProcessorEntityChangedEvent.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/support/ParemterHints.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/support/PmmlDataTypeConvertor.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/support/ModelJsonSerializer.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/support/ParameterInOptionItemJsonSerializer.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/support/ParameterJsonSerializer.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/support/ParameterProcessorJsonSerializer.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/support/ParameterValidatorJsonSerializer.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/support/RangeParameterValidatorJsonSerializer.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/support/processor/SqlQueryRequest.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/support/processor/SqlQueryResult.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/ModelVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/ParameterInOptionItemVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/ParameterProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/ParameterValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/ParameterVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/RangeParameterValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/InOptionParameterVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/InParameterVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/InSubOutParameterVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/IntermediateParameterVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/OutParameterVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/RuleResultParameterVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/parameter/SingleRuleResultParameterVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/processor/NumberRangeParameterProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/processor/OptionValueParameterProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/processor/PmmlParameterProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/processor/RuleParameterProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/processor/SingleRuleParameterProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/processor/SqlParameterProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/processor/TernaryParameterProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/processor/WhenThenParameterProcessorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/validator/IntegerRangeParameterValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/validator/LengthRangeParameterValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/validator/NotEmptyParameterValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/validator/PatternParameterValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/vo/validator/TrueParameterValidatorVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/plugins/PluginManager.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/plugins/PluginSpiServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/plugins/item/LibExampleItem.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/plugins/item/ResourceExampleItem.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/plugins/item/wrapper/LibExampleWrapper.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/plugins/item/wrapper/ResourceExampleWrapper.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/controller/ResourcePermissionWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/controller/ResourceWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/converter/ResourceEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/entity/ModelResourceEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/entity/ReleasableResourceEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/entity/ResourceEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/entity/ScoreCardResourceEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/exception/ResourceAlreadyExistsException.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/repository/ResourceRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/service/ResourceQueryService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/service/ResourceService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/service/impl/ResourceQueryServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/service/impl/ResourceServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/service/support/ResourceEntityChangedEvent.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/service/support/ResourceWrapper.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/vo/ModelResourceVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/vo/ReleasableResourceVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/vo/ResourceVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/resource/vo/ScoreCardResourceVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/controller/ScoreCardVarWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/converter/ScoreCardVarEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/entity/NumberRangeScoreCardIndicatorVarEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/entity/NumberRangeScoreCardVarEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/entity/OptionScoreCardIndicatorVarEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/entity/OptionScoreCardVarEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/entity/ScoreCardIndicatorValueVarEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/entity/ScoreCardIndicatorVarEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/entity/ScoreCardVarEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/exception/ScoreCardVarAlreadyExistsException.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/exception/ScoreCardVarCodeAndIndicatorCodeSameException.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/repository/ScoreCardVarRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/service/ScoreCardVarService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/service/impl/ScoreCardVarServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/service/support/ScoreCardVarEntityChangedEvent.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/vo/NumberRangeScoreCardIndicatorVarVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/vo/NumberRangeScoreCardVarVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/vo/OptionScoreCardIndicatorVarVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/vo/OptionScoreCardVarVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/vo/ScoreCardIndicatorValueVarVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/vo/ScoreCardIndicatorVarVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/scorecard/vo/ScoreCardVarVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/service/RuleEngineServerConfigurationService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/service/impl/RuleEngineServerConfigurationServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/annotation/TestCaseParameterAble.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/annotation/TestCaseParameterBuilderType.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/bean/LibTestCaseParameterBuilder.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/bean/ModelTestCaseParameterBuilder.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/bean/ScoreCardTestCaseParameterBuilder.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/bean/TestCaseParameterBuilderFactory.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/controller/TestCaseParameterWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/controller/TestCaseWebController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/converter/LibTestCaseEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/converter/ResourceTestCaseEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/converter/TestCaseParameterEntityConverter.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/LibTestCaseEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/ModelTestCaseEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/ResourceTestCaseEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/ScoreCardTestCaseEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseParameterEntity.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/repository/LibTestCaseRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/repository/ModelTestCaseRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/repository/ScoreCardTestCaseRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/repository/TestCaseParameterRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/repository/TestCaseRepository.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/TestCaseParameterBuilder.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/TestCaseParameterService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/TestCaseService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/impl/TestCaseParameterServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/impl/TestCaseServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/vo/LibTestCaseVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/vo/ModelTestCaseVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/vo/ResourceTestCaseVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/vo/ScoreCardTestCaseVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/vo/TestCaseParameterVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/vo/TestCaseVo.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/wrapper/TestCaseParameterWrapper.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/wrapper/TestCaseWrapper.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/util/VariableCodeAndNameReplacer.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/workflow/controller/ResourceDeployApprovingController.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/workflow/listener/RuleEngineResourceDeployComplementListener.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/workflow/service/RuleEngineWorkflowService.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/workflow/service/impl/RuleEngineWorkflowServiceImpl.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/workflow/service/support/RuleEngineApprovingHistoryTaskWrapper.java create mode 100644 io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/workflow/service/support/RuleEngineApprovingTaskWrapper.java create mode 100644 io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/liquibase.json create mode 100644 io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/menu.json create mode 100644 io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/messages.json create mode 100644 io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/parameter.json create mode 100644 io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/repositories.json create mode 100644 io.sc.engine.rule.server/src/main/resources/META-INF/platform/plugins/rule-engine-example-resource.json create mode 100644 io.sc.engine.rule.server/src/main/resources/META-INF/spring.factories create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/dictionary/messages.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/dictionary/messages_tw_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/dictionary/messages_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/lib/messages.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/lib/messages_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/menu.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/menu_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/messages.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/messages_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/migration/messages.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/migration/messages_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/model/messages.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/model/messages_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/parameter.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/parameter_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/resource/messages.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/resource/messages_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/scorecard/messages.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/scorecard/messages_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/testcase/messages.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/testcase/messages_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/workflow/messages.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/io/sc/engine/rule/server/i18n/workflow/messages_zh_CN.properties create mode 100644 io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule Engine Database Schema DDL.xml create mode 100644 io.sc.platform.attachment.api/src/main/java/io/sc/platform/attachment/api/enums/PersistenceType.java create mode 100644 io.sc.platform.attachment/README.adoc create mode 100644 io.sc.platform.attachment/src/main/resources/META-INF/MANIFEST.MF create mode 100644 io.sc.platform.attachment/src/main/resources/META-INF/platform/plugins/liquibase.json create mode 100644 io.sc.platform.attachment/src/main/resources/META-INF/platform/plugins/repositories.json create mode 100644 io.sc.platform.attachment/src/main/resources/liquibase/io.sc.platform.attachment_8.0.0_20220606__Attachment Database Schema DDL.xml diff --git a/erm.frontend/package.json b/erm.frontend/package.json index e3c476a1..c8dbeea5 100644 --- a/erm.frontend/package.json +++ b/erm.frontend/package.json @@ -1,6 +1,6 @@ { "name": "erm.frontend", - "version": "8.1.27", + "version": "8.1.28", "description": "", "private": false, "keywords": [ @@ -80,7 +80,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.145", + "platform-core": "8.1.149", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", diff --git a/io.sc.engine.mv.frontend/package.json b/io.sc.engine.mv.frontend/package.json index 117fed30..f5d33058 100644 --- a/io.sc.engine.mv.frontend/package.json +++ b/io.sc.engine.mv.frontend/package.json @@ -1,6 +1,6 @@ { "name": "io.sc.engine.mv.frontend", - "version": "8.1.27", + "version": "8.1.28", "description": "", "private": false, "keywords": [ @@ -80,7 +80,7 @@ "luckyexcel": "1.0.1", "mockjs": "1.1.0", "pinia": "2.1.7", - "platform-core": "8.1.145", + "platform-core": "8.1.149", "quasar": "2.14.2", "tailwindcss": "3.4.0", "vue": "3.4.3", diff --git a/io.sc.engine.mv/src/main/resources/META-INF/platform/plugins/liquibase.json b/io.sc.engine.mv/src/main/resources/META-INF/platform/plugins/liquibase.json index 509b0240..ef752317 100644 --- a/io.sc.engine.mv/src/main/resources/META-INF/platform/plugins/liquibase.json +++ b/io.sc.engine.mv/src/main/resources/META-INF/platform/plugins/liquibase.json @@ -13,7 +13,7 @@ [ { "category" : "install", - "order" : 10000, + "order" : 12000, "description":"模型验证工具", "locations":[ "liquibase/io.sc.engine.mv_8.0.0_20221020__Model Validate Database Schema DDL.xml" diff --git a/io.sc.engine.rule.client.spring/README.adoc b/io.sc.engine.rule.client.spring/README.adoc new file mode 100644 index 00000000..e69de29b diff --git a/io.sc.engine.rule.client.spring/src/main/java/io/sc/engine/rule/client/spring/service/LocalLoader.java b/io.sc.engine.rule.client.spring/src/main/java/io/sc/engine/rule/client/spring/service/LocalLoader.java new file mode 100644 index 00000000..f27ca78b --- /dev/null +++ b/io.sc.engine.rule.client.spring/src/main/java/io/sc/engine/rule/client/spring/service/LocalLoader.java @@ -0,0 +1,10 @@ +package io.sc.engine.rule.client.spring.service; + +import io.sc.engine.rule.client.Loader; + +/** + * 本地资源定义加载器接口 + */ +public interface LocalLoader extends Loader{ + +} diff --git a/io.sc.engine.rule.client.spring/src/main/java/io/sc/engine/rule/client/spring/service/impl/LocalLoaderImpl.java b/io.sc.engine.rule.client.spring/src/main/java/io/sc/engine/rule/client/spring/service/impl/LocalLoaderImpl.java new file mode 100644 index 00000000..00c3c3b6 --- /dev/null +++ b/io.sc.engine.rule.client.spring/src/main/java/io/sc/engine/rule/client/spring/service/impl/LocalLoaderImpl.java @@ -0,0 +1,94 @@ +package io.sc.engine.rule.client.spring.service.impl; + +import java.lang.reflect.Method; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; +import io.sc.engine.rule.client.spring.service.LocalLoader; +import io.sc.engine.rule.core.classes.ResourceAbstract; +import io.sc.engine.rule.core.code.impl.support.ResourceWrapper; + +@Service("reLocalLoader") +public class LocalLoaderImpl implements LocalLoader{ + @Autowired private ApplicationContext applicationContext; + private Map cache =new ConcurrentHashMap(); + + @Override + public void cleanCache() throws Exception { + cache.clear(); + } + + @Override + public ResourceWrapper getResourceById(String resourceId) throws Exception { + Object bean =applicationContext.getBean("reResourceService"); + if(bean!=null) { + Method method =bean.getClass().getMethod("getDefineById", String.class); + ResourceWrapper result =(ResourceWrapper)method.invoke(bean, resourceId); + return result; + } + return null; + } + + @Override + public ResourceWrapper getResourceByCode(String resourceCode, Integer version) throws Exception { + if(version==null) {//未指定版本时,不缓存,加载最新的 + Object bean =applicationContext.getBean("reResourceService"); + if(bean!=null) { + Method method =bean.getClass().getMethod("getDefineByCode", String.class,Integer.class); + return (ResourceWrapper)method.invoke(bean, resourceCode,version); + } + }else {//指定版本时,缓存 + if(resourceCode!=null && !"".equals(resourceCode.trim())) { + String key =getCacheKey(resourceCode,version); + ResourceWrapper wrapper =cache.get(key); + if(wrapper!=null) { + return wrapper; + }else { + Object bean =applicationContext.getBean("reResourceService"); + if(bean!=null) { + Method method =bean.getClass().getMethod("getDefineByCode", String.class,Integer.class); + wrapper =(ResourceWrapper)method.invoke(bean, resourceCode,version); + if(wrapper!=null) { + key =getCacheKey(resourceCode,version); + if(key!=null && !"".equals(key.trim())) { + cache.put(key, wrapper); + return wrapper; + } + } + } + } + } + return null; + } + + return null; + } + + @SuppressWarnings("all") + @Override + public List getAllReleasableResourceAbstract() throws Exception { + Object bean =applicationContext.getBean("reResourceService"); + if(bean!=null) { + Method method =bean.getClass().getMethod("getAllReleasableResourceAbstract"); + if(method!=null) { + return (List)method.invoke(bean); + } + } + return null; + } + + private String getCacheKey(String code,Integer version) { + String result =""; + if(code!=null && !"".equals(code.trim())) { + result +=code; + } + if(version!=null) { + result +="_" + version; + } + return result; + } +} diff --git a/io.sc.engine.rule.client.spring/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer b/io.sc.engine.rule.client.spring/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer new file mode 100644 index 00000000..5c3a8460 --- /dev/null +++ b/io.sc.engine.rule.client.spring/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer @@ -0,0 +1 @@ +io.sc.engine.rule.client.spring.initializer.AutoCompileDeployedModelInitializer \ No newline at end of file diff --git a/io.sc.engine.rule.client/README.adoc b/io.sc.engine.rule.client/README.adoc new file mode 100644 index 00000000..e69de29b diff --git a/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/Loader.java b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/Loader.java new file mode 100644 index 00000000..c854fd00 --- /dev/null +++ b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/Loader.java @@ -0,0 +1,44 @@ +package io.sc.engine.rule.client; + +import io.sc.engine.rule.core.classes.ResourceAbstract; +import io.sc.engine.rule.core.code.impl.support.ResourceWrapper; + +import java.util.List; + + +/** + * 客户端模型定义加载器接口 + */ +public interface Loader { + /** + * 获取资源定义 + * 说明: 通过 ID 加载资源定义时,系统不做缓存 + * @param resourceId 资源唯一标识 + * @return 资源定义 PO 对象 + * @throws Exception 违例 + */ + public ResourceWrapper getResourceById(String resourceId) throws Exception; + + /** + * 获取资源定义 + * 说明: 通过代码和版本加载资源定义时,如果有版本,则缓存,反之,不缓存 + * @param resourceCode 资源代码 + * @param version 资源版本 + * @return 资源定义 PO 对象 + * @throws Exception 违例 + */ + public ResourceWrapper getResourceByCode(String resourceCode,Integer version) throws Exception; + + /** + * 获取所有顶级资源摘要信息 + * @return 所有顶级资源摘要信息 + * @throws Exception 违例 + */ + public List getAllReleasableResourceAbstract() throws Exception; + + /** + * 清除已经加载的模型定义缓存 + * @throws Exception 违例 + */ + public void cleanCache() throws Exception; +} diff --git a/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/enums/LoaderMode.java b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/enums/LoaderMode.java new file mode 100644 index 00000000..4800bcf1 --- /dev/null +++ b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/enums/LoaderMode.java @@ -0,0 +1,18 @@ +package io.sc.engine.rule.client.enums; + +/** + * 模型定义加载器模式 + */ +public enum LoaderMode { + LOCAL, //本地 + REMOTE; //远程 + + public static LoaderMode parse(String str) { + if("LOCAL".equalsIgnoreCase(str)) { + return LoaderMode.LOCAL; + }else if("REMOTE".equalsIgnoreCase(str)) { + return LoaderMode.REMOTE; + } + return null; + } +} diff --git a/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/local/LocalExecutor.java b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/local/LocalExecutor.java new file mode 100644 index 00000000..b0f23039 --- /dev/null +++ b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/local/LocalExecutor.java @@ -0,0 +1,134 @@ +package io.sc.engine.rule.client.local; + +import io.sc.engine.rule.client.Executor; +import io.sc.engine.rule.client.Loader; +import io.sc.engine.rule.client.runtime.EngineRuntime; +import io.sc.engine.rule.core.code.impl.support.ResourceResult; +import io.sc.engine.rule.core.code.impl.support.ResourceWrapper; + +import java.util.Map; + + +/** + * 本地执行客户端 + */ +public class LocalExecutor implements Executor { + private Loader loader; + + public LocalExecutor() {} + + public LocalExecutor(Loader loader) { + this.loader =loader; + } + + @Override + public void compileById(String resourceId) throws Exception { + ResourceWrapper wrapper =loader.getResourceById(resourceId); + EngineRuntime.getInstance().compileById(resourceId,wrapper); + } + + @Override + public void compileByCode(String resourceCode, Integer version) throws Exception { + ResourceWrapper wrapper =loader.getResourceByCode(resourceCode,version); + EngineRuntime.getInstance().compileByCode(resourceCode,version,wrapper); + } + + @Override + public ResourceResult executeById(String resourceId, String json) throws Exception { + ResourceWrapper wrapper =loader.getResourceById(resourceId); + return EngineRuntime.getInstance().executeById(this,resourceId,wrapper, json); + } + + @Override + public ResourceResult executeById(String resourceId, String subModelCode, String json) throws Exception { + ResourceWrapper wrapper =loader.getResourceById(resourceId); + return EngineRuntime.getInstance().executeById(this,resourceId,wrapper,subModelCode,json); + } + + @Override + public ResourceResult executeById(String resourceId, Map map) throws Exception { + ResourceWrapper wrapper =loader.getResourceById(resourceId); + return EngineRuntime.getInstance().executeById(this,resourceId,wrapper, map); + } + + @Override + public ResourceResult executeById(String resourceId, String subModelCode, Map map) throws Exception { + ResourceWrapper wrapper =loader.getResourceById(resourceId); + return EngineRuntime.getInstance().executeById(this,resourceId,wrapper,subModelCode,map); + } + + @Override + public ResourceResult executeByCode(String resourceCode, Integer version, String json) throws Exception { + ResourceWrapper wrapper =loader.getResourceByCode(resourceCode, version); + return EngineRuntime.getInstance().executeByCode(this,resourceCode,version,wrapper, json); + } + + @Override + public ResourceResult executeByCode(String resourceCode, Integer version, String subModelCode, String json) throws Exception { + ResourceWrapper wrapper =loader.getResourceByCode(resourceCode, version); + return EngineRuntime.getInstance().executeByCode(this,resourceCode,version,wrapper,subModelCode,json); + } + + @Override + public ResourceResult executeByCode(String resourceCode, Integer version, Map map) throws Exception { + ResourceWrapper wrapper =loader.getResourceByCode(resourceCode, version); + return EngineRuntime.getInstance().executeByCode(this,resourceCode,version,wrapper, map); + } + + @Override + public ResourceResult executeByCode(String resourceCode, Integer version, String subModelCode, Map map) throws Exception { + ResourceWrapper wrapper =loader.getResourceByCode(resourceCode, version); + return EngineRuntime.getInstance().executeByCode(this,resourceCode,version,wrapper,subModelCode,map); + } + + + @Override + public void compileByIdForTest(String resourceId) throws Exception { + ResourceWrapper wrapper =loader.getResourceById(resourceId); + wrapper.setIsExecuteTestCase(true); + EngineRuntime.getInstance().compileById(resourceId,wrapper); + } + + @Override + public void compileByCodeForTest(String resourceCode, Integer version) throws Exception { + ResourceWrapper wrapper =loader.getResourceByCode(resourceCode,version); + wrapper.setIsExecuteTestCase(true); + EngineRuntime.getInstance().compileByCode(resourceCode,version,wrapper); + } + + @Override + public ResourceResult executeByIdForTest(String resourceId, Map map) throws Exception { + ResourceWrapper wrapper =loader.getResourceById(resourceId); + wrapper.setIsExecuteTestCase(true); + return EngineRuntime.getInstance().executeById(this,resourceId,wrapper, map); + } + + @Override + public ResourceResult executeByIdForTest(String resourceId, String subModelCode, Map map) throws Exception { + ResourceWrapper wrapper =loader.getResourceById(resourceId); + wrapper.setIsExecuteTestCase(true); + return EngineRuntime.getInstance().executeById(this,resourceId,wrapper,subModelCode,map); + } + + @Override + public ResourceResult executeByCodeForTest(String resourceCode, Integer version, Map map) throws Exception { + ResourceWrapper wrapper =loader.getResourceByCode(resourceCode, version); + wrapper.setIsExecuteTestCase(true); + return EngineRuntime.getInstance().executeByCode(this,resourceCode,version,wrapper, map); + } + + @Override + public ResourceResult executeByCodeForTest(String resourceCode, Integer version, String subModelCode, Map map) throws Exception { + ResourceWrapper wrapper =loader.getResourceByCode(resourceCode, version); + wrapper.setIsExecuteTestCase(true); + return EngineRuntime.getInstance().executeByCode(this,resourceCode,version,wrapper,subModelCode,map); + } + + public Loader getLoader() { + return loader; + } + + public void setLoader(Loader loader) { + this.loader = loader; + } +} diff --git a/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteExecutor.java b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteExecutor.java new file mode 100644 index 00000000..48faa59b --- /dev/null +++ b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteExecutor.java @@ -0,0 +1,148 @@ +package io.sc.engine.rule.client.remote; + +import java.util.Map; + +import io.sc.engine.rule.client.Executor; +import io.sc.engine.rule.client.Loader; +import io.sc.engine.rule.core.code.impl.support.ResourceResult; +import io.sc.engine.rule.core.util.HttpRequestUtil; +import io.sc.engine.rule.core.util.JacksonObjectMapper; + +/** + * 远程执行客户端 + */ +public class RemoteExecutor implements Executor{ + private String remoteApiUrl; + private Loader loader; + + public RemoteExecutor() {} + public RemoteExecutor(String remoteApiUrl) { + this.remoteApiUrl =remoteApiUrl; + this.loader =new RemoteLoader(remoteApiUrl); + } + + @Override + public void compileById(String resourceId) throws Exception { + throw new RuntimeException("Remote Executor NOT Supported compile!"); + } + + @Override + public void compileByCode(String resourceCode, Integer version) throws Exception { + throw new RuntimeException("Remote Executor NOT Supported compile!"); + } + @Override + public ResourceResult executeById(String resourceId,String json) throws Exception { + String result =HttpRequestUtil.post(getApiUrlById(resourceId), "",json); + return JacksonObjectMapper.getDefaultObjectMapper().readValue(result, ResourceResult.class); + } + + @Override + public ResourceResult executeById(String resourceId, String subModelCode, String json) throws Exception { + String result =HttpRequestUtil.post(getApiUrlById(resourceId,subModelCode), "",json); + return JacksonObjectMapper.getDefaultObjectMapper().readValue(result, ResourceResult.class); + } + + @Override + public ResourceResult executeById(String resourceId, Map map) throws Exception { + return executeById(resourceId,JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(map)); + } + + @Override + public ResourceResult executeById(String resourceId, String subModelCode, Map map) throws Exception { + return executeById(resourceId,subModelCode,JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(map)); + } + + @Override + public ResourceResult executeByCode(String resourceCode, Integer version,String json) throws Exception{ + return executeByCode(resourceCode,version,null,json); + } + + @Override + public ResourceResult executeByCode(String resourceCode, Integer version, String subModelCode, String json) throws Exception { + String result =HttpRequestUtil.post(getApiUrlByCode(resourceCode,version,subModelCode), "",json); + return JacksonObjectMapper.getDefaultObjectMapper().readValue(result, ResourceResult.class); + } + + @Override + public ResourceResult executeByCode(String resourceCode, Integer version, Map map) throws Exception { + return executeByCode(resourceCode,version,JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(map)); + } + + @Override + public ResourceResult executeByCode(String resourceCode, Integer version, String subModelCode, Map map) throws Exception { + return executeByCode(resourceCode,version,subModelCode,JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(map)); + } + + @Override + public void compileByIdForTest(String resourceId) throws Exception { + throw new RuntimeException("Remote Executor NOT Supported test mode compile!"); + } + + @Override + public void compileByCodeForTest(String resourceCode, Integer version) throws Exception { + throw new RuntimeException("Remote Executor NOT Supported test mode compile!"); + } + + @Override + public ResourceResult executeByIdForTest(String resourceId, Map map) throws Exception { + throw new RuntimeException("Remote Executor NOT Supported test mode execute!"); + } + + @Override + public ResourceResult executeByIdForTest(String resourceId, String subModelCode, Map map) throws Exception { + throw new RuntimeException("Remote Executor NOT Supported test mode execute!"); + } + + @Override + public ResourceResult executeByCodeForTest(String resourceCode, Integer version, Map map) throws Exception { + throw new RuntimeException("Remote Executor NOT Supported test mode execute!"); + } + + @Override + public ResourceResult executeByCodeForTest(String resourceCode, Integer version, String subModelCode, Map map) throws Exception { + throw new RuntimeException("Remote Executor NOT Supported test mode execute!"); + } + + public String getRemoteApiUrl() { + return remoteApiUrl; + } + public void setRemoteApiUrl(String remoteApiUrl) { + this.remoteApiUrl = remoteApiUrl; + } + + public Loader getLoader() { + return loader; + } + + public void setLoader(Loader loader) { + this.loader = loader; + } + + private String getApiUrlById(String resourceId) { + return remoteApiUrl + "/executeById?resourceId=" + resourceId; + } + + private String getApiUrlById(String resourceId,String subModelCode) { + if(subModelCode!=null && !subModelCode.trim().isEmpty()) { + return remoteApiUrl + "/executeById?resourceId=" + resourceId + "&subModelCode=" + subModelCode; + }else { + return remoteApiUrl + "/executeById?resourceId=" + resourceId; + } + } + + private String getApiUrlByCode(String resourceCode,Integer version,String subModelCode) { + if(version!=null) { + if(subModelCode!=null && !subModelCode.trim().isEmpty()) { + return remoteApiUrl + "/executeByCode?resourceCode=" + resourceCode + "&version=" + version + "&subModelCode=" + subModelCode; + }else { + return remoteApiUrl + "/executeByCode?resourceCode=" + resourceCode + "&version=" + version; + } + }else { + if(subModelCode!=null && !subModelCode.trim().isEmpty()) { + return remoteApiUrl + "/executeByCode?resourceCode=" + resourceCode + "&subModelCode=" + subModelCode; + }else { + return remoteApiUrl + "/executeByCode?resourceCode=" + resourceCode; + } + } + } +} diff --git a/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteLoader.java b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteLoader.java new file mode 100644 index 00000000..feceabb4 --- /dev/null +++ b/io.sc.engine.rule.client/src/main/java/io/sc/engine/rule/client/remote/RemoteLoader.java @@ -0,0 +1,112 @@ +package io.sc.engine.rule.client.remote; + +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import io.sc.engine.rule.client.Loader; +import io.sc.engine.rule.core.classes.ResourceAbstract; +import io.sc.engine.rule.core.code.impl.support.ResourceWrapper; +import io.sc.engine.rule.core.util.HttpRequestUtil; +import io.sc.engine.rule.core.util.JacksonObjectMapper; + +import com.fasterxml.jackson.core.type.TypeReference; + +public class RemoteLoader implements Loader{ + private static final Logger log =LoggerFactory.getLogger(RemoteLoader.class); + private String remoteApiUrl; + private Map cache =new ConcurrentHashMap(); + + public RemoteLoader() {} + public RemoteLoader(String remoteApiUrl) { + this.remoteApiUrl =remoteApiUrl; + } + + @Override + public void cleanCache() throws Exception { + cache.clear(); + } + + @Override + public ResourceWrapper getResourceById(String resourceId) throws Exception { + if(resourceId!=null && !"".equals(resourceId.trim())) { + String json =HttpRequestUtil.get(getApiUrlById(resourceId)); + return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, ResourceWrapper.class); + } + return null; + } + @Override + public ResourceWrapper getResourceByCode(String resourceCode, Integer version) throws Exception { + if(version==null) {//未指定版本时,不缓存,加载最新的 + String json =HttpRequestUtil.get(getApiUrlByCode(resourceCode,version)); + if(log.isDebugEnabled()) {log.debug("remote resource json:\n{}",json);} + ResourceWrapper wrapper =JacksonObjectMapper.getDefaultObjectMapper().readValue(json, ResourceWrapper.class); + if(log.isDebugEnabled()) {log.debug("resource json:\n{}",JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(wrapper));} + return wrapper; + }else {//指定版本时,缓存 + if(resourceCode!=null && !"".equals(resourceCode.trim())) { + String key =getCacheKey(resourceCode,version); + ResourceWrapper wrapper =cache.get(key); + if(wrapper!=null) { + return wrapper; + }else { + String json =HttpRequestUtil.get(getApiUrlByCode(resourceCode,version)); + wrapper =JacksonObjectMapper.getDefaultObjectMapper().readValue(json, ResourceWrapper.class); + if(wrapper!=null) { + key =getCacheKey(resourceCode,version); + if(key!=null && !"".equals(key.trim())) { + cache.put(key, wrapper); + return wrapper; + } + } + } + } + return null; + } + } + + @Override + public List getAllReleasableResourceAbstract() throws Exception { + String json =HttpRequestUtil.get(getAllReleasableResourceAbstractApiUrl()); + if(json!=null && !"".equals(json)) { + return JacksonObjectMapper.getDefaultObjectMapper().readValue(json,new TypeReference>(){}); + } + return null; + } + + public String getRemoteApiUrl() { + return remoteApiUrl; + } + public void setRemoteApiUrl(String remoteApiUrl) { + this.remoteApiUrl = remoteApiUrl; + } + + private String getApiUrlById(String modelId) { + return remoteApiUrl + "/getDefineById?id=" + modelId; + } + + private String getApiUrlByCode(String modelCode,Integer version) { + if(version!=null) { + return remoteApiUrl + "/getDefineByCode?code=" + modelCode + "&version=" + version; + }else { + return remoteApiUrl + "/getDefineByCode?code=" + modelCode; + } + } + + private String getAllReleasableResourceAbstractApiUrl() { + return remoteApiUrl + "/getAllReleasableResourceAbstract"; + } + + private String getCacheKey(String code,Integer version) { + String result =""; + if(code!=null && !"".equals(code.trim())) { + result +=code; + } + if(version!=null) { + result +="_" + version; + } + return result; + } +} diff --git a/io.sc.engine.rule.core/README.adoc b/io.sc.engine.rule.core/README.adoc new file mode 100644 index 00000000..e69de29b diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/ResourceAbstract.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/ResourceAbstract.java new file mode 100644 index 00000000..aaa09cbc --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/ResourceAbstract.java @@ -0,0 +1,79 @@ +package io.sc.engine.rule.core.classes; + +import java.util.Date; + +import io.sc.engine.rule.core.enums.DeployStatus; + +/** + * 资源摘要信息 + * @author wangshaoping + * + */ +public class ResourceAbstract { + private String id; + private String code; + private String name; + private Integer version; + protected DeployStatus status; + protected Date effectiveDate; + + public ResourceAbstract() {} + + public ResourceAbstract(String code,Integer version) { + this.code =code; + this.version =version; + } + + public ResourceAbstract(String id,String code,String name,Integer version) { + this.id =id; + this.code =code; + this.name =name; + this.version =version; + } + + public ResourceAbstract(String id,String code,String name,Integer version,DeployStatus status,Date effectiveDate) { + this.id =id; + this.code =code; + this.name =name; + this.version =version; + this.status =status; + this.effectiveDate =effectiveDate; + } + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + public String getCode() { + return code; + } + public void setCode(String code) { + this.code = code; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public Integer getVersion() { + return version; + } + public void setVersion(Integer version) { + this.version = version; + } + public DeployStatus getStatus() { + return status; + } + public void setStatus(DeployStatus status) { + this.status = status; + } + public Date getEffectiveDate() { + return effectiveDate; + } + public void setEffectiveDate(Date effectiveDate) { + this.effectiveDate = effectiveDate; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/Rule.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/Rule.java new file mode 100644 index 00000000..363dd354 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/Rule.java @@ -0,0 +1,121 @@ +package io.sc.engine.rule.core.classes; + +/** + * 规则信息 + * @author wangshaoping + * + */ +public class Rule { + private boolean isTriggered; //是否触发 + private Integer level; //等级 + private String code; //代码 + private String name; //名称 + private String category; //分类 + private String value; //值 + private String message; //触发时消息 + + public Rule() {} + public Rule(boolean isTriggered,Integer level,String code,String name,String category,String value,String message) { + this.isTriggered =isTriggered; + this.level =level; + this.code =code; + this.name =name; + this.category =category; + this.value =value; + this.message =message; + } + + public boolean isTriggered() { + return isTriggered; + } + public void setTriggered(boolean isTriggered) { + this.isTriggered = isTriggered; + } + public Integer getLevel() { + return level; + } + public void setLevel(Integer level) { + this.level = level; + } + public String getCode() { + return code; + } + public void setCode(String code) { + this.code = code; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getCategory() { + return category; + } + public void setCategory(String category) { + this.category = category; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + public String getMessage() { + return message; + } + public void setMessage(String message) { + this.message = message; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((code == null) ? 0 : code.hashCode()); + result = prime * result + (isTriggered ? 1231 : 1237); + result = prime * result + ((level == null) ? 0 : level.hashCode()); + result = prime * result + ((message == null) ? 0 : message.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((value == null) ? 0 : value.hashCode()); + return result; + } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Rule other = (Rule) obj; + if (code == null) { + if (other.code != null) + return false; + } else if (!code.equals(other.code)) + return false; + if (isTriggered != other.isTriggered) + return false; + if (level == null) { + if (other.level != null) + return false; + } else if (!level.equals(other.level)) + return false; + if (message == null) { + if (other.message != null) + return false; + } else if (!message.equals(other.message)) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + if (value == null) { + if (other.value != null) + return false; + } else if (!value.equals(other.value)) + return false; + return true; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/RuleResult.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/RuleResult.java new file mode 100644 index 00000000..af83f9ec --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/RuleResult.java @@ -0,0 +1,106 @@ +package io.sc.engine.rule.core.classes; + +import java.util.ArrayList; +import java.util.List; + +import io.sc.engine.rule.core.util.JacksonObjectMapper; + +import com.fasterxml.jackson.core.JsonProcessingException; + +/** + * 规则结果值 + * @author wangshaoping + * + */ +public class RuleResult { + private boolean triggered; //是否触发 + private Integer level; //等级 + private List rules =new ArrayList(); //触发的规则集合 + + public void addRule(boolean isTriggered,Integer level,String code,String name,String category,String value,String message) { + Rule rule =new Rule(isTriggered,level,code,name,category,value,message); + rules.add(rule); + if(!this.triggered && isTriggered) { + this.triggered =true; + } + if(this.triggered) { + if(level!=null) { + if(this.level==null) { + this.level =level; + }else { + if(level>this.level) { + this.level =level; + } + } + } + } + } + + public boolean getTriggered() { + return triggered; + } + + public void setTriggered(boolean isTriggered) { + this.triggered = isTriggered; + } + + public Integer getLevel() { + return level; + } + + public void setLevel(Integer level) { + this.level = level; + } + + public List getRules() { + return rules; + } + + public void setRules(List rules) { + this.rules = rules; + } + + @Override + public String toString() { + try { + String result =JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(this); + return result; + } catch (JsonProcessingException e) { + return "RuleResult [triggered=" + triggered + ", level=" + level + ", rules=" + rules + "]"; + } + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (triggered ? 1231 : 1237); + result = prime * result + ((level == null) ? 0 : level.hashCode()); + result = prime * result + ((rules == null) ? 0 : rules.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + RuleResult other = (RuleResult) obj; + if (triggered != other.triggered) + return false; + if (level == null) { + if (other.level != null) + return false; + } else if (!level.equals(other.level)) + return false; + if (rules == null) { + if (other.rules != null) + return false; + } else if (!rules.equals(other.rules)) + return false; + return true; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/SingleRuleResult.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/SingleRuleResult.java new file mode 100644 index 00000000..ee7143a5 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/classes/SingleRuleResult.java @@ -0,0 +1,70 @@ +package io.sc.engine.rule.core.classes; + +import io.sc.engine.rule.core.util.JacksonObjectMapper; + +import com.fasterxml.jackson.core.JsonProcessingException; + +/** + * 单规则结果值 + * @author wangshaoping + * + */ +public class SingleRuleResult { + private boolean triggered; //是否触发 + private Integer level; //等级 + private String category; //分类 + private String value; //值 + private String message; //触发时消息 + + public SingleRuleResult() {} + + public SingleRuleResult(boolean isTriggered,Integer level,String category,String value,String message) { + this.triggered =isTriggered; + this.level =level; + this.category =category; + this.value =value; + this.message =message; + } + + public boolean getTriggered() { + return triggered; + } + public void setTriggered(boolean isTriggered) { + this.triggered = isTriggered; + } + public Integer getLevel() { + return level; + } + public void setLevel(Integer level) { + this.level = level; + } + public String getCategory() { + return category; + } + public void setCategory(String category) { + this.category = category; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + public String getMessage() { + return message; + } + public void setMessage(String message) { + this.message = message; + } + + @Override + public String toString() { + try { + String result =JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(this); + return result; + } catch (JsonProcessingException e) { + return "SingleRuleResult [triggered=" + triggered + ", level=" + level + ", category=" + category + + ", value=" + value + ", message=" + message + "]"; + } + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCode.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCode.java new file mode 100644 index 00000000..80ea81e2 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/SourceCode.java @@ -0,0 +1,42 @@ +package io.sc.engine.rule.core.code; + +public class SourceCode { + private String packageName; //包名 + private String className; //类名 + private String source; //类源代码 + + public SourceCode() {} + + public SourceCode(String packageName,String className,String source) { + this.packageName =packageName; + this.className =className; + this.source =source; + } + + public String getQualifiedClassName() { + return this.packageName + "." + this.className; + } + + public String getJavaFileName() { + return this.className + ".java"; + } + + public String getPackageName() { + return packageName; + } + public void setPackageName(String packageName) { + this.packageName = packageName; + } + public String getClassName() { + return className; + } + public void setClassName(String className) { + this.className = className; + } + public String getSource() { + return source; + } + public void setSource(String source) { + this.source = source; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ModelAbstract.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ModelAbstract.java new file mode 100644 index 00000000..27772838 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ModelAbstract.java @@ -0,0 +1,43 @@ +package io.sc.engine.rule.core.code.impl.support; + +/** + * 模型摘要信息 + * @author wangshaoping + * + */ +public class ModelAbstract { + private String id; + private String code; + private String name; + + public ModelAbstract() {} + + public ModelAbstract(String code) { + this.code =code; + } + + public ModelAbstract(String id,String code,String name) { + this.id =id; + this.code =code; + this.name =name; + } + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + public String getCode() { + return code; + } + public void setCode(String code) { + this.code = code; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ParameterResult.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ParameterResult.java new file mode 100644 index 00000000..a16de1cf --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ParameterResult.java @@ -0,0 +1,146 @@ +package io.sc.engine.rule.core.code.impl.support; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +import io.sc.engine.rule.core.classes.RuleResult; +import io.sc.engine.rule.core.classes.SingleRuleResult; +import io.sc.engine.rule.core.enums.ParameterType; +import io.sc.engine.rule.core.enums.ValueType; +import io.sc.engine.rule.core.util.JacksonObjectMapper; + +import com.fasterxml.jackson.core.JsonProcessingException; + +/** + * 参数结果 + * @author wangshaoping + * + */ +public class ParameterResult { + private String code; //代码 + private String name; //名称 + private ParameterType type; //参数类型 + private String valueType; //参数值类型 + private Integer valueScale; //参数值精度 + private RoundingMode valueRoundingMode; //参数值四舍五入模式 + private String defaultValue; //默认值 + private String value; //结果值 + private RuleResult ruleResult; //规则结果值 + private SingleRuleResult singleRuleResult; //单规则结果值 + + public ParameterResult() {} + public ParameterResult(String code,String name,ParameterType type,String valueType,String value) { + this.code =code; + this.name =name; + this.type =type; + this.valueType =valueType; + this.value =value; + } + + public ParameterResult(String code,String name,ParameterType type,RuleResult ruleResult) { + this.code =code; + this.name =name; + this.type =type; + this.ruleResult =ruleResult; + } + + public ParameterResult(String code,String name,ParameterType type,SingleRuleResult singleRuleResult) { + this.code =code; + this.name =name; + this.type =type; + this.singleRuleResult =singleRuleResult; + } + + public ParameterResult(String code,String name,ParameterType type,String valueType,Integer valueScale,RoundingMode valueRoundingMode,String value) { + this.code =code; + this.name =name; + this.type =type; + this.valueType =valueType; + this.valueScale =valueScale; + this.valueRoundingMode =valueRoundingMode; + this.value =value; + if(ValueType.Decimal.getJavaType().equals(valueType)) { + if(value!=null && !"".equals(value.trim())) { + BigDecimal _value =new BigDecimal(value); + if(valueScale!=null && valueRoundingMode!=null) { + _value =_value.setScale(valueScale,valueRoundingMode); + this.value =String.format("%." + valueScale + "f", _value); + }else if(valueScale!=null) { + _value =_value.setScale(valueScale); + this.value =String.format("%." + valueScale + "f", _value); + } + } + } + } + + public String getCode() { + return code; + } + public void setCode(String code) { + this.code = code; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public ParameterType getType() { + return type; + } + public void setType(ParameterType type) { + this.type = type; + } + public String getValueType() { + return valueType; + } + public void setValueType(String valueType) { + this.valueType = valueType; + } + public Integer getValueScale() { + return valueScale; + } + public void setValueScale(Integer valueScale) { + this.valueScale = valueScale; + } + public RoundingMode getValueRoundingMode() { + return valueRoundingMode; + } + public void setValueRoundingMode(RoundingMode valueRoundingMode) { + this.valueRoundingMode = valueRoundingMode; + } + public String getDefaultValue() { + return defaultValue; + } + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + public RuleResult getRuleResult() { + return ruleResult; + } + public void setRuleResult(RuleResult ruleResult) { + this.ruleResult = ruleResult; + } + public SingleRuleResult getSingleRuleResult() { + return singleRuleResult; + } + public void setSingleRuleResult(SingleRuleResult singleRuleResult) { + this.singleRuleResult = singleRuleResult; + } + @Override + public String toString() { + try { + return JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(this); + } catch (JsonProcessingException e) { + return "ParameterResult [code=" + code + ", name=" + name + ", type=" + type + ", valueType=" + valueType + + ", valueScale=" + valueScale + ", valueRoundingMode=" + valueRoundingMode + ", defaultValue=" + + defaultValue + ", value=" + value + "]"; + } + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceResult.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceResult.java new file mode 100644 index 00000000..64b74124 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceResult.java @@ -0,0 +1,100 @@ +package io.sc.engine.rule.core.code.impl.support; + +import java.util.ArrayList; +import java.util.List; + +import io.sc.engine.rule.core.enums.ParameterType; +import io.sc.engine.rule.core.util.JacksonObjectMapper; + +import com.fasterxml.jackson.core.JsonProcessingException; + +/** + * 模型结果 + * @author wangshaoping + * + */ +public class ResourceResult { + private int status; + private ValidateResult validateResult; + private List data =new ArrayList(); + + /** + * 添加结果参数 + * @param code 代码 + * @param name 名称 + * @param type 类型 + * @param valueType 值类型 + * @param value 值 + */ + public void addParameterResult(String code,String name,ParameterType type,String valueType,String value) { + data.add(new ParameterResult(code,name,type,valueType,value)); + } + + /** + * 通过参数代码获取参数值 + * @param code 参数代码 + * @return 参数值 + */ + public boolean exists(String code) { + if(code!=null && !"".equals(code.trim())) { + if(data!=null && data.size()>0) { + for(ParameterResult parameterResult : data) { + if(code.equals(parameterResult.getCode())){ + return true; + } + } + } + } + return false; + } + + /** + * 通过参数代码获取参数值 + * @param code 参数代码 + * @return 参数值 + */ + public String getValueByParameterCode(String code) { + if(code!=null && !"".equals(code.trim())) { + if(data!=null && data.size()>0) { + for(ParameterResult parameterResult : data) { + if(code.equals(parameterResult.getCode())){ + return parameterResult.getValue(); + } + } + } + } + return null; + } + + public int getStatus() { + return status; + } + public void setStatus(int status) { + this.status = status; + } + public ValidateResult getValidateResult() { + return validateResult; + } + public void setValidateResult(ValidateResult validateResult) { + this.validateResult = validateResult; + } + public List getData() { + return data; + } + public void setData(List data) { + this.data = data; + } + + public void addParameterResult(ParameterResult result) { + this.data.add(result); + } + + @Override + public String toString() { + try { + return JacksonObjectMapper.getDefaultObjectMapper().writeValueAsString(this); + } catch (JsonProcessingException e) { + return "ResourceResult [status=" + status + ", validateResult=" + validateResult + ", data=" + data + "]"; + } + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper.java new file mode 100644 index 00000000..9e449544 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper.java @@ -0,0 +1,30 @@ +package io.sc.engine.rule.core.code.impl.support; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonTypeInfo; + + +@JsonIgnoreProperties(ignoreUnknown=true) +@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type",defaultImpl=ResourceWrapper4Resource.class) +@JsonSubTypes({ + @JsonSubTypes.Type(value=ResourceWrapper4Resource.class), + @JsonSubTypes.Type(value=ResourceWrapper4Lib.class) +}) +public abstract class ResourceWrapper { + protected boolean isExecuteTestCase; + + + public boolean getIsExecuteTestCase() { + return isExecuteTestCase; + } + + + public void setIsExecuteTestCase(boolean isExecuteTestCase) { + this.isExecuteTestCase = isExecuteTestCase; + } + + @JsonIgnore + public abstract String getType(); +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper4Lib.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper4Lib.java new file mode 100644 index 00000000..4c974502 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper4Lib.java @@ -0,0 +1,43 @@ +package io.sc.engine.rule.core.code.impl.support; + +import java.util.List; + +import io.sc.engine.rule.core.po.dictionary.Dictionary; +import io.sc.engine.rule.core.po.lib.Lib; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonTypeName; + +@JsonTypeName("LIB") +@JsonIgnoreProperties(ignoreUnknown=true) +public class ResourceWrapper4Lib extends ResourceWrapper{ + private List dictionaries; + private Lib lib; + + + @Override + @JsonIgnore + public String getType() { + return "LIB"; + } + + + public List getDictionaries() { + return dictionaries; + } + + + public void setDictionaries(List dictionaries) { + this.dictionaries = dictionaries; + } + + + public Lib getLib() { + return lib; + } + + public void setLib(Lib lib) { + this.lib = lib; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper4Resource.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper4Resource.java new file mode 100644 index 00000000..7dc1ae72 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ResourceWrapper4Resource.java @@ -0,0 +1,52 @@ +package io.sc.engine.rule.core.code.impl.support; + +import java.util.List; + +import io.sc.engine.rule.core.po.dictionary.Dictionary; +import io.sc.engine.rule.core.po.lib.Lib; +import io.sc.engine.rule.core.po.resource.Resource; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonTypeName; + + +@JsonTypeName("RESOURCE") +@JsonIgnoreProperties(ignoreUnknown=true) +public class ResourceWrapper4Resource extends ResourceWrapper{ + private Resource resource; + private List dictionaries; + private List libs; + + + @Override + @JsonIgnore + public String getType() { + return "RESOURCE"; + } + + public Resource getResource() { + return resource; + } + + public void setResource(Resource resource) { + this.resource = resource; + } + + public List getDictionaries() { + return dictionaries; + } + + public void setDictionaries(List dictionaries) { + this.dictionaries = dictionaries; + } + + public List getLibs() { + return libs; + } + + public void setLibs(List libs) { + this.libs = libs; + } + +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ValidateField.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ValidateField.java new file mode 100644 index 00000000..8f10279d --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ValidateField.java @@ -0,0 +1,38 @@ +package io.sc.engine.rule.core.code.impl.support; + +public class ValidateField { + private String fieldCode; + private String fieldName; + private String message; + + public ValidateField(String fieldCode,String fieldName,String message) { + this.fieldCode =fieldCode; + this.fieldName =fieldName; + this.message =message; + } + + public String getFieldCode() { + return fieldCode; + } + + public void setFieldCode(String fieldCode) { + this.fieldCode = fieldCode; + } + + public String getFieldName() { + return fieldName; + } + + public void setFieldName(String fieldName) { + this.fieldName = fieldName; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ValidateResult.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ValidateResult.java new file mode 100644 index 00000000..2cc230c5 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/ValidateResult.java @@ -0,0 +1,25 @@ +package io.sc.engine.rule.core.code.impl.support; + +import java.util.ArrayList; +import java.util.List; + + +public class ValidateResult { + private List errorFields =new ArrayList(); + + public void error(String fieldCode,String fieldName,String message) { + errorFields.add(new ValidateField(fieldCode,fieldName,message)); + } + + public boolean hasError() { + return errorFields.size()>0; + } + + public List getErrorFields() { + return errorFields; + } + + public void setErrorFields(List errorFields) { + this.errorFields = errorFields; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/lib/LibUtil.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/lib/LibUtil.java new file mode 100644 index 00000000..08af1f38 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/lib/LibUtil.java @@ -0,0 +1,54 @@ +package io.sc.engine.rule.core.code.impl.support.lib; + +import java.util.List; + +import io.sc.engine.rule.core.po.lib.Indicator; +import io.sc.engine.rule.core.po.lib.IndicatorLib; +import io.sc.engine.rule.core.po.lib.Lib; + +/** + * 库辅助类 + * @author wangshaoping + * + */ +public class LibUtil { + /** + * 查找指标 + * @param libs 库列表 + * @param libCode 被查找的指标所属库代码 + * @param libVersion 被查找的指标所属库版本 + * @param indicatorCode 被查找的指标代码 + * @return 指标对象 + */ + public static Indicator findIndicator(List libs,String libCode,Integer libVersion,String indicatorCode) { + if(libs==null || libs.size()==0) { + return null; + } + if(libCode==null || "".equals(libCode.trim())) { + return null; + } + if(libVersion==null) { + return null; + } + if(indicatorCode==null || "".equals(indicatorCode.trim())) { + return null; + } + + for(Lib lib : libs) { + if(lib instanceof IndicatorLib) { + IndicatorLib indicatorLib =(IndicatorLib)lib; + if(libCode.equals(indicatorLib.getCode()) && libVersion.equals(indicatorLib.getVersion())) { + List indicators =indicatorLib.getIndicators(); + if(indicators!=null && indicators.size()>0) { + for(Indicator indicator : indicators) { + if(indicatorCode.equals(indicator.getCode())) { + return indicator; + } + } + } + } + } + } + return null; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/parameter/ParameterGroovyCodeContributionItem.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/parameter/ParameterGroovyCodeContributionItem.java new file mode 100644 index 00000000..44319944 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/parameter/ParameterGroovyCodeContributionItem.java @@ -0,0 +1,9 @@ +package io.sc.engine.rule.core.code.impl.support.parameter; + +import io.sc.engine.rule.core.code.impl.support.ResourceWrapper; + +public interface ParameterGroovyCodeContributionItem { + public String forArgumentField(ResourceWrapper wrapper); + public String forConvertArgumentFromMap(ResourceWrapper wrapper,String targetVarName); + public String forConvertArgumentFromJson(ResourceWrapper wrapper,String targetVarName); +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/NumberRange.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/NumberRange.java new file mode 100644 index 00000000..0ee58d5f --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/NumberRange.java @@ -0,0 +1,245 @@ +package io.sc.engine.rule.core.code.impl.support.processor; + +import java.util.ArrayList; +import java.util.List; + +import io.sc.engine.rule.core.po.lib.Indicator; +import io.sc.engine.rule.core.po.lib.processor.NumberRangeIndicatorProcessor; +import io.sc.engine.rule.core.po.model.Parameter; +import io.sc.engine.rule.core.po.model.processor.NumberRangeParameterProcessor; +import io.sc.engine.rule.core.po.scorecard.NumberRangeScoreCardIndicatorVar; +import io.sc.engine.rule.core.po.scorecard.NumberRangeScoreCardVar; +import io.sc.engine.rule.core.po.scorecard.ScoreCardVar; +import io.sc.engine.rule.core.util.CodeReplacer; +import io.sc.engine.rule.core.util.ExpressionReplacer; +import io.sc.engine.rule.core.util.JacksonObjectMapper; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.core.type.TypeReference; + +@JsonIgnoreProperties(ignoreUnknown=true) +public class NumberRange { + private Boolean minIncluded; + private Double min; + private Double max; + private Boolean maxIncluded; + private String value; + + public static List parse(String json) throws Exception{ + return JacksonObjectMapper.getDefaultObjectMapper().readValue(json, new TypeReference>(){}); + } + + public static String generateGroovyCode(Indicator indicator,NumberRangeIndicatorProcessor processor) throws Exception{ + if(indicator==null || processor==null){ + return null; + } + try { + List numberRanges =parse(processor.getNumberRange()); + List _numberRanges =new ArrayList(); + + //移除空行 + if(numberRanges!=null && numberRanges.size()>0) { + for(NumberRange numberRange : numberRanges) { + if(numberRange.min!=null || numberRange.max!=null || numberRange.value!=null) { + _numberRanges.add(numberRange); + } + } + } + + String parameterName =CodeReplacer.fieldName(indicator.getCode()); + String var =processor.getNumberRangeVar(); + String valueType =indicator.getValueType(); + if(_numberRanges!=null && _numberRanges.size()>0) { + if(var==null || "".equals(var.trim())) { + var =ExpressionReplacer.ARGUMENT_NAME + "." + parameterName; + } + StringBuilder sb =new StringBuilder(); + int size =_numberRanges.size(); + for(int i=0;i=").append(numberRange.min); + }else { + sb.append(ExpressionReplacer.groovy(var, null)).append(">").append(numberRange.min); + } + } + if(numberRange.min!=null && numberRange.max!=null) { + sb.append(" && "); + } + if(numberRange.max!=null) { + if(numberRange.maxIncluded!=null && numberRange.maxIncluded) { + sb.append(ExpressionReplacer.groovy(var, null)).append("<=").append(numberRange.max); + }else { + sb.append(ExpressionReplacer.groovy(var, null)).append("<").append(numberRange.max); + } + } + sb.append(")").append("{").append("\n"); + sb.append("\t\t\t").append(ExpressionReplacer.ARGUMENT_NAME).append(".").append(parameterName).append(" =").append(ExpressionReplacer.groovy(numberRange.value, valueType)).append(";\n"); + sb.append("\t\t}"); + } + return sb.toString(); + } + }catch(Exception e) { + throw new RuntimeException("There was a Error when generate " + indicator.getName()+ "'s NumberRange groovy source code.", e); + } + return null; + } + + public static String generateGroovyCode(Parameter parameter,NumberRangeParameterProcessor processor) throws Exception{ + if(parameter==null || processor==null){ + return null; + } + try { + List numberRanges =parse(processor.getNumberRange()); + List _numberRanges =new ArrayList(); + + //移除空行 + if(numberRanges!=null && numberRanges.size()>0) { + for(NumberRange numberRange : numberRanges) { + if(numberRange.min!=null || numberRange.max!=null || numberRange.value!=null) { + _numberRanges.add(numberRange); + } + } + } + + String parameterName =CodeReplacer.fieldName(parameter.getCode()); + String var =processor.getNumberRangeVar(); + String valueType =parameter.getValueType(); + if(_numberRanges!=null && _numberRanges.size()>0) { + if(var==null || "".equals(var.trim())) { + var =ExpressionReplacer.ARGUMENT_NAME + "." + parameterName; + } + StringBuilder sb =new StringBuilder(); + int size =_numberRanges.size(); + for(int i=0;i=").append(numberRange.min); + }else { + sb.append(ExpressionReplacer.groovy(var, null)).append(">").append(numberRange.min); + } + } + if(numberRange.min!=null && numberRange.max!=null) { + sb.append(" && "); + } + if(numberRange.max!=null) { + if(numberRange.maxIncluded!=null && numberRange.maxIncluded) { + sb.append(ExpressionReplacer.groovy(var, null)).append("<=").append(numberRange.max); + }else { + sb.append(ExpressionReplacer.groovy(var, null)).append("<").append(numberRange.max); + } + } + sb.append(")").append("{").append("\n"); + sb.append("\t\t\t").append(ExpressionReplacer.ARGUMENT_NAME).append(".").append(parameterName).append(" =").append(ExpressionReplacer.groovy(numberRange.value, valueType)).append(";\n"); + sb.append("\t\t}"); + } + return sb.toString(); + } + }catch(Exception e) { + throw new RuntimeException("There was a Error when generate " + parameter.getName()+ "'s NumberRange groovy source code.", e); + } + return null; + } + + public static String generateGroovyCode(ScoreCardVar scoreCardVar) throws Exception{ + try { + List _numberRanges =null; + if(scoreCardVar instanceof NumberRangeScoreCardVar) { + _numberRanges =parse(((NumberRangeScoreCardVar)scoreCardVar).getNumberRange()); + }else if(scoreCardVar instanceof NumberRangeScoreCardIndicatorVar) { + _numberRanges =parse(((NumberRangeScoreCardIndicatorVar)scoreCardVar).getNumberRange()); + }else { + return null; + } + + String parameterName =scoreCardVar.getCode(); + String var ="${" + parameterName + "}"; + String valueType ="java.math.BigDecimal"; + if(_numberRanges!=null && _numberRanges.size()>0) { + StringBuilder sb =new StringBuilder(); + int size =_numberRanges.size(); + for(int i=0;i=").append(numberRange.min); + }else { + sb.append(ExpressionReplacer.groovy(var, null)).append(">").append(numberRange.min); + } + } + if(numberRange.min!=null && numberRange.max!=null) { + sb.append(" && "); + } + if(numberRange.max!=null) { + if(numberRange.maxIncluded!=null && numberRange.maxIncluded) { + sb.append(ExpressionReplacer.groovy(var, null)).append("<=").append(numberRange.max); + }else { + sb.append(ExpressionReplacer.groovy(var, null)).append("<").append(numberRange.max); + } + } + sb.append(")").append("{").append("\n"); + sb.append("\t\t\t").append(ExpressionReplacer.ARGUMENT_NAME).append(".R_").append(parameterName).append(" =").append(ExpressionReplacer.groovy(numberRange.value, valueType)).append(";\n"); + sb.append("\t\t}"); + } + return sb.toString(); + } + }catch(Exception e) { + throw new RuntimeException("There was a Error when generate " + scoreCardVar.getName()+ "'s NumberRange groovy source code.", e); + } + return null; + } + + public Boolean getMinIncluded() { + return minIncluded; + } + public void setMinIncluded(Boolean minIncluded) { + this.minIncluded = minIncluded; + } + public Double getMin() { + return min; + } + public void setMin(Double min) { + this.min = min; + } + public Double getMax() { + return max; + } + public void setMax(Double max) { + this.max = max; + } + public Boolean getMaxIncluded() { + return maxIncluded; + } + public void setMaxIncluded(Boolean maxIncluded) { + this.maxIncluded = maxIncluded; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } +} diff --git a/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/Option.java b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/Option.java new file mode 100644 index 00000000..0b81a019 --- /dev/null +++ b/io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/code/impl/support/processor/Option.java @@ -0,0 +1,104 @@ +package io.sc.engine.rule.core.code.impl.support.processor; + +import java.util.List; + +import io.sc.engine.rule.core.po.scorecard.OptionScoreCardIndicatorVar; +import io.sc.engine.rule.core.po.scorecard.OptionScoreCardVar; +import io.sc.engine.rule.core.po.scorecard.ScoreCardVar; +import io.sc.engine.rule.core.util.ExpressionReplacer; +import io.sc.engine.rule.core.util.JacksonObjectMapper; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.core.type.TypeReference; + +@JsonIgnoreProperties(ignoreUnknown=true) +public class Option { + private String uuid; + private String value; + private String title; + private String description; + private String score; + + public static List