메인 컨텐츠로 가기

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관 보기.

모든 정보가 안전하게 전송되었습니다.

  • 닫기 [x]

웹 서비스로 규칙 기반 의사결정 서비스 사용하기

SOA의 유연성과 규칙의 민첩성(agility) 결합하기

Yang Chen Ming, Consultant, IBM Corporation
Yang Chen Ming
Yang Chen Ming has six years of experience with a primary focus on Business Rule Management System and JEE. For the past four years, Yang has been working extensively with the ILOG JRules portfolio.

요약:  JRules를 통해 의사결정 서비스는 코딩없이 웹 서비스로 노출할 수 있습니다. 비즈니스 의사결정 서비스를 웹 서비스로 노출하는 것은 비즈니스 규칙의 민첩성과 SOA의 유연성을 결합합니다. 이는 다른 SOA 사용 제품과 간편하게 통합할 수 있습니다.

원문 게재일:  2010 년 6 월 24 일 번역 게재일:   2010 년 12 월 28 일
난이도:  중급 원문:  보기 PDF:  A4 and Letter (643KB | 21 pages)Get Adobe® Reader®
페이지뷰:  2326 회
의견:  


소개

IBM WebSphere ILOG JRules는 설계, 개발, 테스팅, 배치, 실행에서부터 유지보수에 이르기까지 비즈니스 규칙의 모든 측면을 다루는 기능의 포괄적인 세트를 제공하는 선도하는 Business Rule Management System(BRMS)이다.

웹 서비스는 애플리케이션이 플랫폼 및 프로그래밍 언어 불문(language-agnostic) 방식으로 상호 간에 통신할 수 있게 해주는 기술이다. 웹 서비스는 표준화된 XML 메시징을 통해 네트워크를 넘어 액세스할 수 있는 작업의 콜렉션을 설명하는 소프트웨어 인터페이스이다. 웹 서비스는 널리 사용되어 대부분의 서비스 지향 아키텍처(SOA)에서 중심 역할을 담당한다.

JRules는 의사결정 서비스가 필수 프로그램 코딩을 추가하지 않고 웹 서비스로 노출될 수 있는 HTDS(Hosted Transparent Decision Server)라는 기능을 소개한다.


설치 및 구성

이 샘플을 실행하려면 다음 제품을 정확하게 설치하고 구성해야 한다.

  • IBM WebSphere ILOG JRules V7.0.x

설치 후 다음이 수행 가능해야 한다.

  • JRules 설치 프로그램과 함께 제공되는 Rule Studio를 시작한다.
  • http://localhost:8080/res/에서 Rule Execution Server 콘솔 홈페이지를 보자. 이는 즉시 tomcat 서버 인스턴스에서 지원된다. JRules를 WebSphere 또는 Oracle WebLogic과 같이 다른 애플리케이션 서버에서 실행하려면 추가 구성이 필요하다.

샘플을 실행하려면 다음 JRules 번들/컴포넌트는 필요하지 않음을 참고하자.

  • Rule Team Server 번들
  • Decision Validation Service
  • Rule Solutions for Office

시나리오 개요

비즈니스 시나리오는 매우 단순하다. 고객 정보를 넣고 의사결정 서비스를 호출하여 대출 신청이 합법적인지 대출 이자율을 결정하는 Java EE 웹 기반 대출 견적 신청이 있다고 가정하자. 간단하게 만들기 위해 제공된 대출 금액과 신청자의 연령으로 대출 이자율을 결정한다. 두 개의 키 엔티티는 고객과 대출이다.

실제 실행 도중에 JRules를 활용하는 내재된 오브젝트 모델인 XOM(JRules Execution Object Model)을 모델링하는 두 가지 방법이 있다. 도메인 오브젝트는 Java 또는 XML 중 하나로 모델링될 수 있다. 이 예제에서는 XML XOM을 사용한다.


그림 1. XML_Customer
XML_Customer

그림 2. XOM_Loan
XOM_Loan

규칙 프로젝트에서 구현된 두 개의 규칙은 Loan Value와 Young Applicant이다. 이는 Eligibility와 Rating 서브패키지로 각각 분류된다.


목록 1. SRule Eligibility.Loan Value
          
if
    the advance amount of the loan of 'the customer' is more than 100000
then
    set the decision of the loan of 'the customer' to "Declined";
else
    set the decision of the loan of 'the customer' to "Accepted";
    set the rate of the loan of 'the customer' to 5.5;


