顶层架构
顶层架构从外部关注引擎组件如何管理和运行,涉及规则中心/管理组件、引擎组件和业务中心。
- 管理组件/管理平台:包含规则配置、事实配置、运营看板等功能,提供
管理能力
。 - 引擎组件/引擎服务:提供
服务能力
,以分为计算引擎组件和决策引擎组件两大类。它们加载不同领域的配置信息(规则文件、事实结构等),实例化出各种专用引擎,比如销售规则引擎、筹金计算引擎、移动反诈引擎
等组件。 - 规则中心组件/统一规则中心:管理组件和引擎组件也打包为一个大的组件。
What
- 规则中心:对规则引擎组件进行集中式管理,提供统一的
规则配置、事实配置、运营看板
等服务,充当规则库
的角色。 - 引擎组件:以封装业务能力(Packaged Business Capability)的
决策型或计算型的规则引擎组件
型态分布式运行。- 决策引擎组件服务:抽象和封装的一般是
OLTP
系统中原来由Java代码
实现的的决策型业务规则。 - 计算引擎组件服务:抽象和封装的一般是
OLAP
系统中原来由SQL存储过程
实现的计算型业务规则。
- 决策引擎组件服务:抽象和封装的一般是
- 业务中心:充当
事件源
或事实库
的角色,为引擎组件提供完整的事实数据,驱动引擎组件处理各种类型领域事件
。
Why
随着业务的不断发展,业务中心,将遇到复杂易变
的业务场景,不论对于技术团队还是业务团队,认知上都存在一定的困难,而双方的心智模型
达成一致更是难上加难。
一个比较自然的办法,就是希望可以将其显化
,让业务团队和技术团队,都看得见、看得懂,易于达成共识。
引入业务规则引擎组件
的出发点,就是将复杂易变的业务逻辑
与相对明确和稳定的业务功能
分离出来,并显现
出来。
业务规则组件应当支持声明式/动态式
的方式来调用。声明式的描述,不需要关注执行过程,更容易理解;动态式的方式,支持即时编译(JIT)或脚本解释(不需要重新编译),可以更快响应业务变化。
业务规则引擎组件应当支持分布式运行
,以便于业务的快速响应和容量的扩展。
当然,分布式运行的业务规则引擎组件,也需要支持集中式管理
,以便于规则中心提供统一的规则配置、事实配置、运营看板等服务。
How
引擎服务
内部的主要组成部分有:
- 业务规则:一般是DRL或DMN文件,可由规则中心配置提供。
- 规则引擎:比如决策引擎drools或计算引擎spl,目前使用drools 8.44版本。
- 业务对象:定义事实包含哪些结构化信息,形式上是定义一个Java Bean。
- 取数引擎:根据调用方提供的少量事实索引,从事实库中查询出完整的事实数据(符合事实结构的定义),并提供给规则引擎。目前使用graphql api技术。
- 领域服务:定义应用接口信息,调用者可以访问的规则引擎的决策或计算服务。目前使用restful api技术。