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. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...
随机推荐
- 搭建Mac+Java+appium+IOS真机自动化环境
一.安装前环境准备 1.确保电脑已经有homebrew(包管理器) 下载链接[https://brew.sh/] 2.通过 brew 安装node.js brew install node 安装 ...
- iOS能否自动扫描周边wifi信息并通过密码连接
能否获取系统wifi列表信息 不能,只能获取用户当前连接的wifi信息 https://developer.apple.com/forums/thread/112177 https://develop ...
- HCNP Routing&Switching之BGP邻居建立条件、优化和认证
前文我们了解了BGP相关概念.AS相关概念以及BGP邻居类型.基础配置等,相关回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15370838.html:今天我们 ...
- 【Spring】IoC容器 - Spring Bean作用域Scope(含SpringCloud中的RefreshScope )
前言 上一章学习了[依赖来源],本章主要讨论SpringBean的作用域,我们这里讨论的Bean的作用域,很大程度都是默认只讨论依赖来源为[Spring BeanDefinition]的作用域,因为在 ...
- Python使用阿里云OSS服务
Python使用阿里云OSS服务 前言: 在远程搭建了一个平台,通过改远程平台进行数据的采集,需要将数据内容传送至本地进行处理:为了实现该功能,考虑了阿里云的OSS对象储存的服务. 40G包月只需1元 ...
- elasticsearch的dsl查询
测试es的dsl查询,准备数据,在插入数据的时候,如果index.type.mapping都没有,es会自动创建 一.数据的准备 curl -XPOST "http://192.168.99 ...
- Zabbix 5.0:监控阿里云RDS
Blog:博客园 个人 由于近期压测,需要频繁登录阿里云查看RDS监控,每次登录查看监控步骤较为繁琐,故将监控接入到zabbix. 概述 由于阿里云已做了RDS的监控,我们只需要通过阿里云SDK把这些 ...
- STL模板
目录 栈stack 队列queue 列表List 集合set 映射map 多重映射multimap 对pair 元组tuple 容器containers 算法algorithms 仿函数/函数对象fu ...
- 在Vue前端界面中,几种数据表格的展示处理,以及表格编辑录入处理操作。
在Vue前端项目中,我这里主要是基于Vue+Element的开发,大多数情况下,我们利用Element的表格组件就可以满足大多数情况的要求,本篇随笔针对表格的展示和编辑处理,综合性的介绍几款表格组件的 ...
- IDA*、剪枝、较难搜索、扫描——DNA sequence HDU - 1560
万恶之源 翻译 题意就是给出N个DNA序列,要求出一个包含这n个序列的最短序列是多长 这是一道搜索题,为什么呢?从样例可以感受到,我们应该从左往右"扫描",从n个DNA序列中取出某 ...