목록 2. Rule Rating.Young Applicant
                   
if
    the age of 'the customer' is less than 21
then
    set the rate of the loan of 'the customer' to 6.5;

조화로운 ruleflow는 eligibility 패키지와 rating 패키지 둘 다에서부터 규칙이 연결된다.


그림 3. Ruleflow
Ruleflow

RuleSet 매개변수는 의사결정 서비스로 호출될 규칙 세트에 대해 데이터 인터페이스를 정의한다. 모든 Customer 입력에 대해 의사결정 서비스는 적합한 대출 이자율이 무엇인지 결정할 수 있다. 대출 이자율은 customer.getLoan().getRate()를 통해 업데이트된 고객 오브젝트에 리턴될 것이다.


그림 4. RuleSet Parameter
RuleSet Parameter

수 많은 통합 옵션이 즉시 사용가능하며, 예를 들면, 웹 서비스, J2SE 또는 Local/Remote EJB 모드 등이 있다. 이 기사에서는 웹 서비스로 이를 사용하는 방법에 대해 배울 것이다. 사용하기 전에 이 규칙 프로젝트 LoanRules(위에 표시된 모든 아티팩트로 구성됨)가 이미 작성되었다고 가정하고, 그 다음에 할 일은 다음과 같다.

  1. LoanRules를 RuleApp Archive로 패키지하는 RuleApp 프로젝트 작성
  2. 내장 Tomcat 서버에 대해 Rule Execution Server Configuration 작성
  3. RuleApp Archive를 Tomcat으로 배치
  4. Decision Service의 WSDL 파일 생성 및 확인
  5. 웹 서비스를 호출하는 웹 서비스 클라이언트 실행

자세한 설명

1단계. LoanRules를 RuleApp Archive로 패키지하는 RuleApp 프로젝트 작성

"New Project" 마법사를 사용하여 새 RuleApp 프로젝트를 작성한다. RuleApp 프로젝트는 RuleApp 아카이브를 생성하는 데 사용된다.


그림 5. 새 RuleApp 작성
새 RuleApp 작성

"LoanRules"를 지정하고 이를 RuleApp 프로젝트에 추가한다. 이렇게 하면 RuleApp 아카이브가 Rule Project "LoanRules"에서 정의된 규칙을 포함할 것이라고 JRules가 알려준다.


그림 6. RuleProject "LoanRules" 추가
RuleProject LoanRules 추가

모든 기타 기본 설정을 수락하고 "Finish"를 클릭한다. 이제 RuleApp 프로젝트 "LoanRuleApp"이 준비되었다.

2단계. Tomcat에 대해 Rule Execution Server Configuration 작성

이 단계는 ruleapp을 RES(Rule Execution Server)로 배치하는 면에서 선택적이지만, 나중에 사용하기 위해 RES 구성을 저장하기 위해 권장되며 더 시맨틱적인 접근방식이다. 이는 개발, 테스팅 및 프로덕션 환경에 사용 가능한 RES 구성 목록이 있는 경우 대상 RES를 전환하기에 훨씬 더 간편하다.


그림 7. 새 RES Configuration Project 작성
새 RES Configuration Project 작성

Tomcat 서버에 대해 올바른 구성을 입력하고 이 tomcat 인스턴스에서 실행 중인 RES(Rule Execution Server) Console의 사용자와 비밀번호를 지정한다. "Test Connection" 단추를 클릭하여 연결이 작동하는지 확인한다.


그림 8. Tomcat 서버 구성
Tomcat 서버 구성

모든 기타 기본 설정을 수락하고 "Finish"를 클릭한다. 이제 RES Configuration Project가 생겼다. 이 프로젝트는 적절한 개발을 위해 1단계에서 작성한 RuleApp 프로젝트에서 사용될 것이다.

3단계. RuleApp Archive를 Tomcat으로 배치

LoanRuleApp 프로젝트 폴더에서 "archive.xml" 파일을 두 번 클릭한다.


그림 9. RuleApp Project 열기
RuleApp Project 열기

패널의 왼쪽 맨 아래에 "Deploy" 링크가 있음을 주목하자. 이를 클릭하면 버저닝 정책을 선택하라는 메시지가 표시된다. 이는 최초로 RuleApp을 배치하는 것이기 때문에, "Increment RuleApp major version"을 선택한다.


그림 10. 새 버전으로 배치
새 버전으로 배치

