easy rules 사용 [1] jeasy API(Controller 추가 있음)

Rule Engine

easy rules를 알기 전에, Rule Engine에 대하여 먼저 알아야 한다. 필자는 rule engine에 대하여 수많은 조건문의 집합체라고도 생각한다. 특정 값에 대하여 유동적인 까닭으로 인해 동적인 결과 값을 도출해내야 할 때, Controller 혹은 Service 단에서 조건문을 잔뜩 생성하기도 한다. (필자는 spring framework 기반의 개발 환경에서 근무) 그러한 조건문들에 대하여 Common Module로 구현하여 사용하는 것이 rule engine이다.

 


 

Easy Rules 정의

easy rules : 말 그대로 '쉬운 규칙들'. easy rules은 비즈니스를 정의하기 위한 POJO(Plain Old Java Object, 간단히 POJO는 말 그대로 해석을 하면 오래된 방식의 간단한 자바 오브젝트) 기반의 framework를 제공하는, 간단한 java rule engine이다.

 


 

Easy Rules Maven 추가

<!-- Rule Engine / Easy Rules -->
<dependency>
    <groupId>org.jeasy</groupId>
    <artifactId>easy-rules-core</artifactId>
    <version>4.1.0</version>
</dependency>

 


 

Easy Rules Class 생성

우선 규칙을 정의하는 class를 생성한다.

import org.jeasy.rules.annotation.Action;
import org.jeasy.rules.annotation.Condition;
import org.jeasy.rules.annotation.Rule;

@Rule(name = "EasyRulesController", description = "EasyRulesTest")
public class EasyRulesController {

	@Condition
	public boolean when() {
		return true;
	}
	
	@Action
	public void then() throws Exception {
		System.out.println("┌────────── ────────── ──────────");
		System.out.println("EasyRulesTest !!!");
		System.out.println("└────────── ────────── ──────────");
	}
}

해당 class 정의에 사용된 annotation들은 easy rules에 내장되어있다.

 

다음으로 메인이되는 class를 생성한다.

import org.jeasy.rules.api.Facts;
import org.jeasy.rules.api.Rules;
import org.jeasy.rules.api.RulesEngine;
import org.jeasy.rules.core.DefaultRulesEngine;
import easyRulesTest.controller.EasyRulesController;

public class Launcher {
	public static void main(String... args) {
		// facts 생성
		Facts facts = new Facts();

		// rules 생성
		Rules rules = new Rules();
		rules.register(new EasyRulesController());

		// rules engine 생성
		RulesEngine rulesEngine = new DefaultRulesEngine();
		rulesEngine.fire(rules, facts);
	}
}

 

현재 상태에서 project 실행 시, 다음과 같은 console 화면을 볼 수 있다.

앞서 생성한 규칙을 정의하는 class(EasyRulesController)가 정상적으로 처리되는 모습이다.

 

 

 


 

 

 

[ 출처 ]

POJO 정의 : https://ko.wikipedia.org/wiki/Plain_Old_Java_Object

Easy Rules 사용법 : https://www.baeldung.com/java-rule-engines

728x90

'Java > easy rules' 카테고리의 다른 글

easy rules 사용 [6] YML 예시  (0) 2021.08.23
easy rules 사용 [5] YML  (0) 2021.08.19
easy rules 사용 [4] jeasy API(Controller 추가 없음)  (0) 2021.08.19
easy rules 사용 [3] MVEL Rule  (0) 2021.08.19
easy rules 사용 [2] RuleBook  (0) 2021.08.19