diff --git a/app.platform/src/main/resources/config/application.properties b/app.platform/src/main/resources/config/application.properties
new file mode 100644
index 00000000..022c43ae
--- /dev/null
+++ b/app.platform/src/main/resources/config/application.properties
@@ -0,0 +1,270 @@
+##########################################################################
+#(100) excluded auto configuration - io.sc.platform.core
+##########################################################################
+spring.autoconfigure.exclude =
+spring.main.allow-circular-references = true
+
+##########################################################################
+#(150) application configuration - io.sc.platform.core
+##########################################################################
+# - io.sc.platform.core
+application.audit-log-mode = none
+#application.audit-log-mode = none
+#application.audit-log-mode = log
+#application.audit-log-mode = database
+application.is-multi-corporation-mode = false
+# - io.sc.platform.installer
+application.installer.enabled = true
+# - io.sc.platform.jdbc.liquibase
+application.updater.enabled = false
+# - io.sc.platform.security
+# the default password, apply to reset password
+application.password.default = password
+# password validator enable, true or false
+application.password.validator.enable = false
+# the password strength, must be: weak, middle or strong
+application.password.validator.passedStrength = weak
+application.password.validator.expression = ^(?\=.*[a-z])(?\=.*[A-Z])(?\=.*\\d)(?\=.*[@$\!%*?&])[A-Za-z\\d@$\!%*?&]{6,}$
+application.password.validator.strongLength = 12
+application.password.validator.middleLength = 8
+application.password.validator.weakLength = 6
+
+##########################################################################
+#(200) spring.main configuration - io.sc.platform.core
+##########################################################################
+spring.main.allow-bean-definition-overriding = false
+spring.main.banner-mode = console
+spring.main.lazy-initialization = false
+spring.main.log-startup-info = true
+spring.main.register-shutdown-hook = true
+
+##########################################################################
+#(210) jasypt encryptor configuration - io.sc.platform.core
+##########################################################################
+jasypt.encryptor.bean = platformJasyptStringEncryptor
+
+##########################################################################
+#(300) web server configuration - io.sc.platform.core
+##########################################################################
+server.compression.enabled = true
+server.ssl.enabled = false
+server.ssl.key-store = classpath:keystore/keystore.p12
+server.ssl.key-store-password = ENC(BWQMgGHmKLMSOsLQgyf1ejQl45HER/XG)
+server.ssl.keyStoreType = PKCS12
+server.ssl.keyAlias = platform
+server.address =
+server.port = 8080
+server.servlet.context-path = /
+server.servlet.session.timeout = 30m
+server.error.path = /error
+server.error.whitelabel.enabled = true
+server.error.include-exception = true
+server.error.include-binding-errors = always
+server.error.include-message = always
+server.error.include-stacktrace = always
+
+##########################################################################
+#(1000) dataSource configuration - io.sc.platform.jdbc
+##########################################################################
+spring.datasource.items[primary].driver-class-name = com.p6spy.engine.spy.P6SpyDriver
+spring.datasource.items[primary].url = jdbc:p6spy:mysql://localhost:3306/platform?autoReconnect\=true&allowPublicKeyRetrieval\=true&useSSL\=false&useUnicode\=true&characterEncoding\=UTF-8&serverTimezone\=Asia/Shanghai
+spring.datasource.items[primary].username = platform
+spring.datasource.items[primary].password = ENC(E3rUCM1nWlEGnX51AQmiUoQAKa2gLwAy)
+
+##########################################################################
+#(1100) jpa configuration - io.sc.platform.orm.jpa
+##########################################################################
+spring.jpa.open-in-view = false
+spring.jpa.show-sql = false
+spring.jpa.generate-ddl = false
+spring.jpa.hibernate.ddl-auto = none
+spring.jpa.hibernate.jdbc.batch_size = 25
+spring.jpa.properties.hibernate.enable_lazy_load_no_trans = true
+spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
+spring.jpa.properties.sql.dialect = io.sc.platform.jdbc.sql.dialect.impl.MysqlDialect
+
+##########################################################################
+#(1500) hikari configuration - io.sc.platform.jdbc
+##########################################################################
+#spring.datasource.items[primary].hikari.autoCommit = true
+#spring.datasource.items[primary].hikari.connectionTimeout = 10000
+#spring.datasource.items[primary].hikari.idleTimeout = 600000
+#spring.datasource.items[primary].hikari.maxLifetime = 1800000
+#spring.datasource.items[primary].hikari.minimumIdle = 10
+#spring.datasource.items[primary].hikari.maximumPoolSize = 10
+#spring.datasource.items[primary].hikari.metricRegistry =
+#spring.datasource.items[primary].hikari.healthCheckRegistry =
+#spring.datasource.items[primary].hikari.poolName =
+#spring.datasource.items[primary].hikari.initializationFailTimeout = 1
+#spring.datasource.items[primary].hikari.isolateInternalQueries = false
+#spring.datasource.items[primary].hikari.allowPoolSuspension = false
+#spring.datasource.items[primary].hikari.readOnly = false
+#spring.datasource.items[primary].hikari.registerMbeans = false
+#spring.datasource.items[primary].hikari.catalog =
+#spring.datasource.items[primary].hikari.connectionInitSql =
+#spring.datasource.items[primary].hikari.driverClassName =
+#spring.datasource.items[primary].hikari.transactionIsolation =
+#spring.datasource.items[primary].hikari.validationTimeout = 5000
+#spring.datasource.items[primary].hikari.leakDetectionThreshold = 0
+#spring.datasource.items[primary].hikari.dataSource =
+#spring.datasource.items[primary].hikari.schema =
+#spring.datasource.items[primary].hikari.threadFactory =
+#spring.datasource.items[primary].hikari.scheduledExecutor =
+
+##########################################################################
+#(2100) spring.session configuration - io.sc.platform.mvc
+##########################################################################
+spring.session.store-type = none
+#spring.session.store-type = jdbc
+#spring.session.store-type = redis
+spring.session.jdbc.initializer.enabled = false
+spring.session.jdbc.cleanup-cron = 0 */5 * * * *
+spring.session.redis.namespace = spring:session
+spring.session.redis.cleanupCron = 0 */5 * * * *
+
+##########################################################################
+#(2200) spring web configuration (WebProperties) - io.sc.platform.mvc
+##########################################################################
+spring.web.resources.add-mappings = true
+spring.web.resources.cache.cachecontrol.cache-public = true
+spring.web.resources.cache.cachecontrol.must-revalidate = true
+spring.web.resources.chain.cache = true
+spring.web.resources.chain.compressed = true
+
+##########################################################################
+#(2300) management http server configuration - io.sc.platform.mvc
+##########################################################################
+management.endpoints.enabled-by-default = true
+management.endpoints.web.exposure.include = *
+management.context-path = /actuator
+management.security.enabled = false
+
+##########################################################################
+#(2400) thymeleaf configuration - io.sc.platform.mvc
+##########################################################################
+spring.thymeleaf.enabled = true
+spring.thymeleaf.cache = false
+spring.thymeleaf.encoding = UTF-8
+spring.thymeleaf.mode = HTML
+spring.thymeleaf.prefix = classpath:/templates/
+spring.thymeleaf.check-template = false
+spring.thymeleaf.check-template-location = false
+spring.thymeleaf.servlet.content-type = text/html
+
+##########################################################################
+#(2500) jackson configuration - io.sc.platform.mvc
+##########################################################################
+spring.jackson.time-zone = Asia/Shanghai
+spring.jackson.date-format = yyyy-MM-dd HH:mm:ss
+spring.jackson.serialization.indent_output = true
+spring.jackson.serialization.fail_on_empty_beans = false
+spring.jackson.deserialization.fail_on_ignored_properties = false
+spring.jackson.parser.allow_comments = true
+spring.jackson.parser.allow_single_quotes = true
+spring.jackson.parser.allow_trailing_comma = true
+spring.jackson.parser.allow_unquoted_field_names = true
+spring.jackson.parser.ignore_undefined = true
+spring.jackson.parser.allow_unquoted_control_chars = true
+
+##########################################################################
+#(2600) i18n message source configuration - io.sc.platform.mvc
+##########################################################################
+spring.messages.alwaysUseMessageFormat = false
+spring.messages.cacheDuration = -1
+spring.messages.encoding = UTF-8
+spring.messages.fallbackToSystemLocale = false
+spring.messages.useCodeAsDefaultMessage = false
+
+##########################################################################
+#(2700) servlet multipart configuration - io.sc.platform.mvc
+##########################################################################
+spring.servlet.multipart.enabled = true
+spring.servlet.multipart.file-size-threshold = 1GB
+spring.servlet.multipart.location = ${application.home.dir}/work/web/upload
+spring.servlet.multipart.max-file-size = 1GB
+spring.servlet.multipart.max-request-size = 1GB
+spring.servlet.multipart.resolve-lazily = false
+
+##########################################################################
+#(3000) platform web security configuration - io.sc.platform.security.loginform
+##########################################################################
+spring.security.jwt.rsa.jwk-key-id = io.sc.platform.security.rsa.jwk-key-id
+spring.security.jwt.rsa.public-key-location = file://${dir.config.jwt}/public-key.txt
+spring.security.jwt.rsa.private-key-location = file://${dir.config.jwt}/private-key.txt
+
+spring.security.formLogin.loginPage = /
+spring.security.formLogin.loginProcessingUrl = /login
+spring.security.formLogin.failureUrl = /login-error
+spring.security.logout.logoutUrl = /logout
+spring.security.logout.logoutSuccessUrl = /
+
+##########################################################################
+#(4000) email configuration - io.sc.platform.communication
+##########################################################################
+spring.mail.host = zzz.xxx.yyy
+spring.mail.port = 25
+spring.mail.protocol = smtp
+spring.mail.test-connection = false
+spring.mail.default-encoding = UTF-8
+spring.mail.properties.mail.smtp.auth = true
+spring.mail.username = xxx
+spring.mail.password = yyy
+
+##########################################################################
+#(5000) flowable bpm configuration - io.sc.platform.flowable
+##########################################################################
+# core
+flowable.asyncExecutorActivate = false
+flowable.asyncHistoryExecutorActivate = false
+flowable.check-process-definitions = false
+flowable.custom-mybatis-mappers =
+flowable.custom-mybatis-x-m-l-mappers =
+flowable.database-schema =
+flowable.database-schema-update = true
+flowable.db-history-used = true
+flowable.deployment-name = SpringBootAutoDeployment
+flowable.history-level =
+flowable.process-definition-location-prefix = classpath*:/processes/
+flowable.process-definition-location-suffixes = **.bpmn20.xml,**.bpmn
+# process
+flowable.process.definition-cache-limit = -1
+flowable.process.enable-safe-xml = true
+flowable.process.servlet.load-on-startup = -1
+flowable.process.servlet.name = Flowable BPMN Rest API
+flowable.process.servlet.path = /process-api
+# cmmn
+flowable.cmmn.enabled = false
+# content
+flowable.content.enabled = false
+# dmn
+flowable.dmn.enabled = false
+# form
+flowable.form.enabled = false
+# idm
+flowable.idm.enabled = false
+
+##########################################################################
+#(8000) cxf configuration - io.sc.platform.ws.cxf
+##########################################################################
+cxf.path = /webservices
+
+##########################################################################
+#(9000) p6spy configuration - io.sc.platform.jdbc
+##########################################################################
+p6spy.enabled = true
+p6spy.ignorePattern = true
+
+##########################################################################
+#(10000) scheduler manager configuration - io.sc.platform.scheduler.executor
+##########################################################################
+scheduler.manager.urls[0] = http://localhost:8080/
+
+##########################################################################
+#(10001) scheduler executor configuration - io.sc.platform.scheduler.executor
+##########################################################################
+scheduler.executor.name = default
+
+##########################################################################
+#(10010) ai server configuration - io.sc.platform.ai
+##########################################################################
+ai.ollama.api-host = http://localhost:11434
diff --git a/app.platform/src/main/resources/config/banner.txt b/app.platform/src/main/resources/config/banner.txt
new file mode 100644
index 00000000..9544ca3a
--- /dev/null
+++ b/app.platform/src/main/resources/config/banner.txt
@@ -0,0 +1,48 @@
+**************************************************************************************
+ Name: app.platform
+ Version: ${application.version}
+ Base on Spring Boot ${spring-boot.version}
+**************************************************************************************
+System.environment:
+--------------------------------------------------------------------------------------
+ java.specification.version = 17
+ java.specification.vendor = Oracle Corporation
+ java.specification.name = Java Platform API Specification
+ java.vm.specification.version = 17
+ java.vm.specification.vendor = Oracle Corporation
+ java.vm.specification.name = Java Virtual Machine Specification
+ java.home = /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
+ java.version = 17.0.7
+ java.vendor = Oracle Corporation
+ java.vendor.url = https://java.oracle.com/
+ java.vm.version = 17.0.7+8-LTS-224
+ java.vm.vendor = Oracle Corporation
+ java.vm.name = Java HotSpot(TM) 64-Bit Server VM
+ java.class.version = 61.0
+ java.class.path = ${java.class.path2}
+ java.library.path = /Users/wangshaoping/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
+ java.io.tmpdir = /var/folders/82/6m96_g610hj1v1tcpvhtjysr0000gn/T/
+ java.ext.dirs = ${java.ext.dirs}
+ os.name = Mac OS X
+ os.arch = aarch64
+ os.version = 15.2
+ user.name = wangshaoping
+ user.home = /Users/wangshaoping
+ user.dir = /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform
+
+Application.environment
+--------------------------------------------------------------------------------------
+ application.name = app.platform
+ application.is-running-in-development = true
+ application.is-running-in-web-container = false
+
+ application.home.dir = /Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/app.platform
+ application.installer.enabled = ${application.installer.enabled}
+ application.updater.enabled = ${application.updater.enabled}
+ application.audit-log-mode = ${application.audit-log-mode}
+ spring.config.location = file:/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/app.platform/config/application.properties
+ spring.banner.location = file:/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/app.platform/config/banner.txt
+ logging.config = file:/Users/wangshaoping/wspsc/workspace/wangshaoping/v8/platform/app.platform/config/logback-spring.xml
+ p6spy.enabled = ${p6spy.enabled}
+ p6spy.ignorePattern = ${p6spy.ignorePattern}
+**************************************************************************************
\ No newline at end of file
diff --git a/app.platform/src/main/resources/config/license.lic b/app.platform/src/main/resources/config/license.lic
new file mode 100644
index 00000000..26206efe
--- /dev/null
+++ b/app.platform/src/main/resources/config/license.lic
@@ -0,0 +1,9 @@
+RQ9OoShN2sicAxBzT4v3XW2p42iF7MjVMvyIjgh039fWOxdEK86b7LI7+O0m+UpYC4p/Pe86wVgi
+GiTOzDmKGWpJN5qFyob33YQtgPLsnfLQclnoh0sbn1gqJejRFNQYpozEoC8T2B9Gnk5b/+O1Wy4f
+9L6jv1U2E8wPM3SWvzccHVnjSQpbYJSdnP4QtH4v6BBAfmYtf84wkgOJqgXsXyGv6U//hdkyYzFB
+8ieTCqz+2mrIyxYHZXrCmQOIYbvgflTFcElmv+k6wFSvLkiF/YoGcAIw/CljISPO4Worp4N6Z8rT
+6Ukl5t+MKPdQS4/nWN6UtuRxqGLIlqJr9Q/4LkPIO+tuVJUr0+F6e54eX3quU5jmMuJ3vYRhnIDF
+DkKA0bwsVqmML3odzCqhFONXGkqHMtiBmrOb5c3zNoLGcNN5r3vajqp0aWywaFKmNJPv4/vMdy+f
+IBwMHBnSgbTRQVOQjWVC2pgecT6RFbRvwFKabIDxr+8EQ8cyxhgVDcvytYTVYoUPJSfOd5U3lDoe
+/p9M+yX6uzEfpg9S1ytKacjv1gXQRMzKPczhCKO0945k6UGroybCo6xLGLJAn259NcNF5D7yIpFK
+hA8b0EFZq/b717+ydjPj40wQIitfYeptAFSIwSCxgT4EhFWW4luhqk23P/CPy6JfGxvYiblj+7c=
\ No newline at end of file
diff --git a/app.platform/src/main/resources/config/logback-spring.xml b/app.platform/src/main/resources/config/logback-spring.xml
new file mode 100644
index 00000000..50d41a9c
--- /dev/null
+++ b/app.platform/src/main/resources/config/logback-spring.xml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+ ${pattern}
+
+
+
+
+
+
+
+
+
+
diff --git a/cips.frontend/package.json b/cips.frontend/package.json
index 972c333e..f4fccfcc 100644
--- a/cips.frontend/package.json
+++ b/cips.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "cips.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/erm.frontend/package.json b/erm.frontend/package.json
index 593d0bc5..fc0eec87 100644
--- a/erm.frontend/package.json
+++ b/erm.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "erm.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/gradle.properties b/gradle.properties
index 79d8939c..2226c991 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -37,9 +37,9 @@ application_version=1.0.0
# platform
###########################################################
platform_group=io.sc
-platform_version=8.2.23
+platform_version=8.2.24
platform_plugin_version=8.2.10
-platform_core_frontend_version=8.2.83
+platform_core_frontend_version=8.2.84
###########################################################
# dependencies version
diff --git a/io.sc.engine.mv.frontend/package.json b/io.sc.engine.mv.frontend/package.json
index 6c8429c5..2a62fae2 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.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.engine.rule.client/src/main/resources/META-INF/platform/plugins/exportable-resources.json b/io.sc.engine.rule.client/src/main/resources/META-INF/platform/plugins/exportable-resources.json
index ed2f66d5..805ccbdd 100644
--- a/io.sc.engine.rule.client/src/main/resources/META-INF/platform/plugins/exportable-resources.json
+++ b/io.sc.engine.rule.client/src/main/resources/META-INF/platform/plugins/exportable-resources.json
@@ -29,31 +29,31 @@
},
{
"type" :"file",
- "name" :"io.sc.engine.rule.core-8.2.22.jar",
- "description" :"io.sc.engine.rule.core-8.2.22.jar",
- "sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.engine.rule.core-8.2.22.jar"],
- "target" :"${dir.engine.rule.classpath}/io.sc.engine.rule.core-8.2.22.jar"
+ "name" :"io.sc.engine.rule.core-8.2.23.jar",
+ "description" :"io.sc.engine.rule.core-8.2.23.jar",
+ "sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.engine.rule.core-8.2.23.jar"],
+ "target" :"${dir.engine.rule.classpath}/io.sc.engine.rule.core-8.2.23.jar"
},
{
"type" :"file",
- "name" :"io.sc.platform.util-8.2.22.jar",
- "description" :"io.sc.platform.util-8.2.22.jar",
- "sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.platform.util-8.2.22.jar"],
- "target" :"${dir.engine.rule.classpath}/io.sc.platform.util-8.2.22.jar"
+ "name" :"io.sc.platform.util-8.2.23.jar",
+ "description" :"io.sc.platform.util-8.2.23.jar",
+ "sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.platform.util-8.2.23.jar"],
+ "target" :"${dir.engine.rule.classpath}/io.sc.platform.util-8.2.23.jar"
},
{
"type" :"file",
- "name" :"io.sc.creditreport.core-8.2.22.jar",
- "description" :"io.sc.creditreport.core-8.2.22.jar",
- "sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.creditreport.core-8.2.22.jar"],
- "target" :"${dir.engine.rule.classpath}/io.sc.creditreport.core-8.2.22.jar"
+ "name" :"io.sc.creditreport.core-8.2.23.jar",
+ "description" :"io.sc.creditreport.core-8.2.23.jar",
+ "sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.creditreport.core-8.2.23.jar"],
+ "target" :"${dir.engine.rule.classpath}/io.sc.creditreport.core-8.2.23.jar"
},
{
"type" :"file",
- "name" :"io.sc.engine.rule.client.spring-8.2.22.jar",
- "description" :"io.sc.engine.rule.client.spring-8.2.22.jar",
- "sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.engine.rule.client.spring-8.2.22.jar"],
- "target" :"${dir.engine.rule.classpath}/io.sc.engine.rule.client.spring-8.2.22.jar"
+ "name" :"io.sc.engine.rule.client.spring-8.2.23.jar",
+ "description" :"io.sc.engine.rule.client.spring-8.2.23.jar",
+ "sources" :["classpath:/io/sc/engine/rule/client/jars/io.sc.engine.rule.client.spring-8.2.23.jar"],
+ "target" :"${dir.engine.rule.classpath}/io.sc.engine.rule.client.spring-8.2.23.jar"
},
{
diff --git a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/import_render.tpl b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/import_render.tpl
index 934643ec..2c9edd22 100644
--- a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/import_render.tpl
+++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/import_render.tpl
@@ -2,7 +2,7 @@
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.type.TypeReference;
import groovy.transform.Canonical;
-import io.sc.engine.rule.client.Executor;
+import io.sc.engine.rule.core.client.Executor;
import io.sc.engine.rule.core.ResourceAbstract;
import io.sc.engine.rule.core.RuleSetResult;
import io.sc.engine.rule.core.SingleRuleResult;
@@ -26,8 +26,6 @@ import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
-import java.util.Map;
-import java.util.Random;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static io.sc.engine.rule.core.function.ArithmeticFunction.multiply;
diff --git a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/processor/sql.tpl b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/processor/sql.tpl
index c2fe3f62..784203e7 100644
--- a/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/processor/sql.tpl
+++ b/io.sc.engine.rule.core/src/main/resources/io/sc/engine/rule/core/code/template/processor/sql.tpl
@@ -1 +1 @@
-#(tabs(SqlFieldMapping.groovy(parameter,processor,model),2))
\ No newline at end of file
+#(tabs(SqlFieldMapping.groovy(parameter,processor),2))
\ No newline at end of file
diff --git a/io.sc.engine.rule.frontend/package.json b/io.sc.engine.rule.frontend/package.json
index 94b96428..30b41539 100644
--- a/io.sc.engine.rule.frontend/package.json
+++ b/io.sc.engine.rule.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.engine.rule.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/impl/TestCaseServiceImpl.java b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/impl/TestCaseServiceImpl.java
index 87e216fa..384b6931 100644
--- a/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/impl/TestCaseServiceImpl.java
+++ b/io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/impl/TestCaseServiceImpl.java
@@ -568,8 +568,8 @@ public class TestCaseServiceImpl extends DaoServiceImpl parameters = new HashMap<>();
for(int rowIndex=7; rowIndex<=maxRow;rowIndex++) {
+ Map parameters = new HashMap<>();
row = sheet.getRow(rowIndex);
//组装参数
for (int colIndex = 2; colIndex < maxCol; colIndex++) {
diff --git a/io.sc.engine.st.frontend/package.json b/io.sc.engine.st.frontend/package.json
index 654fd73c..3901ba6e 100644
--- a/io.sc.engine.st.frontend/package.json
+++ b/io.sc.engine.st.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.engine.st.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.platform.ai.frontend/package.json b/io.sc.platform.ai.frontend/package.json
index 7d46a1ba..153ff41c 100644
--- a/io.sc.platform.ai.frontend/package.json
+++ b/io.sc.platform.ai.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.ai.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.platform.core.frontend/package.json b/io.sc.platform.core.frontend/package.json
index b111d8bd..fc5e5fff 100644
--- a/io.sc.platform.core.frontend/package.json
+++ b/io.sc.platform.core.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "platform-core",
- "version": "8.2.83",
+ "version": "8.2.84",
"description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件",
"main": "dist/platform-core.js",
diff --git a/io.sc.platform.core.frontend/template-project/package.json b/io.sc.platform.core.frontend/template-project/package.json
index 586b04c5..c60bb175 100644
--- a/io.sc.platform.core.frontend/template-project/package.json
+++ b/io.sc.platform.core.frontend/template-project/package.json
@@ -1,6 +1,6 @@
{
"name": "platform-core",
- "version": "8.2.83",
+ "version": "8.2.84",
"description": "前端核心包,用于快速构建前端的脚手架",
"private": false,
"keywords": [],
@@ -111,7 +111,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
- "platform-core": "8.2.83",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/Environment.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/Environment.java
index ea8f8e7c..aaec672f 100644
--- a/io.sc.platform.core/src/main/java/io/sc/platform/core/Environment.java
+++ b/io.sc.platform.core/src/main/java/io/sc/platform/core/Environment.java
@@ -28,8 +28,10 @@ public class Environment {
private boolean isRunningInDevelopment;
private boolean isRunningInWebContainer;
private boolean isMultiCorportationMode;
+ private boolean isConfigInClasspath;
private RuntimeStatus runtimeStatus;
+
private static class EnvironmentHolder{
private static Environment instance =new Environment();
}
@@ -95,6 +97,14 @@ public class Environment {
isMultiCorportationMode = multiCorportationMode;
}
+ public boolean isConfigInClasspath() {
+ return isConfigInClasspath;
+ }
+
+ public void setConfigInClasspath(boolean configInClasspath) {
+ isConfigInClasspath = configInClasspath;
+ }
+
public RuntimeStatus getRuntimeStatus() {
return runtimeStatus;
}
diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/service/impl/LicenseManagerServiceImpl.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/service/impl/LicenseManagerServiceImpl.java
index 3352063e..4baf7138 100644
--- a/io.sc.platform.core/src/main/java/io/sc/platform/core/service/impl/LicenseManagerServiceImpl.java
+++ b/io.sc.platform.core/src/main/java/io/sc/platform/core/service/impl/LicenseManagerServiceImpl.java
@@ -1,6 +1,7 @@
package io.sc.platform.core.service.impl;
import io.sc.platform.core.DirectoryManager;
+import io.sc.platform.core.Environment;
import io.sc.platform.core.License;
import io.sc.platform.core.enums.LicenseStatus;
import io.sc.platform.core.exception.LicenseInvalidatedException;
@@ -9,10 +10,13 @@ import io.sc.platform.core.util.*;
import io.sc.platform.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.core.io.DefaultResourceLoader;
+import org.springframework.core.io.Resource;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.io.FileInputStream;
+import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.Calendar;
@@ -38,8 +42,17 @@ public class LicenseManagerServiceImpl implements LicenseManagerService {
@Override
public void load() {
try {
- String file = DirectoryManager.getInstance().getByName(DirectoryManager.CONFIG_DIR) + "/license.lic";
- String licenseString = FileUtil.readString(new FileInputStream(file), "UTF-8");
+ InputStream inputStream =null;
+ if(Environment.getInstance().isConfigInClasspath()){
+ Resource rs =new DefaultResourceLoader().getResource("classpath:/config/license.lic");
+ if(rs.exists()) {
+ inputStream =rs.getInputStream();
+ }
+ }else {
+ String file = DirectoryManager.getInstance().getByName(DirectoryManager.CONFIG_DIR) + "/license.lic";
+ inputStream =new FileInputStream(file);
+ }
+ String licenseString = FileUtil.readString(inputStream, "UTF-8");
String publicKey = RSAUtil.loadPublicKeyBase64String("classpath:/license.publicKey.txt");
byte[] encrypted = RSAUtil.decryptByPublicKey(Base64.getMimeDecoder().decode(licenseString), publicKey);
String json = new String(encrypted, StandardCharsets.UTF_8);
diff --git a/io.sc.platform.core/src/main/java/io/sc/platform/core/springboot/BeforeEnvironmentProcessor.java b/io.sc.platform.core/src/main/java/io/sc/platform/core/springboot/BeforeEnvironmentProcessor.java
index 8e032390..ae1d89fe 100644
--- a/io.sc.platform.core/src/main/java/io/sc/platform/core/springboot/BeforeEnvironmentProcessor.java
+++ b/io.sc.platform.core/src/main/java/io/sc/platform/core/springboot/BeforeEnvironmentProcessor.java
@@ -48,6 +48,7 @@ public class BeforeEnvironmentProcessor implements EnvironmentPostProcessor, Ord
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
Environment.getInstance().setMultiCorportationMode(environment.getProperty(Environment.KEY_IS_MULTI_CORPORATION_MODE,Boolean.class,false));
+ Environment.getInstance().setConfigInClasspath(environment.getProperty("cp_config",Boolean.class,false));
// 将属性添加到 spring boot ConfigurableEnvironment 最后,拥有最低优先级
platformProperties.put(Environment.KEY_APPLICATION_NAME,Environment.getInstance().getApplicationName());
@@ -65,9 +66,17 @@ public class BeforeEnvironmentProcessor implements EnvironmentPostProcessor, Ord
// 设置系统属性
String applicationName =Environment.getInstance().getApplicationName();
platformProperties.put("spring.application.name",applicationName);
- platformProperties.put("spring.config.location", FILE_PREFIX + applicationHomeDir + "/config/application.properties");
- platformProperties.put("spring.banner.location", FILE_PREFIX + applicationHomeDir + "/config/banner.txt");
- platformProperties.put("logging.config", FILE_PREFIX + applicationHomeDir + "/config/logback-spring.xml");
+
+ //设置配置文件路径
+ if(Environment.getInstance().isConfigInClasspath()){
+ platformProperties.put("spring.config.location", "classpath:/config/application.properties");
+ platformProperties.put("spring.banner.location", "classpath:/config/banner.txt");
+ platformProperties.put("logging.config", "classpath:/config/logback-spring.xml");
+ }else {
+ platformProperties.put("spring.config.location", FILE_PREFIX + applicationHomeDir + "/config/application.properties");
+ platformProperties.put("spring.banner.location", FILE_PREFIX + applicationHomeDir + "/config/banner.txt");
+ platformProperties.put("logging.config", FILE_PREFIX + applicationHomeDir + "/config/logback-spring.xml");
+ }
// 设置插件贡献的系统属性
SpringFactoriesLoader.loadFactories(PluginSpiService.class, this.getClass().getClassLoader());
diff --git a/io.sc.platform.developer.doc/package.json b/io.sc.platform.developer.doc/package.json
index 03abdeee..264ef263 100644
--- a/io.sc.platform.developer.doc/package.json
+++ b/io.sc.platform.developer.doc/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.developer.doc",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"main": "index.js",
"scripts": {
@@ -28,7 +28,7 @@
"vuepress": "2.0.0-rc.15"
},
"dependencies": {
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"vue": "3.5.13",
"vue-i18n": "11.0.1"
diff --git a/io.sc.platform.developer.frontend/package.json b/io.sc.platform.developer.frontend/package.json
index cb78f214..4286b680 100644
--- a/io.sc.platform.developer.frontend/package.json
+++ b/io.sc.platform.developer.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.developer.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.platform.installer/src/main/java/io/sc/platform/installer/service/impl/InstallerServiceImpl.java b/io.sc.platform.installer/src/main/java/io/sc/platform/installer/service/impl/InstallerServiceImpl.java
index 86065515..4998876d 100644
--- a/io.sc.platform.installer/src/main/java/io/sc/platform/installer/service/impl/InstallerServiceImpl.java
+++ b/io.sc.platform.installer/src/main/java/io/sc/platform/installer/service/impl/InstallerServiceImpl.java
@@ -39,6 +39,9 @@ public class InstallerServiceImpl implements InstallerService {
@Override
public boolean isInstalled() {
+ if(Environment.getInstance().isConfigInClasspath()){
+ return true;
+ }
if(isInstalled==null){
Resource resource =new DefaultResourceLoader().getResource("file:" + DirectoryManager.getInstance().getHomeDir() + "/config/.installed");
if(resource.exists()){
diff --git a/io.sc.platform.lcdp.frontend/package.json b/io.sc.platform.lcdp.frontend/package.json
index 23c002dc..9a2507b8 100644
--- a/io.sc.platform.lcdp.frontend/package.json
+++ b/io.sc.platform.lcdp.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.lcdp.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.platform.license.keygen.frontend/package.json b/io.sc.platform.license.keygen.frontend/package.json
index bbab0864..7e5f12d9 100644
--- a/io.sc.platform.license.keygen.frontend/package.json
+++ b/io.sc.platform.license.keygen.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.license.keygen.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.platform.mvc.frontend/package.json b/io.sc.platform.mvc.frontend/package.json
index 78f110b8..fb55198d 100644
--- a/io.sc.platform.mvc.frontend/package.json
+++ b/io.sc.platform.mvc.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.mvc.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.platform.scheduler.manager.frontend/package.json b/io.sc.platform.scheduler.manager.frontend/package.json
index 4175b9d5..159f1efb 100644
--- a/io.sc.platform.scheduler.manager.frontend/package.json
+++ b/io.sc.platform.scheduler.manager.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.scheduler.manager.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.platform.system.frontend/package.json b/io.sc.platform.system.frontend/package.json
index f76401c9..3ab3b4bd 100644
--- a/io.sc.platform.system.frontend/package.json
+++ b/io.sc.platform.system.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.platform.system.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -111,7 +111,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.platform.util/src/main/java/io/sc/platform/util/compiler/memory/MemoryJavaCompilerClassLoader.java b/io.sc.platform.util/src/main/java/io/sc/platform/util/compiler/memory/MemoryJavaCompilerClassLoader.java
index 12230a10..412f7844 100644
--- a/io.sc.platform.util/src/main/java/io/sc/platform/util/compiler/memory/MemoryJavaCompilerClassLoader.java
+++ b/io.sc.platform.util/src/main/java/io/sc/platform/util/compiler/memory/MemoryJavaCompilerClassLoader.java
@@ -30,4 +30,9 @@ public class MemoryJavaCompilerClassLoader extends URLClassLoader {
classBytes.remove(className);
return defineClass(className, buffer, 0, buffer.length);
}
+
+ @Override
+ public Class> loadClass(String name) throws ClassNotFoundException {
+ return super.loadClass(name);
+ }
}
diff --git a/io.sc.standard.frontend/package.json b/io.sc.standard.frontend/package.json
index 37d98edb..e207c437 100644
--- a/io.sc.standard.frontend/package.json
+++ b/io.sc.standard.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.standard.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -112,7 +112,7 @@
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
"pinia-undo": "0.2.4",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",
diff --git a/io.sc.website/package.json b/io.sc.website/package.json
index e73d4454..217d7727 100644
--- a/io.sc.website/package.json
+++ b/io.sc.website/package.json
@@ -1,6 +1,6 @@
{
"name": "io.sc.website",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"main": "index.js",
"scripts": {
@@ -28,6 +28,6 @@
},
"dependencies": {
"vue": "3.5.13",
- "platform-core": "8.2.82"
+ "platform-core": "8.2.84"
}
}
\ No newline at end of file
diff --git a/wra.report.frontend/package.json b/wra.report.frontend/package.json
index aa6c21e0..cd4ed3cb 100644
--- a/wra.report.frontend/package.json
+++ b/wra.report.frontend/package.json
@@ -1,6 +1,6 @@
{
"name": "wra.report.frontend",
- "version": "8.2.22",
+ "version": "8.2.23",
"description": "",
"private": false,
"keywords": [],
@@ -111,7 +111,7 @@
"mockjs": "1.1.0",
"node-sql-parser": "5.3.6",
"pinia": "2.3.0",
- "platform-core": "8.2.82",
+ "platform-core": "8.2.84",
"quasar": "2.17.6",
"sort-array": "5.0.0",
"svg-path-commander": "2.1.7",