# j-easy/easy-rules

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/j-easy-easy-rules).**

5,246 stars · 1,102 forks · Java · MIT

## Links

- GitHub: https://github.com/j-easy/easy-rules
- Homepage: https://github.com/j-easy/easy-rules/wiki
- awesome-repositories: https://awesome-repositories.com/repository/j-easy-easy-rules.md

## Description

Easy-rules is a Java business rules engine designed for defining and evaluating conditional logic and actions. It serves as a framework for organizing simple logic units into complex hierarchies of composite rules and acting as an iterative rule processor.

The system functions as an expression language rules engine, allowing rule conditions and actions to be defined via dynamic expressions rather than static compiled code. This enables the configuration of business logic that can change application behavior without requiring source code recompilation.

The engine supports fact-based matching to trigger actions when conditions align, utilizing both priority-based sequential processing and iterative execution loops that fire rules until a stable state is reached. It manages these processes through a condition-action pattern and a composite rule hierarchy.

## Tags

### Part of an Awesome List

- [Business Rules Engine](https://awesome-repositories.com/f/awesome-lists/ai/business-rules-engine.md) — Provides a full engine for defining, managing, and executing conditional business logic and actions. ([source](https://github.com/j-easy/easy-rules/wiki))
- [General Purpose Orchestration](https://awesome-repositories.com/f/awesome-lists/devtools/general-purpose-orchestration.md) — Simple rules engine for Java-based logic execution.

### Business & Productivity Software

- [Java Frameworks](https://awesome-repositories.com/f/business-productivity-software/business-rule-engines/java-frameworks.md) — Provides a complete framework for defining and evaluating conditional business logic and actions within Java applications.
- [Business Rule Engines](https://awesome-repositories.com/f/business-productivity-software/business-rule-engines.md) — Allows users to define operational logic using annotations, fluent interfaces, or external descriptors. ([source](https://cdn.jsdelivr.net/gh/j-easy/easy-rules@main/README.md))
- [Business Workflow Automation](https://awesome-repositories.com/f/business-productivity-software/business-workflow-automation.md) — Organizes nested and composite rules to manage layered logic hierarchies and sequential execution paths.

### Development Tools & Productivity

- [Fact-Based Rule Triggering](https://awesome-repositories.com/f/development-tools-productivity/fact-based-rule-triggering.md) — Compares registered rules against collections of data to trigger associated actions when conditions align. ([source](https://cdn.jsdelivr.net/gh/j-easy/easy-rules@main/README.md))

### Programming Languages & Runtimes

- [Dynamic Expression Languages](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-expression-languages.md) — Allows rule conditions and actions to be defined via a dynamic expression language for runtime evaluation.

### Security & Cryptography

- [Business Rule Composition](https://awesome-repositories.com/f/security-cryptography/identity-access-management/access-control/custom-access-rules/authorization-rule-composition/business-rule-composition.md) — Enables combining multiple simple rules into composite structures to organize complex business logic hierarchies. ([source](https://github.com/j-easy/easy-rules/wiki))
- [Complex Business Rule Composition](https://awesome-repositories.com/f/security-cryptography/identity-access-management/access-control/custom-access-rules/authorization-rule-composition/complex-business-rule-composition.md) — Combines multiple simple rules into composite structures to create sophisticated and layered business logic. ([source](https://cdn.jsdelivr.net/gh/j-easy/easy-rules@main/README.md))

### Software Engineering & Architecture

- [Composite Rule Hierarchies](https://awesome-repositories.com/f/software-engineering-architecture/composite-rule-hierarchies.md) — Implements a hierarchy for grouping simple rules into nested composite structures to organize complex business logic.
- [Composite Rules Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/composite-rules-frameworks.md) — Acts as a system for organizing simple logic units into complex hierarchies of grouped composite rules.
- [Condition-Action Patterns](https://awesome-repositories.com/f/software-engineering-architecture/condition-action-patterns.md) — Provides a condition-action pattern to trigger specific executable behaviors when a set of runtime facts is met.
- [Configuration-Driven Logic](https://awesome-repositories.com/f/software-engineering-architecture/configuration-driven-logic.md) — Defines business rules using expression languages to change application behavior without requiring source code recompilation.
- [Expression Languages](https://awesome-repositories.com/f/software-engineering-architecture/expression-languages.md) — Provides an engine for parsing and executing custom business logic defined as strings at runtime.
- [Fact-Based Matching](https://awesome-repositories.com/f/software-engineering-architecture/fact-based-matching.md) — Matches registered rule predicates against runtime data to determine which actions should be executed.
- [Java-Based Rule Evaluation](https://awesome-repositories.com/f/software-engineering-architecture/java-based-rule-evaluation.md) — Checks data against a set of predefined conditions to trigger specific actions within a Java application.
- [Rule Execution Engines](https://awesome-repositories.com/f/software-engineering-architecture/rule-configuration-engines/rule-execution-engines.md) — Implements an execution engine that repeatedly evaluates facts against rules until a stable state is reached.
- [Iterative Fact Processing](https://awesome-repositories.com/f/software-engineering-architecture/iterative-fact-processing.md) — Evaluates a set of data repeatedly until all applicable rules have been fired and no further conditions are met.
- [Iterative Rule Evaluation](https://awesome-repositories.com/f/software-engineering-architecture/iterative-rule-evaluation.md) — Evaluates and fires applicable rules repeatedly until no more conditions are met, allowing actions to trigger further executions. ([source](https://github.com/j-easy/easy-rules/wiki/air-conditioning))
- [Iterative Rule Execution](https://awesome-repositories.com/f/software-engineering-architecture/iterative-rule-execution.md) — Implements iterative execution loops that fire applicable rules repeatedly until a stable state is reached.
- [Priority-Based Rule Processing](https://awesome-repositories.com/f/software-engineering-architecture/priority-based-rule-processing.md) — Executes registered rules in a specific order based on assigned weights or priorities.
- [Sequential Rule Execution](https://awesome-repositories.com/f/software-engineering-architecture/sequential-rule-execution.md) — Runs a set of registered rules against facts and triggers actions based on priority and condition matches. ([source](https://github.com/j-easy/easy-rules/wiki/shop))
