728x90
728x90
이전에 작성한 easy rules 사용 [9] 포스팅의 응용에 대하여 작성해보겠다. MVEL Rule을 사용하면서, 여러 조건을 하나의 Rule에 등록하는 것과, Rule을 거치며 return 하고자하는 변수를 담는 것에 집중하고자 한다. MVEL Rule 응용 방식 우선 아래의 소스코드를 확인하자. 필자가 포스팅한 가장 기본적인 형태의 MVEL Rule의 형태이다. public static void main(String[] args) { // facts 정의 Facts facts = new Facts(); facts.put("position", true); // rules 정의 Rule testMVELRule = new MVELRule() .name("MVEL rule") .description("MV..
Swagger Swagger란 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 필자가 직접 사용해본 결과, 사용방법이 무척이나 간단하며 편리하게 API 문서화를 진행할 수 있다. 단점이라고 한다면, 이미 어느정도 개발이 완료된 프로젝트에 대해서는 적용이 다소 어려울 수 있다는 점이다. 이미 생성해놓은 모든 API에 별도 적용을 거쳐야 하기 때문이다... 신규 프로젝트에 도입할 때에는, 개발자들이 API Annotation 양식을 지켜가며 작성을 하게 함으로써 아주 간단하게 API 문서화를 할 수 있겠지만 말이다. 하단 출처에 적혀있는 Swagger 홈페이지에서 Demo 및 사용방법 등과 같은 정보를 확인할 ..
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..