
Rulego
⛓️Rulego是一种轻巧,高性能,嵌入式,下一代组件编排规则引擎框架。
3 years
Works with Finder
1.1k
Github Watches
101
Github Forks
1.1k
Github Stars
RuleGo
English| 简体中文
Official Website | Docs | Contribution Guide

RuleGo
is a lightweight, high-performance, embedded, orchestrable component-based rule engine built on the Go language.
It can help you quickly build loosely coupled and flexible systems that can respond and adjust to changes in business requirements in real time.
RuleGo
also provides a large number of reusable components that support the aggregation, filtering, distribution, transformation, enrichment, and execution of various actions on data, and can also interact and integrate with various protocols and systems.
It has a wide range of application potential in low-code, business code orchestration, data integration, workflows, large model intelligent agents, edge computing, automation, IoT, and other scenarios.
Features
- Lightweight: No external middleware dependencies, efficient data processing and linkage on low-cost devices, suitable for IoT edge computing.
- High Performance: Thanks to Go's high-performance characteristics, RuleGo also employs technologies such as coroutine pools and object pools.
-
Dual Mode: Embedded and Standalone Deployment modes. Supports embedding
RuleGo
into existing applications. It can also be deployed independently as middleware, providing rule engine and orchestration services. - Componentized: All business logic is component-based, allowing flexible configuration and reuse.
- Rule Chains: Flexibly combine and reuse different components to achieve highly customized and scalable business processes.
- Workflow Orchestration: Supports dynamic orchestration of rule chain components, replacing or adding business logic without restarting the application.
- Easy Extension: Provides rich and flexible extension interfaces, making it easy to implement custom components or introduce third-party components.
- Dynamic Loading: Supports dynamic loading of components and extensions through Go plugins.
- Nested Rule Chains: Supports nesting of sub-rule chains to reuse processes.
-
Built-in Components: Includes a large number of components such as
Message Type Switch
,JavaScript Switch
,JavaScript Filter
,JavaScript Transformer
,HTTP Push
,MQTT Push
,Send Email
,Log Recording
, etc. Other components can be extended as needed. - Context Isolation Mechanism: Reliable context isolation mechanism, no need to worry about data streaming in high concurrency situations.
- AOP Mechanism: Allows adding extra behavior to the execution of rule chains or directly replacing the original logic of rule chains or nodes without modifying their original logic.
-
Data Integration: Allows dynamic configuration of Endpoints, such as
HTTP Endpoint
,MQTT Endpoint
,TCP/UDP Endpoint
,UDP Endpoint
,Kafka Endpoint
,Schedule Endpoint
, etc.
Use Cases
RuleGo
is an orchestrable rule engine that excels at decoupling your systems.
- If your system's business is complex and the code is bloated
- If your business scenarios are highly customized or frequently changing
- If your system needs to interface with a large number of third-party applications or protocols
- Or if you need an end-to-end IoT solution
- Or if you need centralized processing of heterogeneous system data
- Or if you want to try hot deployment in the Go language... Then the RuleGo framework will be a very good solution.
Typical Use Cases
- Edge Computing: Deploy RuleGo on edge servers to preprocess data, filter, aggregate, or compute before reporting to the cloud. Data processing rules and distribution rules can be dynamically configured and modified through rule chains without restarting the system.
- IoT: Collect device data reports, make rule judgments through rule chains, and trigger one or more actions, such as sending emails, alarms, and linking with other devices or systems.
- Data Distribution: Distribute data to different systems using HTTP, MQTT, or gRPC based on different message types.
- Application Integration: Use RuleGo as glue to connect various systems or protocols, such as SSH, webhook, Kafka, message queues, databases, ChatGPT, third-party application systems.
- Centralized Processing of Heterogeneous System Data: Receive data from different sources (such as MQTT, HTTP, WS, TCP/UDP, etc.), then filter, format convert, and distribute to databases, business systems, or dashboards.
- Highly Customized Business: Decouple highly customized or frequently changing business and manage it with RuleGo rule chains. Business requirements change without needing to restart the main program.
- Complex Business Orchestration: Encapsulate business into custom components, orchestrate and drive these custom components through RuleGo, and support dynamic adjustment and replacement of business logic.
- Microservice Orchestration: Orchestrate and drive microservices through RuleGo, or dynamically call third-party services to process business and return results.
- Decoupling of Business Code and Logic: For example, user points calculation systems, risk control systems.
- Automation: For example, CI/CD systems, process automation systems, marketing automation systems.
- Low Code: For example, low-code platforms, iPaaS systems, ETL, LangFlow-like systems (interfacing with large models to extract user intent, then triggering rule chains to interact with other systems or process business).
Architecture Diagram

RuleGo Architecture Diagram
Rule Chain Running Example Diagram

