全栈低码设计开源框架 json-script-rule 配置说明

配置说明

简述

本篇主要讲述spring的application文件的配置,与model包类型,配置文件也有一个相对应的类,它就是edi.rule.config.JSRuleProperties

用例

spring:
  profiles:
    #active: mysql
edi:
  rule:
    locations: test.business.po
    #processor: test.myrule.JSRuleDBProcessor
    message: /rule-message/chinese.properties
    mybatis: /META-INF/rule-mybatis-config.xml
    http:
      #connectTimeout: 10000
      readTimeout: 10000
      headArgs: qweewq
      headSign: asddsa
      #engineControllerUrl: http://localhost:8012/api/json/script
    open:
      #replenishColumns: true
    #close:
      #engineController: true
      models: test.rule.JSRuleGetCustomModel
    config:
      dateFormat: yyyy-MM-dd HH:mm:ss,yyyy/MM/dd HH:mm:ss
      calculateScale: 2
      #calculateMode: 2
    #security:
      type: sm2
      publicKey: 04a14dd8d62e90d5cfd7b59ce89e346e0e7def05281361f7ef47676c1e534ca85b3d88839b02e9b57b2818f46beeea4eb88a3e5abe429d0e866ddea9c8c7756f7a
      privateKey: 00f8d5d53f123f1a001403a27acb16b8408dff48f249b2ed7d2429b3394628bc36
      #type: rsa
      #publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+h70Xxu9L25Sw8M9nyw4g8d6YLD56RmiCrU4rnGamS9iESl69eSBBF2IR5gN+kBPSiQrq84JBLJ8K79GGrTKqoLjV816khut29tl8VtfUo+YZ8So4of2cGw5McvQ4j/JB4bjsohSjZWBBTCLPbAeu4QoLyvE1jVLleRyAUJxrQwIDAQAB
      #privateKey: MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAL6HvRfG70vblLDwz2fLDiDx3pgsPnpGaIKtTiucZqZL2IRKXr15IEEXYhHmA36QE9KJCurzgkEsnwrv0YatMqqguNXzXqSG63b22XxW19Sj5hnxKjih/ZwbDkxy9DiP8kHhuOyiFKNlYEFMIs9sB67hCgvK8TWNUuV5HIBQnGtDAgMBAAECgYA5p4qVYNn1qv8OIfipEF14o6g3hR/s0VR7wqSmdr/rL4VX1sdfb4FOoRxIjUFecYvGCDk5CrHONgn0fch6B/wN9qBk1Yjs/P0m74tVIL9tITm0l1YFkbU/mmaOQpCPA+qD6Y3EaGmvQfusq3TVKJzbJLuW6g23/NNiLk5/2BStKQJBAPOxDnvnEeMbEsNuqzsDlDVsBXlP+SsFZ88ZyIarxg3LWX04nW/WJ40A1iq7V79lOxJrnibTYz+Okbp+KGiRo7kCQQDIJ02IDtSzmYEdKmFrzfrHyCKW/lKZV2pOFUGdl/OIINsVL/9+yrPzcXnRp2I6JzCXDnsYu4OrZVGPgXVF1jzbAkEA5o7syjNLjBgQP5DUNmhjb8u8vhL5Bkf9+EZHn4qjPmfXSg8nfSkbkF9rQVCwa2fmZL4nCkrTSs2jeNNlfdHVGQJBAKRiazHghF7RJxKOGR8SN/JW89mxHKOmAMAKgy5seu4Flglrt1oqHutE+njvESSTxTt7ACyK7RQajYbgGzH1R1sCQQCylpMLxwL8PIPdlC5r5mwyHy5TsgkaU8Ft7ZBxFLu8cA0XyKfwNto2RrfVpPGvwc75KmOPQYS7fPKY7enYxRt0
      signKey: vvv
    poi:
      excel:
        importFilterEmptyRow: true

下面是application-mysql.yml

edi:
  rule:
    database: mysql

说明

application-mysql.yml会覆盖掉application.yml已存在的配置

  • locations:用于设置实体类的根路径,该属性可通过扩展类JSRuleDefaultExtend进行扩展,自3.2.4版本之后允许设置有多个路径,如果多个根路径下有相同的类名,则在使用json时应使用类全限定名
  • processor:用于设置自定义处理类,可通过直接在类上加@Component注解来替代配置该属性
  • database:目前支持的数据库分别是postgresql、mysql、oracle,kingbase,可选择对应的数据库类型,默认为mysql
  • mybatis:框架内置mybatis配置文件的路径,根路径位于resources文件夹下,自定义mybatis-config.xml文件可覆盖框架内置的配置文件,你只需要将自定义文件放在resources路径下,并通过该属性来指向此文件的位置即可,文件内容可参考下面的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org/DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
<!--        <setting name="logImpl" value="STDOUT_LOGGING"/>-->
        <setting name="callSettersOnNulls" value="true"/>
    </settings>
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <property name="pageSizeZero" value="true"/>
        </plugin>
    </plugins>
