About
Evrete is a standard-compliant, lightweight, open-source, and developer-friendly Java Rule Engine for goals of any size and complexity.
- Compliant with JSR 94
- JPMS ready
- MIT license
Developer-Friendly
The engine offers a smooth introduction for newcomers and an intuitive interface for developers familiar with business rule engines.
Lightweight
The engine is approximately 300k in size, compatible with Java 8+, and has no third-party dependencies.
Highly Customizable
The library can be effectively rewritten by providing custom Service Provider Interface (SPI) implementations.
Focus on DSL
Rule engines separate decision-making logic from its actual implementation. Often, rule authors may not need to have any IT or programming skills at all. They create rules in what is called a Domain-Specific Language (DSL), which can range from plain text files and Excel spreadsheets to any other custom format.
The library does not offer a specific rule language. Instead, the engine offers a versatile Rule Builder API that can be used "as-is" or integrated into the parsing of your custom DSL.
Functional Approach
You can express each condition or action using strings or functional interfaces.
String Literals
Each rule with literal conditions/actions is compiled into a separate Java class, with each literal becoming a static method handle, making them nearly as fast as if the logic were hand-coded.
Functional Interfaces
Seamless integration with your project's runtime environment. | |
Access to external resources, such as databases or external APIs. |
Flexible Type System
In Evrete, fact types and Java types do not necessarily coincide. Take XML, for example. In Java, all the XML facts will be of the same Java type, even though their logical types might differ.
Please refer to our Guides page for examples.
Seamlessly process any kinds of objects, including JSON and XML. | |
Define arbitrary fact fields using functional interfaces. | |
Simplify conditions by using custom-defined fields. |
Annotated Java Rules
The Annotated Java Rules (AJR) module transforms Java classes into rules, serving as a simple extension built upon the core engine API. It is ideally suited for teams where rules are authored by Java developers.
While serving as a showcase of Evrete's extensibility, the module will still receive support alongside the engine's core functionality.
Annotate class methods as rule actions. | |
Express conditions either as strings or through class methods. | |
Distribute your rules as Java sources, class files, or JAR archives. | |
Easily access and interact with your runtime environment from within your rules. |