Installation
Install RuleGo
using the go get
command:
go get github.com/rulego/rulego
# or
go get gitee.com/rulego/rulego
Usage
RuleGo
is extremely simple to use. Just follow these 3 steps:
-
Define rule chains using JSON:
-
Import the RuleGo package and use the rule chain definition to create a rule engine instance:
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)
- Hand over the message payload, message type, and message metadata to the rule engine instance for processing, and then the rule engine will process the message according to the rule chain's definition:
// 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)
Real time update of rule chain logic without restarting the application
Rule Engine Management API
- Dynamically update rule chains
// 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()
- Rule Engine Instance Management:
// 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")
- Config:Documentation
// 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))
Rule Chain Definition DSL
Rule Chain Node Components
The core feature of RuleGo
is its component-based architecture, where all business logic is encapsulated in components that can be flexibly configured and reused. Currently,
RuleGo
has built-in a vast array of commonly used components.
- Standard Components
- rulego-components :Documentation
- rulego-components-ai
- rulego-components-ci
- rulego-components-iot
- rulego-components-etl
- rulego-marketplace :Dynamic component and rule chain marketplace
- Custom Node Component Example :Documentation
Data Integration
RuleGo
provides the Endpoint module for unified data integration and processing of heterogeneous systems. For details, refer to: Endpoint
Input Endpoint Components
RuleGo-Server
We have provided a ready-to-use automation workflow platform based on RuleGo
: RuleGo-Server ,
and a front-end visual editor: RuleGo-Editor .
Performance
RuleGo
completes most of its work during initialization, so running the rule chain almost doesn't add extra overhead to the system, and the resource consumption is extremely low, making it particularly suitable for running on edge servers.
Additionally, RuleGo uses Directed Acyclic Graph (DAG) to represent the rule chain, where each input message only needs to be processed along the path in the graph without matching all the rules, which greatly improves the efficiency of message processing and routing, and also saves system resources.
Performance test cases:
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
Ecosystem
- RuleGo-Editor : Rule chain visual editor
- RuleGo-Server : Automation workflow platform
- rulego-components : Extension component library
- rulego-components-ai : AI scenario component library
- rulego-components-ci : CI/CD scenario component library
- rulego-components-iot : IoT scenario component library
- rulego-components-etl : ETL scenario component library
- rulego-marketplace : Dynamic component and rule chain marketplace
Contribution
Any form of contribution is welcome, including submitting issues, suggestions, documentation, tests or code. Contribution Guide
License
RuleGo
uses Apache 2.0 license, please refer to LICENSE file for details.
Contact Us
Email: rulego@outlook.com
相关推荐
Reviews

user_ACwNHeaQ
Rulego is an exceptional tool for any MCP application enthusiast. Its user-friendly interface and robust functionality make it a top choice. The seamless integration capabilities and comprehensive rule management features streamline workflows and elevate productivity. Highly recommended for professionals looking to optimize their MCP application processes.

user_fRtM8Wkx
Rulego is an impressive tool for managing and automating complex rules. It provides a seamless user experience and helps streamline various processes with ease. The integration capabilities are top-notch, making it a valuable asset for both small and large scale applications. Highly recommend for anyone looking to implement efficient rule management in their systems!

user_g3oNsOnD
Rulego is an outstanding tool for creating and managing complex rule-based systems. As an MCP application enthusiast, I found it incredibly user-friendly and efficient. The interface is intuitive, and the functionality is robust, making it easy to implement and modify rules as needed. Highly recommended for anyone looking to streamline their processes!

user_ikj0wo7n
Rulego is an outstanding application that offers seamless rule management for MCP users. Its intuitive interface and robust features make it a must-have for anyone looking to streamline their workflow. The tool's efficiency in handling complex rules is quite impressive, and it integrates effortlessly into existing systems. Highly recommended for both beginners and advanced users!

user_hOJmEvsV
Rulego is an exceptional automation tool that's user-friendly and highly efficient. The well-designed interface makes it easy to set up rules and processes, boosting productivity significantly. Highly recommend to anyone looking to streamline their operations.

user_l6izOhor
Rulego has been a game changer in our application development process. The seamless integration and user-friendly interface make it easy to implement and manage complex rules without any hassle. Its efficiency and reliability are unmatched, saving us both time and effort. Highly recommend Rulego to anyone looking to streamline their workflow and enhance productivity.

user_4FZsBv2a
I've been using Rulego and it has significantly streamlined my workflow. The product is well-designed, intuitive, and user-friendly. The seamless integration and automation capabilities are top-notch, making my tasks much easier to manage. Highly recommend it for anyone looking to improve their efficiency!

user_Iqr99DUr
As a loyal MCP user, I am thoroughly impressed by Rulego! Its intuitive design and seamless integration make it an indispensable tool for my workflow. Rulego's user-friendly interface and robust feature set streamline my operations, boosting efficiency and productivity. I highly recommend it to anyone looking to enhance their management processes!

user_2E1sp9JC
Rulego is an incredibly intuitive and efficient tool for managing rules and processes. As a long-time MCP application user, I found Rulego stands out due to its user-friendly interface and powerful features. It simplifies complex tasks and improves productivity significantly. Highly recommend it to anyone in need of a reliable rules management solution!

user_RFYnUIiX
I've been using Rulego consistently and it has significantly streamlined my workflow. Its intuitive interface and robust feature set make it a standout tool in its category. Highly recommend for anyone looking to enhance productivity with ease!