2020년 12월 현재 Easy Rules는 유지 관리 모드에 있습니다. 이는 지금부터 버그 수정만 해결된다는 의미입니다. 버전 4.1.x가 유일하게 지원되는 버전입니다. 최대한 빠른 시일 내에 이 버전으로 업그레이드하는 것을 고려해 보십시오.
Easy Rules는 "규칙 엔진을 사용해야 할까요?" 라는 기사에서 영감을 받은 Java 규칙 엔진입니다. 마틴 파울러(Martin Fowler)의 글에서 마틴은 이렇게 말합니다.
간단한 규칙 엔진을 직접 구축할 수 있습니다. 조건과 작업이 포함된 여러 개체를 만들고 컬렉션에 저장한 다음 실행하여 조건을 평가하고 작업을 실행하기만 하면 됩니다.
이것이 바로 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의 안녕하세요 세계입니다. Wiki에서 Shop, Airco 또는 WebApp 튜토리얼과 같은 다른 예를 찾을 수 있습니다.
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.