첫 번째 단일 선택 단추를 클릭하고 "Tomcat"을 선택한다. 이는 Tomcat 서버에 규칙을 배치하려고 하는 것을 JRules에 알리는 것이다. "Finish"를 클릭하여 마법사를 완료한다.


그림 11. RuleApp을 서버로 배치
RuleApp을 서버로 배치

콘솔 패널에 배치가 성공했음을 표시하는 긴 인쇄문이 나타날 것이다.


그림 12. RuleApp이 배치되었음을 표시하는 메시지
RuleApp이 배치되었음을 표시하는 메시지

4단계. Decision Service의 WSDL 파일 생성 및 확인

Tomcat에서 RES 콘솔에 로그인하자. 기본 URL은 http://localhost:8080/res이다. 필요한 경우 호스트 이름이나 포트를 변경한다. 기본 사용자 이름과 비밀번호는 resAdmin이다.

로그인하면 "Explorer" 탭을 클릭한다. 배치된 RuleApps 목록이 표시된다. 이 예제에서 "LoanRuleApp" 버전 1.0이라는 RuleApp을 볼 수 있다.


그림 13. RES Console에 나열된 RuleApp
RES Console에 나열된 RuleApp

"LoanRuleApp"을 클릭하여 RuleApp View로 들어간다. 이는 LoanRuleApp에 대한 사용자 정의 특성을 편집하는 곳이다. 맨 아래 "RuleSet" 패널에서 "LoanRules"라는 이름의 행이 있다. 이는 LoanRuleApp에 포함된 ruleset이다.


그림 14. RuleApp View
RuleApp View

"LoanRules"를 클릭하여 RuleSet View로 들어간다.


그림 15. RuleSet View
RuleSet View

"Get HTDS WSDL for this ruleset version"의 링크를 볼 수 있다. 이를 클릭하여 이 의사결정 서비스에 대해 WSDL 파일을 생성한다. WSDL 페이지로 이동될 것이다. 이 웹 서비스 엔드포인트 URL은 http://localhost:8080/DecisionService/ws/LoanRuleApp/1.0/LoanRules/1.0?WSDL이다.


그림 16. 생성된 WSDL
생성된 WSDL

5a단계. SOAPUI를 사용하여 웹 서비스를 호출하는 웹 서비스 클라이언트 시뮬레이트

이 단계에서는 SOAPUI를 웹 서비스 클라이언트로 사용하여 위의 웹 서비스를 테스트할 것이다.

먼저 마법사 대화 상자인 http://localhost:8080/DecisionService/ws/LoanRuleApp/1.0/LoanRules/1.0?WSDL에서 WSDL URL을 지정하여 새 SOAPUI 프로젝트를 작성한다. 선택사항인 "Create sample requests for all operations"를 선택하여 입력 XML의 구조가 어떠한 모양인지 살펴본다.


그림 17. New SOAPUI Project 마법사
New SOAPUI Project 마법사

두 번째로 다음 XML을 SOAPUI의 왼쪽에 있는 요청 텍스트 상자에 붙여넣는다. 고객의 DOB에 대해 접미부 "Z"가 있음을 주목하자. 이는 협정 세계시(UTC)와 동일한 시간대를 의미한다.

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:dec="http://www.ilog.com/rules/DecisionService" 
xmlns:loan="http://ilog.com/loan" 
xmlns:par="http://www.ilog.com/rules/param" 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header>
   </soapenv:Header>
   <soapenv:Body>
      <dec:DecisionServiceRequest>
         <par:inputCustomer>
            <loan:Customer>
               <loan:ID>AB1265H</loan:ID>
               <loan:Salary>35000</loan:Salary>
               <loan:Dob>1960-01-01Z</loan:Dob>
               <loan:Security/>
               <loan:Loan>
                  <loan:AdvanceAmount>100000</loan:AdvanceAmount>
                  <loan:Term>36</loan:Term>
                  <loan:PaymentFrequency>1</loan:PaymentFrequency>
                  <loan:ID>AB1265H</loan:ID>
                  <loan:Product/>
               </loan:Loan>
            </loan:Customer>
         </par:inputCustomer>
      </dec:DecisionServiceRequest>
   </soapenv:Body>
</soapenv:Envelope>

XML에서 샘플 SOAP 입력 메시지

"Run" 단추를 클릭하면 XML에서 응답 soap 메시지가 오른쪽에 표시될 것이다. 여기에서부터 비즈니스 의사결정과 관련된 정보인 5.5퍼센트의 이자율로 대출이 승인됨을 찾을 수 있어야 한다.


