-
规则引擎-02-easy rules
easy rules
easy rules 是一个受 Martin Fowler 文章《我应该使用规则引擎吗?》启发的 Java 规则引擎。在这篇文章中,Martin 表示:
你可以自己构建一个简单的规则引擎。你所需要做的就是创建一堆带有条件和动作的对象,将它们存储在一个集合中,并运行它们来评估条件并执行动作。
这正是Easy Rules所做的,它提供Rule抽象以创建具有条件...
2020-05-26 08:05:35 |
Engine
-
规则引擎-01-drools 框架入门
Drools
Drools 是一个针对 Java 的规则引擎、DMN 引擎和复杂事件处理(CEP)引擎。
适用于Java™和JVM平台的开源规则引擎,DMN引擎和复杂事件处理(CEP)引擎。
Drools是一个业务规则管理系统,具有基于前向链接和后向链接推理的规则引擎,可以快速,可靠地评估业务规则和进行复杂的事件处理。
规则引擎还是创建专家系统的基本构建块,在人工智能中,该专家系统是...
2020-05-26 08:05:35 |
Engine
-
规则引擎-00-入门
规则引擎
规则引擎起源于基于规则的专家系统,而基于规则的专家系统又是专家系统的其中一个分支。
专家系统属于人工智能的范畴,它模仿人类的推理方式,使用试探性的方法进行推理,并使用人类能理解的术语解释和证明它的推理结论。
利用它就可以在应用系统中分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时可以动态地管理和修改,从而为企...
2020-05-26 08:05:35 |
Engine
-
规则引擎-00-入门 聊一聊
chat
Q: 详细介绍一下 java 规则引擎
Java规则引擎是一种软件设计模式,它允许开发者将业务决策从应用程序代码中分离出来,并通过一组可配置的规则来实现业务逻辑。
这样做的好处是提高了业务逻辑的可维护性和可扩展性,因为规则可以不修改代码的情况下动态地更改。
下面将详细介绍Java规则引擎的概念、特点、使用场景以及一个流行的Java规则引擎库——Easy Rules。
概念...
2020-05-26 08:05:35 |
Engine
-
配置增量加载设计方案
背景
我们经常需要去实现各种配置的加载,有时候需要处理一些变化。
最简单的策略就是定期全量加载,不过如果配置较多,可能会产生 GC,对实时链路影响较大。
trade-off
配置的定期加载是【频率】与【耗时】之间的一个权衡。
实际业务中,我们都希望配置变更,立刻生效。但是实现上有些困难。
可行的方案主要有:
(1)mq 通知,内存同步更新
(2)存储到 redis 等共享的三...
2020-05-26 08:05:35 |
Design
-
java 表达式引擎概览-07-google aviator regex 正则表达式提取
目标
google aviator regex 正则表达式提取
官方文档
AviatorScript 中正则表达式也是一等公民,作为基本类型来支持, / 括起来的正则表达式就是一个 java.util.Pattern 实例,例如 /\d+/ 表示 1 个或者多个数字,正则表达式语法和 java 完全相同,但是对于需要转义的字符不需要连续的反斜杠 \\ ,只要一个 \ 即可,比如我...
2020-05-26 07:11:16 |
Engine
-
java 表达式引擎概览-06表达式引擎引擎页面样式优化
目标
让页面样式更加现代化。
STEP7: 样式调整
需求
下面的页面样式比较原始,帮我的 css 样式进行调整美化,让其看起来更加现代化+扁平化。
要求按钮尽量加上 icon,使用 emoji 也行,表达对应的含义。比如新增/删除/重置
按钮的颜色,新增类型用绿色系,删除用红色系,重置警告橙色系等等。
原始的页面代码:
<!D...
2020-05-26 07:11:16 |
Engine
-
java 表达式引擎概览-05-google Aviator 表达式引擎布尔条件验证与规则引擎
最佳实践
https://www.yuque.com/boyan-avfmj/aviatorscript/ou23gy
STEP1: Aviator 执行表达式引擎==》规则引擎
最简单的例子
因为布尔值只是对应的 boolean,每一个对应一个条件。
所以最后的结果只是一个类似于 (c1 && c2) || (c3 || c4) 的表达式。
public sta...
2020-05-26 07:11:16 |
Engine