洞察的镜筒| 青训营笔记

80 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天第一次接触到搜索引擎的编写,有点不知所谓,于是在网上归纳了一些基础干货,希望能对相关人员有所帮助。

  • 规则引擎: 全称为 业务规则管理系统 ,英文名为 BRMS(即 Business Rule Management System)。规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块(注:领域特定语言)编写业务决策(业务规则)。由用户或开发者在需要时进行配置、管理。 需要注意的是规则引擎并不是一个具体的技术框架,而是指的一类系统,即业务规则管理系统。 规则引擎实现了将业务决策从应用程序代码中分离出来,接收数据输入,解释业务规则,并根据业务规则做出业务决策。规则引擎其实就是一个输入输出平台,通过接受动态数据流入根据内部的规则得出决策结果的处理器,以抽离业务逻辑保证其独立维护和动态更新。

  • 规则引擎消息可以被被序列化并有着规定的数据结构同时可以表示系统中的各种消息:

设备遥测、属性更新或RPC调用;

实体生命周期事件: created、updated、deleted、assigned、unassigned、属性更新;

设备状态事件: connected, disconnected, active, inactive, etc;

其他事件。

  • 规则引擎消息包含以下信息:

消息ID:基于时间的通用唯一标识符;

消息发起者:Device,Asset或其他Entity标识符;

消息类型:遥测或不活动的事件等;

消息负载:消息payload的JSON字符串;

元数据:键值对的列表以及与消息有关的其他数据.

  • 规则引擎的功能

由于规则引擎是软件组件,所以只有开发人员才能够通过程序接口的方式来使用和控制它,规则引擎的程序接口至少包含以下几种API:

加载和卸载规则集的API;

数据操作的API;

引擎执行的API。

开发人员在程序中使用规则引擎基本遵循以下5个典型的步骤:

创建规则引擎对象;

向引擎中加载规则集或更换规则集;

向引擎提交需要被规则集处理的数据对象集合;

命令引擎执行;

导出引擎执行结果,从引擎中撤出处理过的数据。

使用了规则引擎之后,许多涉及业务逻辑的程序代码基本被这五个典型步骤所取代。一个开放的业务规则引擎应该可以”嵌入”在应用程序的任何位置,不同位置的规则引擎可以使用不同的规则集,用于处理不同的数据对象。

此外,对使用引擎的数量没有限制。