Drools 8规则引擎:核心技术与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 Drools规则引擎家族

上面介绍了市面上的一些主流规则引擎,后续章节便主要围绕Drools规则引擎来展开。在进入实战章节之前,先从整体上介绍Drools规则引擎。

Drools系列自6.0版本以后便引入了一个概念——KIE(Knowledge Is Everything,知识就是一切),它是JBoss的一组项目的总称,这个名字渗透到了GitHub源代码和Maven pom中。随后KIE也被用于统一构建、部署和使用这类系统的共享操作中。在后续Drools的使用过程中,大家会发现实现的上层接口基本上都是以KIE为前缀或在kie包下的。

Drools 8版本下KIE系列项目的结构图如图1-4所示。

图1-4 KIE系列项目的结构图

从图1-4中可以整体看到KIE所包含的项目组件以及Drools在其中的位置。在Drools 8之前,Drools、Drools-WB和KIE-WB是学习Drools的重点。但在Drools 8中,Drools-WB和KIE-WB已经退役,随之而来的是将相应的功能部署到Kogito(云原生组件)当中。

下面简单介绍图1-4中涉及的组件及其功能。

Drools-WB和KIE-WB:Drools、jBPM等提供了可视化资源部署、管理平台,通过该平台运营人员可进行规则的创建、编辑、发布等操作。鉴于在Drools 8版本中,Drools-WB和KIE-WB已经不再是Drools的组件,它们在低版本中依旧可用,因此对这部分的功能和使用将在本书的附录中进行介绍。

Kogito:一种开源的端到端业务流程自动化(BPA)技术,用于在现代容器平台上开发、部署和执行流程与规则的云原生应用。Kogito包含多个组件的支持,比如Drools、jBPM、OptaPlanner、UI建模工具等。Kogito针对混合云环境进行了优化,历经实战检验,可以使开发人员灵活地在其特定领域的服务上构建云原生应用,为业务流程管理(BPM)提供灵活的开源解决方案。

OptaPlanner:属于kiegroup的组别,目前已经是一个独立的项目了。它是一个基于Java的轻量级、可嵌入的规划调度引擎。比如,可以优化车辆路径规划问题、雇员排班问题、云计算资源调度问题、任务分配问题等商业资源规划的问题。值得注意的是,OptaPlanner在使用约束描述和收益函数计算时,以Drools作为工具为佳。

UberFire:一个功能类似Eclipse的全新的基础工作台项目,带有插件中的面板和页面,独立于Drools和jBPM。任何人都可以将它作为构建工作台的基础工具,它也是构建整个JBoss控制台和工作台的工具,Business Central Workbench便是通过UberFire和Guvnor插件构建的。

jBPM(Java Business Process Management,业务流程管理):一款开源的业务流程管理系统,它覆盖了业务流程管理、工作流管理、服务协议等领域。其原开发团队离开JBoss之后,推出了功能类似的Activity框架。在图1-4中,因KIE-WB已经完美地整合了工作流,jBPM-WB对于KIE-WB便是多余的,因此显示为灰色。

关于Drools规则引擎的兄弟项目,几乎每一个都属于相对独立的领域,感兴趣的读者可以了解一下,我在本书中不再进行更深层次的介绍。