Devs--开源规则引擎介绍
Devs
Devs是一款轻量级的规则引擎。
开源地址:https://github.com/CrankZ/devs
基础概念
此规则引擎的基础概念有字段、条件、规则等。
其中字段组成条件,条件组成规则,并且支持多个条件通过与或组成一个规则。下面用常见的代码说明各个概念
代码举例
规则分类
多个规则可组成一个模板,调用接口执行的时候是以模板为维度执行的。
模板
模板名称 |
---|
模板1 |
规则模板映射表
模板id | 规则id |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
规则相关
字段
字段名称 | 字段编码 | 字段类型 | 取数类型 | 取数路径 |
---|---|---|---|---|
name | 姓名 | STRING | REFLECT | engineServiceImpl#testReflect |
age | 年龄 | NUMBER | REFLECT | engineServiceImpl#testReflect |
条件
条件名称 | 条件编码 | 字段编码 | 逻辑比较符 | 期望值 |
---|---|---|---|---|
姓名是否等于张三 | C_NAME_IS_ZS | name | StringMethod.equals($EXPECT,$FACT) | 张三 |
年龄是否大于18岁 | C_AGE_GT18 | age | NumberMethod.gt($EXPECT,$FACT) | 18 |
规则
规则名称 | 条件组 |
---|---|
姓名是否等于张三 | C_STRING_EQUALS1 |
年龄是否大于18岁 | C_NUMBER_GE1 |
用户是否符合条件 | C_STRING_EQUALS1 && C_NUMBER_GE1 |
规则结果
调用接口执行时,结果会直接通过接口返回。
TODO: 保存规则执行结果
TODO: 添加规则触发器
ER图
模板-规则关系
规则相关
规则执行结果
执行接口
URL:/engine/execute
METHOD:POST
入参
字段名 | 字段类型 | 是否必填 | 解释 |
---|---|---|---|
templateId | Long | TRUE | 模板ID |
params | Map<String,Object> | FALSE | 参数 |
例子
{
"templateId": 1,
"params": {
"userId": 123
}
}
出参
验收结果只有是、否、NULL。
执行结果为NULL,则只输出内容,需要手动判断
规则名称 | 执行结果 | 条件组 | 实际取值 |
---|---|---|---|
姓名是否等于张三 | TRUE | 姓名是否等于张三 | "姓名": "张三" |
年龄是否大于18岁 | FALSE | 年龄是否大于18岁 | "年龄": 10 |
用户是否符合条件 | FALSE | 姓名是否等于张三 && 年龄是否大于18岁 | "姓名": "张三", "年龄": 10 |
例子
{
"code": "0000",
"msg": "success",
"requestId": "",
"timestamp": 1637996239325,
"data": {
"templateId": 1,
"params": {},
"ruleResult": [
{
"ruleName": "姓名是否等于张三",
"trigger": true,
"conditions": "姓名是否等于张三",
"facts": {
"姓名": "张三"
}
},
{
"ruleName": "年龄是否大于18岁",
"trigger": false,
"conditions": "年龄是否大于18岁",
"facts": {
"年龄": 10
}
},
{
"ruleName": "用户是否符合条件",
"trigger": false,
"conditions": "姓名是否等于张三 && 年龄是否大于18岁",
"facts": {
"姓名": "张三",
"年龄": 10
}
}
]
}
}
Devs--开源规则引擎介绍的更多相关文章
- Fixflow引擎解析(一)(介绍) - Fixflow开源流程引擎介绍
Fixflow引擎解析(四)(模型) - 通过EMF扩展BPMN2.0元素 Fixflow引擎解析(三)(模型) - 创建EMF模型来读写XML文件 Fixflow引擎解析(二)(模型) - BPMN ...
- SNF快速开发平台--规则引擎介绍和使用文档
设计目标: a) 规则引擎语法能够满足分单,计费,WMS策略的配置要求.语法是一致和统一的 b) 能够在不修改规则引擎模块的情况下,加入任意一个新的规则:实现上述需求之外的规则配置需求 c) 运算速度 ...
- 开源规则引擎 Drools 学习笔记 之 -- 1 cannot be cast to org.drools.compiler.kie.builder.impl.InternalKieModule
直接进入正题 我们在使用开源规则引擎 Drools 的时候, 启动的时候可能会抛出如下异常: Caused by: java.lang.ClassCastException: cn.com.cheng ...
- .Net规则引擎介绍 - REngine
规则引擎 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策.接受数据输入,解释业务规则,并根据业务规则做出业务决策 ...
- 开源规则引擎 drools
java语言开发的开源业务规则引擎 DROOLS(JBOSS RULES )具有一个易于访问企业策略.易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快.效率高.业务分析师或审核人员可以利用 ...
- 转:开源3D引擎介绍
Delta3D:Delta3D是一个功能齐全的游戏引擎,可用于游戏,模拟或其他图形应用.其模块化设计集成了其他的开源项目,如‘开放场景图’,‘开放动力学引擎’,‘人物动画库’和‘OpenAL’ .De ...
- FunnelWeb 开源Blog引擎介绍
FunnelWeb is an open source blog engine, built by developers for developers. Instead of fancy quotes ...
- SNF快速开发平台--规则引擎整体介绍及使用说明书
一.设计目标 a)规则引擎语法能够满足分单,计费,WMS策略的配置要求.语法是一致和统一的 b)能够在不修改规则引擎模块的情况下,加入任意一个新的规则:实现上述需求之外的规则配置需求 c)运算速度快 ...
- Scala化规则引擎
1. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...
随机推荐
- 万里阳光号Srcum Metting博客汇总
Srcum Meeting 一.Alpha阶段 第一次Scrum Meeting 第二次Scrum Meeting 第三次Scrum Meeting 第四次Scrum Meeting 第五次Scrum ...
- UltraSoft - Alpha - Scrum Meeting 3
Date: Apr 15th, 2020. 会议内容为 贡献分确定与进度汇报. Scrum 情况汇报 进度情况 组员 负责 昨日进度 后两日任务 CookieLau PM.后端 学习前后端分离技术的项 ...
- BUAA 软工 个人博客作业(一)
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业 我在这个课程的目标是 通过阅读<构建之法>大致了解软件工程 这个作业在哪 ...
- es7集群的搭建
es7集群的搭建 一.需求 二.前置条件 三.搭建步骤 1.下载es 2.创建 `es` 用户并给es目录授权 3.修改es的配置文件 4.es01目录下 elasticsearch.yml 的一个完 ...
- 表单编辑时el-form的validate方法执行无效,阻塞代码运行 - Element UI踩坑记录
今天在用element-ui写管理后台需求时,遇到一个奇怪的问题 一个正常带校验的表单,在新增列表数据时表单校验功能正常: 但是在新增之后再去编辑数据时,表单校验却失效了,甚至阻塞了后续的代码执行,控 ...
- Python触发异常
我们可以使用raise语句自己触发异常,raise语法格式如下: raise [Exception [, args [, traceback]]] 语句中 Exception 是异常的类型(例如,Na ...
- linux hostid与lmhostid
https://wangchujiang.com/linux-command/c/hostid.html hostid(host identifier) 显示当前主机的十六进制数字标识. 概要 hos ...
- JAVA笔记9__异常/throw关键字/自定义异常/受检与非受检异常、assert关键字/StringBuffer、StringBuilder/代码国际化、动态文本
/** * 异常:在程序中导致程序中断运行的一些指令 * 1.受检异常:编译期 * 2.非受检异常:运行期 * 异常处理过程分析: * 1.一旦产生异常,系统会自动产生一个异常类的实例化对象 * 2. ...
- Mybatis实现简单的CRUD(增删改查)原理及实例分析
Mybatis实现简单的CRUD(增删改查) 用到的数据库: CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user` ...
- SpringBoot热部署(7)
1.引入热部署依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId ...