当前位置: 首页 > news >正文

规则引擎rule-engine(三)可视化api设计和实现解释

可视化设计

设计服务通过拖拉拽组件,配置构建规则,下图是设计服务的原型示意

左侧:组件类型选择,其中“决策”下有两个扩展子组件“其他”和“分支决策”;“跳过”和“跳出”是条件循环控制的子组件;语句有左右两个表达式项构成,表达式项可以是变量,常量,表达式

右侧,上方:展示可用的变量,上级,包括到最上级的变量,以及全局可用的工具类;本快的变量,

右侧,下方:组件的编辑配置框,每个组件可单独预览,框中的组件链式排序构成完整规则

上图看,组件是链状,但实际分支嵌入到决策组件,因此元模型是树状的结构

设计元素

本节介绍规则组件的可视化配置属性,篇幅较大,分3部分

设计元素1

  • 类型

类型有3个配置属性,其中名称必填,全名可选,维度集合类型可选

类型是类型表选择,通常不需要手动配置

  • 变量/常量

变量/常量有两个必填属性,名称类型语句可选,当声明变量需初始化配置。属性常量必填,变量可选

变量/常量声明后,进入变量/常量表,用于后续遍历参与的组件配置

方法参数多参数需要配置

  • 决策

决策可配置多个分支决策其他是可选最后一个,分支决策有两个配置条件,

1 条件,返回true/false的语句组件,决定是否执行改决策,其他没有条件配置

2 动作,语句组,若干语句,决策内的逻辑

  • 语句

语句可认为是带”;”的表达式,有3个配置

1 操作符 操作符列表中选择

2 左语句项 变量语句项,常量语句项,语句语句项

变量语句项/常量语句项与配置变量/常量一致语句语句项,自身是语句,递归配置

3 右语句项 同左语句项

设计元素2

参数和语句项 图中所示比较清楚,不再过多解释

  • 返回

返回有可选属性语句,设置返回变量,常量或者语句

设计元素3

本节介绍规则组件可视化配置属性,for,while

for/while差不多,上面语句项是断言,循环的条件 

可视化api

本节详细说明设计api,后面章节详细说明api

public ResultT<IPage<RuleLogic>> searchRuleLogic(

                        Integer pageNum, Integer pageSize, String searchWords)

public ResultT<List<RuleComponent>> getRuleLogicComponent(Long ruleLogicId)

public ResultT<String> previewRuleComponent(@RequestBody ComponentBean bean)

public ResultT<String> previewRuleLogic(@RequestBody List<ComponentBean> beans)

public <R> ResultT<R> testRuleLogic(@RequestBody RuleLogic logic,

                                       @RequestParam String factType,

                                       @RequestParam String json) throws Exception

public <R> ResultT<R> testRuleLogic(@RequestBody RuleLogic logic,

                 @RequestParam String factType1, @RequestParam String json1,

                 @RequestParam String factType2, @RequestParam String json2) throws Exception

public ResultT<RuleLogic> saveRulesLogicDraft(@RequestBody RuleLogic logic)

public ResultT<ContainedRule<?, ?>>

                   releaseRuleLogic(Long ruleLogicId) throws RuleLowCodeException

public ResultT<Void> resetRuleLogic(Long ruleLogicId) throws RuleLowCodeException

接口说明

本节以postman脚本说明接口使用,下图是规则组件元模型的json

搜索规则逻辑

方法:POST

URL:  /ruledesign/searchRuleLogic

参数:

返回:

获取规则逻辑组件

方法:GET

参数:

返回:

上图规则逻辑的组件,content是组件bean的返回,元模型json格式

预览规则组件1-声明组件

本节示例预览声明变量规则组件

方法:POST

参数:

返回示例:

返回生产的代码,上图是带赋值表达的声明

预览规则组件2-ifelse

本机示例组合ifelse规则组件

方法:POST

参数:

 上图一组if-elseif*-else组件,COMPOSITED组合组件类型包装

返回:

预览规则组件-for/continue

示例预览for规则组件

方法:POST

URL: ruledesign/previewRuleLogic

参数:

for类型组件,集合遍历,并带有内嵌语句 

返回:

上图for规则脚本,fact.x 传入的事实,x是其list类型的属性

