LiteFlow LiteFlow
💒首页
  • v2.13.2(当前版本)
  • What's New

    • 🌈What' s New In LiteFlow v2.13.2?
  • 历史版本

    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 🌈2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
👑LF CLUB社区
  • 常见问题
  • 专题解释

    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念,在框架中起到什么样的作用?
💖赞助
🧩插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
👥加入群聊
🧤谁在使用
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)

广告采用随机轮播方式显示 ❤️成为赞助商
💒首页
  • v2.13.2(当前版本)
  • What's New

    • 🌈What' s New In LiteFlow v2.13.2?
  • 历史版本

    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 🌈2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
👑LF CLUB社区
  • 常见问题
  • 专题解释

    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念,在框架中起到什么样的作用?
💖赞助
🧩插件
🔥PPT
  • 项目介绍
  • 项目成员
  • 更新记录
  • 参与开发
👥加入群聊
🧤谁在使用
  • Gitee (opens new window)
  • GitCode (opens new window)
  • Github (opens new window)
  • 🍤LiteFlow简介
  • 🍓项目特性
  • 🍟快速开始(Hello world)

  • 🍢配置项

  • 🗂规则文件

    • 📔规则文件格式
    • 📕本地规则文件配置
    • 📗ZK规则文件配置源
    • 📘SQL数据库配置源
      • 依赖
      • 配置
      • 配置说明
      • 自动刷新
      • 小例子
    • 📋Nacos配置源
    • 🗄Etcd配置源
    • 📜Apollo配置源
    • 📙自定义配置源
  • 🔗常规组件

  • 🧩EL规则的写法

  • 🌮数据上下文

  • 🛩执行器

  • 🍋脚本组件

  • 🍇声明式组件

  • 🎲用代码动态构造规则

  • 🎨高级特性

  • ⛱测试用例以及示例

  • 🪂性能表现
  • v2.9.X文档
  • 🗂规则文件
铂赛东
2022-10-06
目录

📘SQL数据库配置源

LiteFlow从v2.9.0开始,原生支持了标准关系型结构化数据库的配置源,只要你的数据库兼容标准SQL语法,都可以支持。

# 依赖

如果使用数据库作为规则配置源,你需要添加以下额外插件依赖:

<dependency>
    <groupId>com.yomahub</groupId>
    <artifactId>liteflow-rule-sql</artifactId>
    <version>2.9.7</version>
</dependency>

# 配置

依赖了插件包之后,你无需再配置liteflow.ruleSource路径。

只需要配置插件的额外参数即可:

    liteflow:
      rule-source-ext-data-map:
        url: jdbc:mysql://localhost:3306/poseidon
        driverClassName: com.mysql.cj.jdbc.Driver
        username: root
        password: 123456
        applicationName: demo
        #以下是chain表的配置,这个一定得有
        chainTableName: chain
        chainApplicationNameField: application_name
        chainNameField: chain_name
        elDataField: el_data
        #以下是script表的配置,如果你没使用到脚本,下面可以不配置
        scriptTableName: script
        scriptApplicationNameField: application_name
        scriptIdField: script_id
        scriptNameField: script_name
        scriptDataField: script_data
        scriptTypeField: script_type
    
    liteflow.rule-source-ext-data={\
      "url":"jdbc:mysql://localhost:3306/poseidon",\
      "driverClassName":"com.mysql.cj.jdbc.Driver",\
      "username":"root",\
      "password":"123456",\
      "applicationName": "demo",\
      "chainTableName": "chain",\
      "chainApplicationNameField": "application_name",\
      "chainNameField": "chain_name",\
      "elDataField": "el_data",\
      "scriptTableName": "script",\
      "scriptApplicationNameField": "application_name",\
      "scriptIdField": "script_id",\
      "scriptNameField": "script_name",\
      "scriptDataField": "script_data",\
      "scriptTypeField": "script_type"
      }
    
    // Make sure to add code blocks to your code group

    # 配置说明

    LiteFlow并不约束你的表名和表结构,你只需要把表名和相关的字段名配置在参数里即可。

    对于配置项说明如下:

    配置项 说明
    url jdbc的连接url
    driverClassName 驱动器类名
    username 数据库用户名
    password 数据库密码
    applicationName 你的应用名称
    chainTableName 编排规则表的表名
    chainApplicationNameField 编排规则表中应用名称存储字段名
    chainNameField 规则名称存储的字段名
    elDataField EL表达式的字段(只存EL)
    scriptTableName 你的脚本存储表的表名
    scriptApplicationNameField 脚本表中应用名称存储字段名
    scriptIdField 脚本组件的Id的字段名
    scriptNameField 脚本组件名称的字段名
    scriptDataField 脚本数据的字段名
    scriptTypeField 脚本类型的字段名(类型参照定义脚本组件)

    在数据库中,你至少需要一张表来存储编排规则,这是必须的。

    如果你使用到了脚本,那么需要第二张表来存储脚本。

    在规则表中,一行数据就是一个规则。在脚本表中,一行数据就是一个脚本组件。


    举例:

    规则表:liteflow_chain

    id application_name chain_name chain_desc el_data create_time
    1 demo chain1 测试流程1 THEN(a, b, c, s1,s2); 2022-09-19 19:31:00

    脚本表:liteflow_script

    id application_name script_id script_name script_data script_type create_time
    1 demo s1 脚本s1 import cn.hutool.core.date.DateUtil
    def date = DateUtil.parse("2022-10-17 13:31:43")
    println(date) defaultContext.setData("demoDate", date)
    class Student {
    int studentID
    String studentName
    }
    Student student = new Student() student.studentID = 100301 student.studentName = "张三" defaultContext.setData("student",student) def a=3
    def b=2
    defaultContext.setData("s1",a*b)
    script 2022-09-19 19:31:00
    2 demo s2 脚本s2 defaultContext.setData("s2","hello") script 2022-09-19 19:31:00

    # 自动刷新

    由于结构化数据库并不提供监听机制,所以当你的规则在数据库中发生变化,LiteFlow是感知不到变化的。不会自动刷新规则。

    你需要手动调用LiteFlow提供的相关API来完成规则刷新。在实际应用中,你可以把这个刷新做成页面上的一个按钮或者一个http链接来进行操作。

    具体如何调用API进行规则刷新请参照平滑热刷新。

    # 小例子

    为了让大家能简单上手SQL规则文件的配置和运行,这里有一个小demo,大家可以拉到本地来运行,需要你替换数据库的配置信息。

    运行项目前,先读项目里的readme.txt文件。

    https://github.com/bryan31/liteflow-ext-rule-demo

    帮助我们改善此文档 (opens new window)
    上次更新: 2023/03/17, 01:44:42
    📗ZK规则文件配置源
    📋Nacos配置源

    ← 📗ZK规则文件配置源 📋Nacos配置源→

    Theme by Vdoing | Copyright © 2020-2025 铂赛东 | MIT License
    沪ICP备18012955号-2
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式