목록 3. XML 결과물
        
<Loan>
    <AdvancedAmount>1000000.0</AdvancedAmount>
    <Term>36</Term>
    <Rate>5.5</Rate>
    <RepaymentAmount xsi:null="true"/>
    <Decision>Accepted</Decision>

이제 SOAPUI GUI는 아래 그림 18의 스크린샷과 비슷할 것이다.


그림 18. SOAPUI 스크린샷
SOAPUI 스크린샷

5b단계. 웹 서비스를 호출하는 Apache Axis Client 실행

고급 개발자는 SOAPUI에서 활용하는 것이 아니라 웹 서비스를 테스트하기 위해 Apache Axis 클라이언트를 구현하려 할 수 있다. 예를 들어, 이 웹 서비스를 확인하기 위해 .NET 애플리케이션을 사용할 것이다.

ServiceLocatorPortType 클래스를 사용하여 서비스를 호출한다. 이러한 클래스는 WSDL2Java ant 대상으로 자동 생성되었다.

DecisionServiceLoanRules_ServiceLocator service 
    = new DecisionServiceLoanRules_ServiceLocator();
DecisionServiceLoanRules_PortType port 
    = service.getDecisionServiceSOAPlocalhost();

DecisionServiceRequest request = new DecisionServiceRequest();
DecisionServiceResponse response = null;

InputCustomer customerWrapper = new InputCustomer();
Customer customer = new Customer();

Axis ServiceLocator 및 portType 인스턴스 초기화

유형 Customer의 입력 데이터를 계속 설정한다. 여기에는 다음 값 세트가 있다. 특히 고객의 DOB가 1960년 1월 1일이고 대출 금액은 $100,000이다.

customer.setID("AB1265H");
customer.setSalary(35000.00);
customer.setDob(new Date(60,1,1));
Loan loan = new Loan();
loan.setAdvanceAmount(100000.00);
loan.setTerm(36);
loan.setPaymentFrequency(1);
loan.setProduct(new Product());
customer.setLoan(loan);

입력 데이터 채우기

최종 단계는 의사결정 서비스를 호출하고 대출 이자율을 출력하는 것이다. 의사결정이 대출 요청을 거절하는 경우, Customer.Loan.Decision 속성이 "Declined"로 설정될 것이다.

response = port.executeDecisionService(request);			
InputCustomer customerWrapperReturned 
    = response.getInputCustomer();
System.out.println("The decision is " + 
    customerWrapperReturned.getCustomer().getLoan().getDecision());
System.out.println("The rate is " + 
    customerWrapperReturned.getCustomer().getLoan().getRate());

결과물 데이터 추출 및 인쇄

그 다음으로 클라이언트를 실행한다. 리턴된 결과가 콘솔에 인쇄된다. 대출이 승인될 것이고, 내재된 대출 이자율은 5.5퍼센트이다. MIME 라이브러리 누락에 대한 첫 번째 결과물 메시지인 "Unable to find required class..."는 테스트 케이스와 무관하므로 무시하자.


그림 19. Java Console 결과물
Java Console 결과물

결론

JRules는 성공적인 RuleApp 배치에서 자동으로 웹 서비스를 생성하고 호스트한다. 이는 JRules가 제공하는 민첩성과 웹 서비스와 함께 제공되는 유연성을 결합한다. 이 기능은 WebSphere Process Server, WebSphere Enterprise Service Bus 및 WebSphere Message Broker와 같이 다른 IBM 제품과의 더 원활한 통합을 가능하게 한다.


참고자료

