【java规则引擎】简单规则的rete网络示意图
2024-09-05 00:52:34
一个Fact通过Session添加到规则网络中,如何进行规则匹配的大致过程如下
(1)通过根结点对象从EntryPointNode的Map集合中找到相应的EntryPointNode对象
(2)EntryPointNode对象有一个ObjectTypeNode的Map集合,把fact的class转化成ClassObjectType,从该集合中找到ObjectTypeNode
(3)OjectTypeNode对象的sink属性引用着这个fact事实的规则网络
(4)从sink属性中的链表中拿出一个alphaNode进行匹配,递归遍历所有alphaNode的子节点(sink属性),根据alphaNode中的条件对Fact数据进行比较。
==>(向下(子节点)是试图完整匹配一条规则),如果向下有不匹配的,表示该规则不符合当前fact,退出递归,开始向右匹配。
==>(向右(nextRightTupleSinkNode属性)开始试图匹配另一条规则)。
===>向下(当前AlphaNode子节点代表的规则的所有条件模式)匹配,如果所有的子节点alphaNode中隐藏的条件都符合,则完全匹配一条规则,形成议程加入冲突集合,待匹配完所有的规则,再根据规则的优先级执行匹配上的规则的结果部分,更改Fact的数据。
===>向右(进行另一个规则的匹配),如果所有的子节点alphaNode中隐藏的条件都符合,则完全匹配一条规则,形成议程加入冲突集合,待匹配完所有的规则,再根据规则的优先级执行匹配上的规则的结果部分,更改Fact的数据。
最新文章
- vue.js 接收url参数
- ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理
- RDLC 设置标题每页显示
- JS绑定JavaScript事件
- [你必须知道的NOSQL系列]专题二:Redis快速入门
- mongodb备忘
- archlinux 安装mysql-workbench
- Eclipse提示Tomcat miss丢失bug:The Tomcat server configuration at \Servers\Tomcat v5.5 Server at localhost-config is missing.
- cocos2dx2.2.2登录场景中Checkbox选择框的实现
- Asp.net弹出层并且有遮罩层
- Codeforces Round #327 (Div. 2) E. Three States
- nginx---reference
- USACO月赛数据
- .NET 4 并行(多核)编程系列之三 从Task的取消
- Python中fileinput模块使用
- python之字符串
- php下redis的安装教程
- Java | 原来 try 还可以这样用啊?!
- 用Laravel Sms实现 laravel短信验证码的发送
- Java 11新功能抢先了解