预览规则组件-while/break

示例预览while规则组件

方法:POST

URL: ruledesign/previewRuleLogic

参数:

while组件根据条件的循环,并带有内嵌语句 

返回:

上图while规则脚本

预览规则逻辑

本接口预览完整的规则逻辑,是规则组件列表集合(list)

方法:POST

URL: ruledesign/previewRuleLogic

参数:

参数规则逻辑,代表完整功能的规则,包括一个声明组件,一组ifelse组件

返回:

上图完整规则预览返回,包括声明组件一组ifelse组件

测试规则逻辑1fact

本机介绍在线测试规则逻辑,单个事实

方法:POST

URL: ruledesign/testRuleLogic1?factType=com.grp.base.ruleengine.fact.TestFact&json={"x": 51, "y": 55}

参数:

参数分两部分,上面url带了事实参数,分别是事实类型,事实示例json

另一部分是在线规则组件,上一篇的预览规则逻辑

返回:

测试规则逻辑2fact

本节展示两个事实的规则逻辑测试

方法:POST

URL: http://localhost:8080/ruledesign/testRuleLogic2?

factType1=com.grp.base.ruleengine.fact.TestFact1

&json1={"x": "rule"}&factType2=com.grp.base.ruleengine.fact.TestFact2&json2={"y": "engine"}

定义两个fact,分别带有x,y字符串属性

对应的脚本 "return su.reverse(fact1.x + fact2.y);",使用了su字符串工具类的方法 

返回:

 x+y的反转

保存规则逻辑

方法:POST

URL: ruledesign/saveRulesLogicDraft

参数:

参数是完整的规则逻辑,其中,rcs规则逻辑的组件,pck/name 规则逻辑的包和名称 

返回:

返回,code/msg返回信息,还有规则逻辑,此时带有id,实现是保存到数据库 

发布规则逻辑

发布规则,规则逻辑设置为RELEASED,生成规则

方法: POST

URL: ruledesign/releaseRuleLogic?ruleLogicId=

参数:ruleLogicId 规则逻辑Id

返回:

返回创建的规则,规则脚本逻辑元模型生成

重置规则逻辑

规则发布后,可以重置为DRAFT状态,二次修改后再发布

总述

所有设计服务api测试示例

http://www.dtcms.com/a/284099.html

相关文章:

  • 解读一个大学专业——信号与图像处理
  • 2025年Java后端秋招面试的高频八股文+场景题
  • NFS、iSCSI 和lnmp部署操作
  • 深度学习之神经网络(二)
  • 神经网络常见激活函数 15-B-SiLU 函数
  • OCR 赋能档案数字化:让沉睡的档案 “活” 起来
  • 无线充电技术详解:原理、芯片选型与应用场景
  • Android开发中Retrofit使用方法与底层原理详解
  • 学习设计模式《十八》——备忘录模式
  • 第5天 | openGauss中一个用户可以访问多个数据库
  • 数据分析:从数据到决策的核心逻辑与实践指南
  • 微信小程序地理定位功能
  • SLG 游戏如何进行防破解和防盗版保护?
  • 从 SEO 到 GEO:解锁 AI 时代的搜索优化新机遇
  • 数据结构:集合操作(Set Operations): 并集(Union)、交集(Intersection)、 差集(Difference)
  • HTTP相关知识
  • os.path 常用的使用方法
  • 高光谱相机有多少种类型?分别有什么特点?
  • Odoo最佳业务实践:从库存管理重构到全链路协同
  • 【数据结构】链表(linked list)
  • slot=“trigger“ 覆盖了组件内部的 ref=“trigger“【详细来龙去脉版 5min】
  • 网络服务(设置邮箱发送告警功能,每1分钟发送一封邮件)
  • CMake综合学习1: Cmake的模块化设计
  • vue3实现web端和小程序端个人签名
  • 《迭代器 VS 生成器:Python 惰性计算的两种实现方案详解》
  • Zabbix 分布式监控系统架构设计与优化
  • 硅谷顶级风投发布《2025年AI实战手册》|附下载
  • 芯谷科技--双四通道模拟/数字多路复用器74HC4052
  • Tcpdump使用
  • linux_线程同步