교육

  • IBM WebSphere ILOG JRules v7 Information Center는 모든 WebSphere ILOG JRules v7 문서로의 단일화된 웹 포털이며, WebSphere MQ 환경을 설치, 구성, 사용 및 사용자 정의하는 것에 대한 개념적인 태스크 및 참조 정보가 나와있다.

  • JRules에서 대부분의 주요 주제를 다루는 포괄적인 튜토리얼로 시작하자.

  • JRules v7에 소개된 새 기능에 대한 자세한 설명은 기술 자료가 나와있는 what is new in JRules v7에 대해 추가적으로 읽어보자.

  • WebSphere ILOG JRules v7의 무료 시험판 다운로드인 WebSphere ILOG JRules v7 Trial을 다운로드하자. 이는 시험판 기간 동안에 무료로 Windows 및 Linux 설치에 대한 제한적인 온라인 지원이 포함되어 있다.

  • developerWorks WebSphere application connectivity 영역에 액세스하여 WebSphere 애플리케이션 연결(이전에 WebSphere 비즈니스 통합) 방법 기사, 다운로드, 튜토리얼, 교육, 제품 정보 및 기타 등등을 확인하자.

  • developerWorks WebSphere business process management 영역에 액세스하여 비즈니스 프로세스를 모델링, 어셈블, 배치 및 관리하는 데 유용한 WebSphere BPM 방법 기사, 다운로드, 튜토리얼, 교육, 제품 정보 및 기타 자원을 확인하자.

  • developerWorks의 SOA 및 웹 영역에서 기술을 향상시키는 데 필요한 참고자료를 얻을 수 있다.

  • developerWorks 기술 행사 및 웹 캐스트를 통해 다양한 IBM 제품 및 IT 산업 주제에 대한 최신 정보를 얻을 수 있다.

  • 무료 developerWorks Live! briefing을 통해 최신 IBM 제품 및 도구에 대한 정보뿐만 아니라 IT 업계의 최신 경향까지도 빠르게 확인할 수 있다.

  • Twitter에서 SOA 페이지를 살펴보자.

  • developerWorks on-demand demos에서는 입문자를 위한 제품 설치 및 설정부터 숙련된 개발자를 위한 고급 기능까지 망라된 다양한 데모를 제공한다.

제품 및 기술 얻기

  • 자신에게 가장한 적합한 방법으로 IBM 제품을 평가해 보자. 시험판 제품을 다운로드하거나, 온라인으로 제품을 사용해 보거나, 클라우드 환경에서 제품을 사용하거나, SOA Sandbox에서 SOA(Service Oriented Architecture)를 효과적으로 구현하는 방법을 배울 수 있다.

토론

  • My developerWorks 커뮤니티에 참여하자. 개발자 중심 블로그, 포럼, 그룹 및 Wiki 검색 중에 다른 developerWorks 사용자와 의견을 교환해 보자.

필자소개

Yang Chen Ming

Yang Chen Ming has six years of experience with a primary focus on Business Rule Management System and JEE. For the past four years, Yang has been working extensively with the ILOG JRules portfolio.

잘못된 도움말 신고

부정사용 신고

감사합니다. 이 항목은 운영자가 관심을 표시했습니다.


잘못된 도움말 신고

부정사용 신고

제출실패 신고. 나중에 다시 실행해주세요.


디벨로퍼웍스 로그인


IBM ID가 필요하세요?
IBM ID를 잊으셨습니까?


비밀번호를 잊으셨습니까?
비밀번호 변경

developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


developerWorks에 처음 로그인하면 developerWorks프로파일이 생성됩니다.귀하의 프로파일에서 동의하신 내용이 공개되지만 이 사항은 언제든지 변경 가능합니다. 귀하의 성명(숨김으로 체크되어 있어도 표시됩니다)과 디스플레이 이름은 게시한 컨텐츠나 사이트 엑세스시 표시됩니다.

화면상에 보여지는 닉네임을 정하세요.

처음 developerWorks에 로그인할 때 프로파일이 작성되므로, 이를 위해 디스플레이 이름을 선택해야 합니다. 선택하신 디스플레이 이름은 developerWorks에 게시한 컨텐츠에 표시됩니다.

3글자 이상 31글자 이하의 길이로 사용 가능합니다. dW커뮤니티 내에서는 보안상 이메일주소를 제외한 다른 이름을 지정하셔야 합니다.

3개의 &이나 대쉬를 포함해주시고 31글자내로 제한해주세요.


developerWorks 이용 약관에 동의하시는 경우 제출을 클릭하십시오. 이용 약관.

 


아티클 순위

의견

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=20
Zone=SOA와 웹서비스
ArticleID=605048
ArticleTitle=웹 서비스로 규칙 기반 의사결정 서비스 사용하기
publish-date=06242010
author1-email=yangcm@sg.ibm.com
author1-email-cc=

태그

Help
검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오.

태그를 더 많이 보거나 적게 보기 위해 슬라이더 막대를 사용하십시오.

인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다.

내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.

검색 필드를 사용하여 My developerWorks 내에서 해당 태그가 사용된 모든 종류의 컨텐츠를 검색하십시오. 인기 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 최고 인기 태그를 보여줍니다. 내 태그는 특정 컨텐츠 존(예를 들어, 자바, 리눅스, WebSphere)의 귀하의 태그를 보여줍니다.