关于 RuleGo
RuleGo 是一个基于 Go 语言的轻量级、高性能、可嵌入的组件化规则引擎框架,可用于编排业务逻辑。它面向边缘计算、IoT、数据集成和低代码等场景,支持嵌入应用或独立部署为中间件。
主要功能
- 01轻量级,无外部中间件依赖
- 02基于组件的规则链编排
- 03运行时热更新规则链,无需重启
- 04支持嵌套子规则链复用流程
- 05内置 JavaScript、HTTP、MQTT 等组件
- 06提供 Endpoint 模块进行数据接入
适用场景
- 01在边缘服务器上预处理和过滤设备数据
- 02根据消息类型将数据分发到 HTTP、MQTT 等系统
- 03在 IoT 场景中触发告警和设备联动
MCP 相关
README 提到大模型智能体场景和 MCP 客户端、MCP 服务相关标签,但正文未具体说明 MCP 的接入方式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
RuleGo
English| 简体中文
RuleGo 是一款基于 Go 语言构建的轻量、高性能、嵌入式、可编排的组件化规则引擎。
它可以帮助你快速构建松耦合、灵活的系统,实时响应并适应业务需求的变化。
RuleGo 还提供了大量可复用组件,支持对数据进行聚合、过滤、分发、转换、丰富处理,以及执行各种操作;还可以与各种协议和系统交互并集成。
它在低代码、业务代码编排、数据集成、工作流、大模型智能 Agent、边缘计算、自动化、物联网等场景中具有广泛的应用潜力。
特性
- 轻量级: 无需外部中间件依赖,可在低成本设备上高效处理和传递数据,适用于物联网边缘计算。
- 高性能: 得益于 Go 的高性能特性,RuleGo 还采用了协程池、对象池等技术。
- 双模式: 支持嵌入式和独立部署模式。支持将
RuleGo嵌入现有应用中,也可以将其作为中间件独立部署,提供规则引擎和编排服务。 - 组件化: 所有业务逻辑均基于组件构建,便于灵活配置和复用。
- 规则链: 灵活组合和复用不同组件,以实现高度定制且可扩展的业务流程。
- 工作流编排: 支持动态编排规则链组件,无需重启应用即可替换或添加业务逻辑。
- 易于扩展: 提供丰富灵活的扩展接口,便于实现自定义组件或引入第三方组件。
- 动态加载: 支持通过 Go 插件动态加载组件和扩展。
- 嵌套规则链: 支持嵌套子规则链以复用流程。
- 内置组件: 包含大量组件,例如
Message Type Switch、JavaScript Switch、JavaScript Filter、JavaScript Transformer、HTTP Push、MQTT Push、Send Email、Log Recording等。还可按需扩展其他组件。 - 上下文隔离机制: 可靠的上下文隔离机制,无需担心高并发情况下的数据流问题。
- AOP 机制: 无需修改规则链或节点的原有逻辑,即可为其执行过程添加额外行为,或直接替换其原有逻辑。
- 数据集成: 支持动态配置 Endpoint,例如
HTTP Endpoint、MQTT Endpoint、TCP/UDP Endpoint、UDP Endpoint、Kafka Endpoint、Schedule Endpoint等。
使用场景
RuleGo 是一款可编排的规则引擎,擅长解耦系统。
- 如果系统业务复杂、代码臃肿
- 如果业务场景高度定制或经常变化
- 如果系统需要对接大量第三方应用或协议
- 或者需要端到端的物联网解决方案
- 或者需要集中处理异构系统数据
- 或者想尝试在 Go 语言中进行热部署…… 那么 RuleGo 框架将是一个非常好的解决方案。
典型用例
- 边缘计算: 在边缘服务器上部署 RuleGo,以便在向云端上报数据之前进行预处理、筛选、聚合或计算。可通过规则链动态配置和修改数据处理规则及分发规则,无需重启系统。
- 物联网: 收集设备上报的数据,通过规则链进行规则判断,并触发一个或多个操作,例如发送电子邮件、告警,以及与其他设备或系统联动。
- 数据分发: 根据不同的消息类型,通过 HTTP、MQTT 或 gRPC 将数据分发到不同的系统。
- 应用集成: 将 RuleGo 用作粘合层,连接各种系统或协议,例如 SSH、webhook、Kafka、消息队列、数据库、ChatGPT 和第三方应用系统。
- 异构系统数据集中处理: 接收来自不同来源的数据(例如 MQTT、HTTP、WS、TCP/UDP 等),然后进行筛选、格式转换,并分发到数据库、业务系统或仪表板。
- 高度定制化业务: 解耦高度定制化或频繁变化的业务,并通过 RuleGo 规则链进行管理。业务需求变化时无需重启主程序。
- 复杂业务编排: 将业务封装为自定义组件,通过 RuleGo 编排并驱动这些自定义组件,并支持动态调整和替换业务逻辑。
- 微服务编排: 通过 RuleGo 编排并驱动微服务,或动态调用第三方服务来处理业务并返回结果。
- 业务代码与逻辑解耦: 例如用户积分计算系统、风控系统。
- 自动化: 例如 CI/CD 系统、流程自动化系统、营销自动化系统。
- 低代码: 例如低代码平台、iPaaS 系统、ETL、类似 LangFlow 的系统(对接大模型以提取用户意图,然后触发规则链与其他系统交互或处理业务)。
架构图
RuleGo 架构图
规则链运行示例图
安装
使用 go get 命令安装 RuleGo:
go get github.com/rulego/rulego
# or
go get gitee.com/rulego/rulego
使用
RuleGo 的使用非常简单,只需遵循以下 3 个步骤:
-
使用 JSON 定义规则链:
-
导入 RuleGo 包,并使用规则链定义创建规则引擎实例:
import "github.com/rulego/rulego"
//Load the rule chain definition file.
ruleFile := fs.LoadFile("chain_call_rest_api.json")
// Create a rule engine instance using the rule chain definition
ruleEngine, err := rulego.New("rule01", ruleFile)
- 将消息负载、消息类型和消息元数据交给规则引擎实例处理,然后规则引擎会根据规则链的定义处理消息:
// Define message metadata
metaData := types.NewMetadata()
metaData.PutValue("productType", "test01")
// Define message payload and message type
msg := types.NewMsg(0, "TELEMETRY_MSG", types.JSON, metaData, "{\"temperature\":35}")
// Hand over the message to the rule engine for processing
ruleEngine.OnMsg(msg)
无需重启应用即可实时更新规则链逻辑
规则引擎管理 API
- 动态更新规则链
// Dynamically update rule chain logic
err := ruleEngine.ReloadSelf(ruleFile)
// Update a node under the rule chain
ruleEngine.ReloadChild("node01", nodeFile)
// Get the rule chain definition
ruleEngine.DSL()
- 规则引擎实例管理:
// Load all rule chain definitions in a folder into the rule engine pool
rulego.Load("/rules", rulego.WithConfig(config))
// Get an already created rule engine instance by ID
ruleEngine, ok := rulego.Get("rule01")
// Delete an already created rule engine instance
rulego.Del("rule01")
- 配置:文档
// Create a default configuration
config := rulego.NewConfig()
// Debug node callback, the node configuration must be set to debugMode:true to trigger the call
// Both node entry and exit information will call this callback function
config.OnDebug = func (chainId,flowType string, nodeId string, msg types.RuleMsg, relationType string, err error) {
}
// Use the configuration
ruleEngine, err := rulego.New("rule01", []byte(ruleFile), rulego.WithConfig(config))
规则链定义 DSL
规则链节点组件
RuleGo 的核心特性是基于组件的架构,所有业务逻辑都封装在组件中,可以灵活配置和复用。目前,RuleGo 内置了大量常用组件。
- 标准组件
- rulego-components :文档
- rulego-components-ai
- rulego-components-ci
- rulego-components-iot
- rulego-components-etl
- rulego-components-discovery
- rulego-marketplace :动态组件和规则链市场
- 自定义节点组件示例 :文档
数据集成
RuleGo 提供 Endpoint 模块,用于异构系统的统一数据集成和处理。详情请参阅:Endpoint
输入端点组件
RuleGo-Server
我们提供了一个基于 RuleGo 的开箱即用自动化工作流平台:RuleGo-Server ,
以及一个前端可视化编辑器:RuleGo-Editor 。详情请参阅 server/README.md。
性能
RuleGo 在初始化期间就完成了大部分工作,因此运行规则链几乎不会给系统带来额外开销,资源消耗极低,特别适合在边缘服务器上运行。
此外,RuleGo 使用有向无环图(DAG)表示规则链,每条输入消息只需沿图中的路径处理,无需匹配所有规则,从而大幅提升消息处理和路由效率,同时节省系统资源。
性能测试用例:
Machine: Raspberry Pi 2 (900MHz Cortex-A7*4,1GB LPDDR2)
Data size: 260B
Rule chain: JS script filtering->JS complex transformation->HTTP push
Test results: 100 concurrent and 500 concurrent, memory consumption does not change much around 19M
生态系统
- RuleGo-Editor :规则链可视化编辑器
- RuleGo-Server :自动化工作流平台
- Tpclaw :AI Agent 平台的自主进化
- GFlow Engine :可嵌入式审批工作流引擎
- rulego-components :扩展组件库
- rulego-components-ai :声明式 Agent 框架
- rulego-components-ci :CI/CD 场景组件库
- rulego-components-iot :IoT 场景组件库
- rulego-components-etl :ETL 场景组件库
- rulego-components-discovery :服务发现和配置中心组件库
- rulego-marketplace :动态组件和规则链市场
贡献
欢迎以任何形式参与贡献,包括提交问题、建议、文档、测试或代码。贡献指南
许可证
RuleGo 使用 Apache 2.0 许可证,详情请参阅 LICENSE 文件。
联系我们
电子邮件:[email protected]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。