</configuration>

它看上去和我们平时使用的mybatis配置文件一模一样,甚至包括pageHelper插件,只不过这里配置的是框架内置的mybatis

  • message:用于配制国际化文件,应用框架内置两种语言文件,分别为/rule-message/english.properties以及/rule-message/chinese.properties,默认为english,如果需要自定义日志的内容或语言可将后缀名为properties的文件放入resources目录下,并以/符号开头配置该属性指向自定义的国际化文件
  • dataSourceBean:针对个别特殊情况下多数据源时指定其中一个数据源的场景,该值为最终指定的DataSource的spring bean的名称(4.0版本开始支持)
  • open.superProp:配置实体类时如果实体类有父类,则是否将父类的字段一起加入到缓存中,默认为false
  • open.replenishColumns:该配置只针对mysql数据库,它表示是否补全缺失的列为null值,mysql批量插入时如果行数据之间的列数不一致则将会导致数据库报错,配置为true则会保证数据列的一致性,缺失的列会以null的形式加入到行数据中,默认为false
  • close.engineController:是否关闭内置Controller,默认false,表示开启,该属性可在自定义Controller后进行关闭,避免产生多个处理请求的接口
  • close.models:用于禁用某些插件,当你认为某些插件不需要使用时可通过该属性来禁用,只需填入插件的全限定类名即可,多个插件可以用逗号进行分割,如下
edi:
  rule:
    close:
      models: test.business.rule.model.JSRuleGetCustomModel,edi.rule.model.JSRuleGet
  • config.dateFormat:用于配置日期格式,凡是日期格式的字符串会在后端自动转化为日期类型进行处理,这包括插入数据时,查询日期区间时,以及断言里判断时间范围等,配置多个日期格式时需用逗号分割开,未配置该属性时则采用默认格式,系统默认日期格式如下
dateFormat: yyyy-MM-dd,yyyy-MM-dd HH:mm:ss
  • config.calculateScale:使用add插件的calculate属性进行除法计算时默认保留的小数位
  • config.calculateMode:使用add插件的calculate属性进行除法计算时默认的舍入方案,默认四舍五入
  • http.connectTimeout:连接超时配置,参考SimpleClientHttpRequestFactory
  • http.readTimeout:读取超时配置,参考SimpleClientHttpRequestFactory
  • http.headSign:开启安全模式后请求时应携带签名文本,该属性为request请求头中签名文本的属性名,如果security.type属性不为空并且此次请求为request请求,则此时该属性不能为空
  • http.headArgs:该属性为request请求头中全局参数的属性名,它是一个可转化为JSRuleGlobalArgs对象的json字符串,其中的sign属性代表签名文本,它可代替http.headSign的配置
  • poi.excel.importFilterEmptyRow:在使用导入插件时是否启用过滤器,默认为false,过滤器只会对空的数据行进行过滤
  • security(since 4.1):安全模式,目前框架内置的安全模式分为两种,一种是sm2,另一种是rsa
  • security.type(since 4.1):安全模式类型,该属性存在时则表示启动安全模式,可参考JSRuleSecurityEnum枚举,值为sm2时表示启用sm2安全模式
  • security.publicKey(since 4.1):公钥,当security.type开启安全模式时有效,公钥和私钥任何一个为空时都将重新自动生成秘钥对儿
  • security.privateKey(since 4.1):私钥,当security.type开启安全模式时有效,公钥和私钥任何一个为空时都将重新自动生成秘钥对儿
  • security.signKey(since 4.1):开启安全模式后如果还需要后台配置签名秘钥用于加盐处理,此时可配置该属性,该属性可以为空,但不建议为空。验签的过程首先会将json字符串进行加密,之后用加密后的密文再与该签名秘钥组合,最后再与签名文本进行对比验证

动态定义

动态定义是指请求时在json中临时定义的,并能够临时更改原有框架配置的一种手段,可以参考JSRuleDefinition这个类来查看都有哪些属性可以定义,仅在当前请求时有效。除了viewParams和fieldsDesensitized属性,这里新增加了一个config属性,它对应的是系统可配置的程序参数,该属性后续可能会加入更多可定义的动态配置,这里先以如下几个参数进行说明

  • @calculateScale:使用add插件并进行除法运算时保留的小数位,int类型
  • @calculateMode:使用add插件并进行除法运算时小数位的舍入方案,默认为四舍五入
    下面展示一个例子
"define":{
    "fd":{"imgUrl":{"regex":"[1-9]+","replaced":"!"}},
    "vp":{"CategoryView":["#$length(kkk)","4"]},
    "config":{"calculateScale":4,"calculateMode":4}
}

上面的fd是脱敏配置(具体可参考脱敏配置篇章),vp是视图配置(具体可参考视图配置篇章),config对应的是edi.rule.config

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容