与天地兮比寿,与日月兮齐光。这篇文章主要讲述规则引擎-框架设计思想相关的知识,希望能为你提供帮助。
1. 节点结构前面的ice介绍中提到用节点将业务拆解,并使用关系节点将业务连接起来并控制业务流转。
结构解释:
1.BaseNode 所有节点的基类,存放着节点的共性
2.BaseRelation 所有关系节点的基类,children是关系节点下的所有子节点,具体的有介绍中所说的AndRelation,AnyRelation,AllRelation ,NoneRelation ,TrueRelation
3.BaseLeafFlow 叶子节点,所有过滤性条件的基类,供具体业务继承并实现其doFlow方法,返回true和false代表是否满足/是否通过
4.BaseLeafResult 叶子节点,所有结果性质的类的基类,供具体业务继承并实现其doResult方法,返回true和false代表结果是否被发放,如发放奖励等
5.BaseLeafNone 叶子节点,所有仅数据组装/数据加载等不干预流程的类的基类,供具体业务继承并实现其doNone方法,无返回值,数据的组装和加载后放入上下文中,供后续流程使用
2. 基础流程
上图为一个以往版本的解释,现已大部分优化,但原理一致
1.业务通过IcePack数据包进入ice执行,需指定要执行的iceId/scene(场景)
2.IcePack组装成IceContext在ice中流转
3.依托观察者模式,将数据库/其他地方配置的完整的ice树形结构,经过组装形成对应执行的handler,在特定scene/iceId下触发并执行handle方法
3. Client设计
1.各自app在项目启动时通过Mq拉取最新配置,并组装到本地缓存
2.当server发现某app下有更新,便推送更新到具体业务并更新ice缓存
3.server端实现可视化配置,操作树与更新树形结构配置等
4. 交流开源代码地址:??https://github.com/zjn-zjn/ice??
使用文档地址:??http://waitmoon.com/docs??(文档底部有微信讨论群)
感兴趣的小伙伴欢迎交流~~
【规则引擎-框架设计思想】
推荐阅读
- centos下安装go环境两种方法
- #私藏项目实操分享# SAP 电商云 Spartacus UI 的交货模式 Delivery Mode 设计
- 识别哪个服务或驱动程序在系统启动期间失败的 5 种方法
- 认识 Express 的 res.send() 和 res.end()
- Session与Token认证机制 前后端分离下如何登录#yyds干货盘点#
- 教大家进行 Springboot 中项目的属性配置(详细)
- 学了那么多NoSQL数据库!NoSQL究竟是啥()
- Caffeine缓存 最快缓存 内存缓存
- 这样使用 IDEA ,效率提升10倍!| IDEA 高效使用指南