728x90
728x90
MVEL Rule 환경 설정 MVEL Rule을 이용하여 easy rules 응용을 진행해보겠다. 우선 easy rules 및 MVEL Rule을 사용하기 위한 maven 추가를 진행하겠다. org.jeasy easy-rules-core 4.1.0 org.mvel mvel2 2.4.12.Final MVEL Rule 사용을 위한 component를 생성하도록 하자. easy rules 사용 [3] MVEL Rule 게시물의 'MVELRule을 이용한 규칙 생성에 필요한 Component' -를 참고하면 된다. 다음의 class 파일들을 적당한 위치에 놔두도록 하자. MVELAction.java MVELCondition.java MVELRule.java MVEL Rule 응용 방식 이전 포스팅에서 필자가 M..
예시 [1] 단일 조건 이전에 작성한 easy rules 사용 [1] 게시물의 예시를 작성해보겠다. 메인이 되는 class를 다음과 같이 수정하겠다. 이번 예시에서는 다른 controller의 method를 가져다 쓰는 테스트를 진행하기에, main method 상단에 test method를 생성하도록 하겠다. 규칙을 정의하는 controller를 import 하는 것도 잊지말자. 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.contro..
MVEL Rule 예시 [1] 단일 조건 이전에 작성한 easy rules 사용 [3] MVEL Rule 게시물의 예시를 작성해보겠다. 우선 메인이 되는 class를 다음과 같이 수정하도록 하겠다. public static void main(String[] args) { // 변수 선언 // 1:사원 2:대리 3:과장 4:부장 int position = 3; boolean positionReal = false; String responsePosition = "홍길동 이사"; String answer = "'결재 요청 인원 직급 : " + position + " / 결재자 : " + responsePosition + "'"; // 임의 if문 지정 // 과장 이상부터 결재 가능 if(position>2){..
YML 예시 [1] 단일 조건 이전에 작성한 easy rules 사용 [5] YML 게시물의 예시를 작성해보겠다. YML 방식을 사용할 경우, controller class 파일에 대한 수정이 크게 없다는 장점이 존재한다. 메인이 되는 class 파일 및 yml 파일을 다음과 같이 수정하도록 하겠다. // (구) 메인이 되는 class 파일 내 소스코드 // facts 정의 Facts facts = new Facts(); facts.put("rain", true); ↓ // (신) 메인이 되는 class 파일 내 소스코드 // facts 정의 Facts facts = new Facts(); facts.put("position", true); // (구) rule yml 파일 소스 코드 name: "wea..
YAML, YML 정의 "YAML은 마크업 언어가 아니다 (YAML Ain't Markup Language)” 라는 재귀적인 이름에서 유래된(본래의 뜻은 또 다른 마크업 언어 (Yet Another Markup Language) 이다) YAML은 XML, C, 파이썬, 펄, RFC2822에서 정의된 e-mail 양식에서 개념을 얻어 만들어진 '사람이 쉽게 읽을 수 있는' 데이터 직렬화 양식이다. Rule을 정의하기 위한 YML 파일 작성 우선 YML 파일을 생성한다. 필자는 Eclipse를 사용하므로, 그에 맞춰 설명하도록 하겠다. Eclipse에서는 기본적으로 yml 확장자를 지원하지 않으므로, File로 생성 후 확장자명을 지정하도록 한다. 아래 이미지를 참조하면 좋을 듯 하다. 이후 생성된 yml ..
jeasy API를 이용한 규칙 생성 이전 게시물에서는 MVELRule을 이용하여 rule engine을 구현해 보았다. 이번에는 순수하게 jeasy API만을 사용하여 구현해보도록 하겠다. 순수 jeasy API만을 사용할 경우, easy rules 사용 [3] MVEL Rule에서 사용한 것과 같이 메인이 되는 class에서 처리가 가능하다. 메인이 되는 class를 다음과 같이 수정하겠다. import org.jeasy.rules.api.Facts; import org.jeasy.rules.api.Rule; import org.jeasy.rules.api.Rules; import org.jeasy.rules.api.RulesEngine; import org.jeasy.rules.core.Defaul..
MVEL Maven 추가 MVEL이란, MVFLEX Expression Language의 약자로서 Java 플랫폼 용 동적 / 정적 형식의 내장형 표현 언어 및 런타임을 뜻한다. 필자가 진행한 사용 테스트에는 MVEL Maven 추가가 필요하다. org.mvel mvel2 2.4.12.Final MVELRule을 이용한 규칙 생성에 필요한 Component 필자의 경우, MVEL Maven 추가만으로 모든 component를 가져올 수는 없었다. 그리하여 j-easy Github에 올라와있는 easy-rules-mvel 하위 directory를 참조하였다. https://github.com/j-easy/easy-rules 좌측의 링크를 접속하면, 다음과 같은 화면이 출력된다. 해당 Github의 root..
RuleBook Maven 추가 RuleBook은 Java 8 람다와 Chain of Responsibility Pattern(책임 연쇄 패턴, 명령 객체와 일련의 처리 객체를 포함하는 디자인 패턴)을 활용하여 간단한 BDD 접근 방식을 사용하여 규칙을 정의하는 java framework이다. RuleBook을 사용하여 간단하게 easy rules를 제어해보도록 하겠다. com.deliveredtechnologies rulebook-core 0.6.2 RuleBook을 활용한 규칙 생성 easy rules 사용 [1]에서 생성한 Easy Rules class 및 메인이 되는 class를 일부 수정하도록 하겠다. 우선 규칙을 정의하는 EasyRulesController를 다음과 같이 수정한다. import..
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는 말 그대로 ..