2020 年 12 月現在、Easy Rules はメンテナンス モードです。これは、今後はバグ修正のみが対処されることを意味します。サポートされているバージョンはバージョン 4.1.x のみです。できるだけ早くこのバージョンへのアップグレードをご検討ください。
Easy Rules は、「ルール エンジンを使用する必要がありますか?」という記事からインスピレーションを得た Java ルール エンジンです。マーティン・ファウラーの言葉でマーティンは次のように述べています。
簡単なルール エンジンを自分で構築できます。必要なのは、条件とアクションを含む多数のオブジェクトを作成し、それらをコレクションに保存し、それらを実行して条件を評価し、アクションを実行することだけです。
これはまさに Easy Rules の機能であり、条件とアクションを含むルールを作成するためのRule
抽象化と、一連のルールを実行して条件を評価し、アクションを実行するRulesEngine
API を提供します。
@ Rule ( name = "weather rule" , description = "if it rains then take an umbrella" )
public class WeatherRule {
@ Condition
public boolean itRains ( @ Fact ( "rain" ) boolean rain ) {
return rain ;
}
@ Action
public void takeAnUmbrella () {
System . out . println ( "It rains, take an umbrella!" );
}
}
Rule weatherRule = new RuleBuilder ()
. name ( "weather rule" )
. description ( "if it rains then take an umbrella" )
. when ( facts -> facts . get ( "rain" ). equals ( true ))
. then ( facts -> System . out . println ( "It rains, take an umbrella!" ))
. build ();
Rule weatherRule = new MVELRule ()
. name ( "weather rule" )
. description ( "if it rains then take an umbrella" )
. when ( "rain == true" )
. then ( "System.out.println( " It rains, take an umbrella! " );" );
次のweather-rule.yml
サンプル ファイルのようになります。
name : " weather rule "
description : " if it rains then take an umbrella "
condition : " rain == true "
actions :
- " System.out.println( " It rains, take an umbrella! " ); "
MVELRuleFactory ruleFactory = new MVELRuleFactory ( new YamlRuleDefinitionReader ());
Rule weatherRule = ruleFactory . createRule ( new FileReader ( "weather-rule.yml" ));
public class Test {
public static void main ( String [] args ) {
// define facts
Facts facts = new Facts ();
facts . put ( "rain" , true );
// define rules
Rule weatherRule = ...
Rules rules = new Rules ();
rules . register ( weatherRule );
// fire rules on known facts
RulesEngine rulesEngine = new DefaultRulesEngine ();
rulesEngine . fire ( rules , facts );
}
}
これは Easy Rules の Hello World です。 Shop、Airco、WebApp チュートリアルなどの他の例も Wiki で見つけることができます。
GitHub のプル リクエストでプロジェクトに貢献していただければ幸いです。 Easy Rules はメンテナンス モードであることに注意してください。つまり、バグ修正のプル リクエストのみが考慮されます。
バグを見つけたと思われる場合、または質問がある場合は、問題トラッカーを使用してください。
ご協力いただきありがとうございました!
Easy Rules の開発をサポートするために YourKit Java Profiler の無料ライセンスを提供してくださった YourKit, LLC に感謝します。
Easy Rules は、MIT ライセンスの条件に基づいてリリースされます。
The MIT License (MIT)
Copyright (c) 2021 Mahmoud Ben Hassine ([email protected])
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.