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..
Data 함수 java 기본 내장 함수이며, java.util.Data를 import 하여 사용한다. SimpleDateFormat 함수 java 기본 내장 함수이며, java.text.SimpleDateFormat를 import 하여 사용한다. 현재 날짜 구하기 Data 함수와 SimpleDateFormat 함수를 이용하여 다음과 같이 사용한다. Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy년 MM월 dd일"); // yyyy-MM-dd HH:mm:ss String dateReal = simpleDateFormat.format(date); System.out.println(dateReal); 출..
조건문 조건문이란, 말 그대로 조건을 표현하는 문장이라고 생각하면 된다. 쉽게 생각해보자. 당신은 현재 홍대입구역에 위치하고 있다. 그러나 약속 장소가 강남역이라면 어떻게 할 것인가? 선호하는 교통 수단에 따라 크게 세 가지로 나누어 보겠다. 버스를 선호한다면 버스를 이용하여 이동하라 택시를 선호한다면 택시를 이용하여 이동하라 지하철을 선호한다면 지하철을 이용하여 이동하라 정말 간단하게 생각한다면 위의 예제가 조건문(if)이다. 개발에 사용되는 언어에 따라 그 사용 방식이 달라질 수는 있겠지만, 기본적으로 '조건을 표현하는 문장' 이라는 전제조건 자체는 변함이 없다. 기본 개념 if 비즈니스 로직의 분기점을 만들 수 있는 조건문 if 라는 단어의 뜻 그대로, '만약 ~~ 한다면' 이라는 뜻으로 사용하면 ..
예시 [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..