* The current stable version is 1.3.0: [![Build Status](https://buildhive.cloudbees.com/job/benas/job/easy-rules/badge/icon)](https://buildhive.cloudbees.com/job/benas/job/easy-rules/)
* The current development version is 1.3.1-SNAPSHOT
You are welcome to contribute to the project with pull requests on GitHub.
You are welcome to contribute to the project with pull requests on GitHub.
@ -37,6 +48,11 @@ For any further question, you can use the [Gitter](https://gitter.im/benas/easy-
Thank you all for your contributions!
Thank you all for your contributions!
## Credits
Many thanks to [YourKit, LLC](https://www.yourkit.com/) for providing a free license of [YourKit Java Profiler](https://www.yourkit.com/java/profiler/index.jsp) to kindly support the development of Easy Rules.
Easy Rules core jar **_easyrules-core-${version}.jar_** will be generated in the target folder.
Easy Rules core jar **_easyrules-core-{{site.version}}.jar_** will be generated in the **_target_** folder.
## Use with maven
## Use with maven
Easy Rules is a single jar file with no dependencies. You have to simply add the jar **_easyrules-core-{{site.version}}.jar_** to your application's classpath.
Easy Rules is a single jar file with no dependencies. You have to add the jar **_easyrules-core-{{site.version}}.jar_** to your application's classpath.
Using maven, you should add the following dependency to your pom.xml :
If you use maven, you should add the following dependency to your **_pom.xml_** :
@ -14,7 +14,7 @@ Easy Rules is a simple yet powerful Java rules engine providing the following fe
* The ability to create composite rules from primitive ones
* The ability to create composite rules from primitive ones
* Dynamic rule configuration at runtime using JMX
* Dynamic rule configuration at runtime using JMX
In a very interesting [article](http://martinfowler.com/bliki/RulesEngine.html) about rules engines, [Martin Fowler](http://martinfowler.com/) says the following :
In a very interesting <ahref="http://martinfowler.com/bliki/RulesEngine.html"target="_blank">article</a> about rules engines, <ahref="http://martinfowler.com/"target="_blank">Martin Fowler</a> says:
>You can build a simple rules engine yourself. All you need is to create a bunch of objects with conditions and actions, store them in a collection, and run through them to evaluate the conditions and execute the actions.
>You can build a simple rules engine yourself. All you need is to create a bunch of objects with conditions and actions, store them in a collection, and run through them to evaluate the conditions and execute the actions.
<p>This release added the following features:</p><p></p>
<ul>
<li>Moved JMX support to a separate module so that the core engine can be used in both Java and Android applications (<ahref="https://github.com/benas/easy-rules/pull/5"target="_blank">PR #5</a>).</li>
<li>Fixed <ahref="https://github.com/benas/easy-rules/issues/6"target="_blank">issue #6</a>: Can't register multiple rules with the same priority to DefaultRulesEngine</li>
<li>Refactored tests to use <ahref="http://mockito.org/"target="_blank">Mockito</a> and <ahref="http://assertj.org"target="_blank">AssertJ</a></li>
<p>Easy Rules is open source, hosted on <atarget="_blank"href="https://github.com/benas/easy-rules">GitHub</a> and is released under the <atarget="_blank"href="http://opensource.org/licenses/mit-license.php/">MIT License</a>.</p>
<p>Easy Rules is open source, hosted on <atarget="_blank"href="https://github.com/benas/easy-rules">GitHub</a> and is released under the terms of the<atarget="_blank"href="http://opensource.org/licenses/mit-license.php/">MIT License</a>.</p>
By default, rule description and priority are exposed as JMX manageable attributes.
By default, rule description and priority are exposed as JMX manageable attributes.
If you need to expose more specific attributes, you can extend the `Rule` interface and add getters and setters of your manageable attributes.
If you need to expose more specific attributes, you can extend the `JMXRule` interface and add getters and setters of your manageable attributes.
An example of using dynamic rule reconfiguration at runtime is provided in the [online shop tutorial]({{site.url}}/tutorials/dynamic-configuration.html).
An example of using dynamic rule reconfiguration at runtime is provided in the [online shop tutorial]({{site.url}}/tutorials/dynamic-configuration.html).