规则链概述
规则链是 RuleGo 的核心概念,它是由多个规则节点组成的有向无环图,每个规则节点都是一个组件,可以实现不同的业务逻辑,节点与节点通过关系类型(relation type)进行连接。规则链可以动态配置和修改,支持嵌套和编排,实现复杂的业务流程。
# 核心概念
规则链主要包含以下几个核心概念:
规则链: 是规则节点及其关系的逻辑组合,它定义了一个完整的业务流程。规则链可以接收来自不同数据源的消息,并根据规则节点的类型和配置,将消息发送到下一个或多个连接的规则节点。规则链支持嵌套和编排,可以构建复杂和灵活的业务逻辑。
消息: 传入规则链的输入和输出数据或者事件,它允许被节点组件转换、过滤和分发。消息由三个主要部分组成:
- 消息负荷(msg):可以是任意类型的数据内容
- 元数据(metadata):包含额外的上下文信息,如目标设备信息等
- 消息类型(msgType):用于区分不同的事件类型
规则节点: 规则链的基本组件,是实现了特定业务逻辑的处理单元。规则节点可以:
- 对传入的消息进行过滤、转换、数据丰富
- 执行具体的业务动作
- 通过配置参数来调整其行为和输出
Relation Type: 节点之间的连接关系类型,决定消息在规则链中的路由路径。不同类型的组件提供不同的关系类型:
- Filter类组件:True/False/Failure
- Action类组件:Success/Failure
- 路由类组件:支持通过脚本动态控制路由或根据msgType实现复杂的路由逻辑
# RuleGo 规则链优势
相对于传统规则引擎,RuleGo 采用了基于规则链的可编排组件式规则引擎模式,具有以下显著优势:
简单性
- 使用 JSON 配置规则链,无需专门的规则语言或 DSL
- 使用常见的数据结构和语法
- 易于定义和修改规则链
高效性
- 采用有向无环图表示规则链
- 消息按图路径单向处理,无需匹配所有规则
- 显著提升处理效率,节省资源
灵活性
- 支持动态配置和热更新规则链
- 无需重启应用即可更新规则
- 适应快速变化的业务需求
# 规则链运行模式
RuleGo支持多种灵活的规则链运行模式:
- 串行模式
- 消息按顺序依次经过多个节点处理
- 适合有明确处理顺序的场景

- 并行模式
- 消息同时发送给多个节点并行处理
- 适合需要同时处理的独立任务

- 并行+串行混合模式
- 结合并行和串行处理的优势
- 通过子规则链实现复杂流程

- 混合模式
- 灵活组合多种处理模式
- 满足复杂的业务场景需求

- 嵌套子规则链模式
- 支持规则链的嵌套复用
- 提高规则链的可维护性和重用性

- 多层嵌套模式
- 支持多层级的规则链嵌套
- 实现更复杂的业务流程编排

在 GitHub 上编辑此页 (opens new window)
上次更新: 2025/01/08, 11:49:13