Developer: Business Intelligence
Oracle Business Intelligence Enterprise Edition Plus와 SOA 환경의 통합
저자 – Mark Rittman, Joel Crisp
Oracle SOA Suite와 Oracle Business Intelligence Enterprise Edition Plus의 통합을 위한 가능성의 모색
게시일: 2008년 1월
SOA(Service-Oriented Architecture)는 분산 애플리케이션 환경의 느슨하게 커플링된(loosely coupled) 독립적인 서비스를 이용하여 비즈니스 애플리케이션과 비즈니스 프로세스를 구성하는 설계 접근법으로서 최근 들어 크게 각광받고 있습니다. Oracle Fusion Middleware, Oracle JDeveloper, Oracle Database 11g와 같은 SOA 기반 솔루션으로 애플리케이션 인프라스트럭처를 구성하고 이벤트, 서비스, 비즈니스 룰, 애플리케이션 로직 등으로 구성된 프레임워크를 활용함으로써 기존에 구현된 기능을 효과적으로 재활용하고 비즈니스 우선 순위의 변화에 기민하게 대처하는 한편, 매력적인 웹 2.0 스타일 인터페이스를 사용자에게 제공할 수 있을 것입니다.
비즈니스 인텔리전스(BI) 역시 기업의 운영/재무 성과에 대한 통찰력 개선을 요구하는 기업 환경에 핵심적인 혜택을 제공합니다. 인터액티브 대시보드와 그래픽 리포트를 통해 기업의 성과에 관련한 핵심 정보를 신속하게 전달 받고 센서, 경고 등을 이용하여 잠재된 문제 또는 기회를 즉각적으로 확인할 수 있습니다. 그 결과로 기업은 차별화된 경쟁력을 확보할 수 있습니다. 또 Oracle Business Intelligence Enterprise Edition Plus와 같은 툴이 제공하는 비즈니스 메타데이터 계층을 이용하여 기업의 전체 데이터 셋에 대한 시맨틱 모델(semantic model)을 구현하고 비즈니스 의사 결정에 다양한 비즈니스 요소를 반영할 수 있습니다.
그렇다면 SOA와 BI를 조합할 수 있다면 어떤 효과를 기대할 수 있을까요? 비즈니스 프로세스에서 BI 툴이 제공하는 시맨틱 비즈니스 모델을 활용하고 전사적인 정보를 비즈니스 룰에 적용할 수 있다면 어떨까요? 재무 분석 담당자 중 한 사람이 구현한 모델을 기반으로 비즈니스 프로세스에서 계약의 미래 가치를 추산할 수 있다면 좋지 않을까요? 기업이 구현한 Java 애플리케이션에서 오라클의 차세대 Interactive Dashboard 툴이 제공하는 그래프/대시보드 기능을 이용하여 그래프, 테이블, 기타 BI 프리젠테이션을 삽입할 수 있다면 멋지지 않을까요?
본 문서는 Oracle Fusion Middleware 제품군의 두 가지 핵심 제품인 Oracle SOA Suite와 Oracle Business Intelligence Enterprise Edition Plus의 통합 가능성에 대해 논의하고 있습니다. 특히 비즈니스 프로세스와 애플리케이션에 BI 테크놀로지를 보다 쉽게 통합할 수 있는 방편의 하나로, 오라클 테크놀로지 네트워크(OTN)을 통해 제공되는 Oracle Business Intelligence Enterprise Edition Plus 웹 서비스 API에 대해 설명하고자 합니다.
서비스 지향적 세계
우리 모두가 잘 알고 있다시피, SOA의 가장 중요한 장점은 기업 내에 구현된 기존 애플리케이션 기능을 활용하여 새로운 비즈니스를 신속하게 생성할 수 있다는 점에 있습니다. SOA를 이용하면 웹 서비스를 기반으로 다양한 비즈니스 프로세스들을 쉽게 통합할 수 있습니다.
SOA는 일반적으로 아래와 같은 구성 요소를 갖습니다.
- 비즈니스 프로세스—애플리케이션, 경고, 다른 프로세스로부터 호출되는 서비스들을 통합하는 선언적 워크플로우로, 일반적으로 BPEL을 이용하여 구현됩니다.
- 비즈니스 룰—애플리케이션, 비즈니스 프로세스로부터 접근 가능한 별도의 룰 리포지토리에 저장되는 선언적 비즈니스 정책
- 비즈니스 이벤트—애플리케이션과 비즈니스 프로세스에 의해 생성되는 선언적 이벤트 정의, 변환, 라우팅 등으로 구성됩니다.
- 비즈니스 액티비티 모니터링—비즈니스 프로세스, 액티비티의 효율성을 모니터링합니다.
이러한 모든 구성 요소들은 Oracle Fusion Middleware 제품군에 포함된 Oracle SOA Suite를 통해 제공되고 있습니다. Oracle SOA Suite는 Oracle BPEL Process Manager, Oracle Business Rules, Oracle Enterprise Service Bus, Oracle Web Services Manager와 같은 툴을 기본적으로 제공합니다.

Oracle SOA와 Oracle Application Server, 그리고 그 밖의 Oracle Fusion Middleware 솔루션을 이용하면 기업 내부/외부의 애플리케이션들과 쉽게 통합 가능한 표준 기반의 느슨하게 커플링된 비즈니스 애플리케이션, 프로세스를 개발할 수 있습니다.
분석 솔루션의 활용
Oracle SOA Suite와 함께 Oracle Fusion Middleware의 핵심을 이루는 한 요소가 Oracle Business Intelligence Suite Enterprise Edition Plus입니다. Oracle Business Intelligence Enterprise Edition Plus는 오라클의 최신 BI/분석 툴로 인터액티브 대시보드, 리포트, 그래프, 경고 이외에도 픽셀 단위까지 정확한 출판 기능을 제공하며, 데이터에 대한 메타데이터 레이어 지원을 통해 데이터 딕셔너리에서 비즈니스 용어를 선택하는 것만으로 간단하게 리포트 작성을 완료할 수 있게 합니다.
애플리케이션 개발자의 관점에서 볼 때 Oracle Business Intelligence Enterprise Edition Plus는 웹 서비스를 완벽하게 지원할 뿐 아니라, 함께 제공되는 SOAP API를 이용하여 BI 메타데이터 레이어에 접근하고, 리포트를 실행하고, 비즈니스 용어를 선택하여 데이터를 조회하고, 분석형 쿼리를 실행하고, "iBot"이라 불리는 BI 워크플로우 작업을 실행할 수 있습니다. 일반적으로 BI 메타데이터 레이어는 조직 내의 여러 주제 영역을 포괄하고, 통합/정제된 데이터를 포함하고, 계산 및 핵심 성과 지표(KPI)를 포함하고, 신속한 데이터 조회를 위해 튜닝된 데이터베이스를 기반으로 구현된다는 공통점을 갖습니다. 따라서 개발자들은 Oracle Business Intelligence Enterprise Edition Plus를 비즈니스 프로세스와 애플리케이션에 분석 기능을 추가하기 위한 효과적인 방안으로 활용할 수 있습니다.
예를 들어 세일즈, 인사, 재고 등 여러 비즈니스 영역의 데이터를 참조하고 하나의 비즈니스 프로세스 안에 통합하고자 하는 경우를 생각해 볼 수 있습니다. 또는 비즈니스 룰을 정의하면서 수익성 또는 고객 서비스 KPI를 참조하거나, 충성도 높은 고객에 대한 수익금 반환 정책이 장기적으로 효과가 있을 것인지 예측하기를 원할 수도 있습니다. 이러한 정보들은 모두 BI 애플리케이션 내부에 저장되어 있습니다. Oracle Business Intelligence Enterprise Edition Plus의 웹 서비스 인터페이스를 이용하면 BI 애플리케이션으로부터 전달되는 정보를 SOA 기반 애플리케이션에 쉽게 통합할 수 있습니다.
SOA와 BI의 통합이 가져다 주는 또 다른 중요한 혜택으로 스탠드얼론 BI 애플리케이션의 고전적인 약점을 해결할 수 있다는 점을 들 수 있습니다. 기업 내의 대부분 직원들은 인사, 재고 관리, 세일즈 인력 자동화 등의 현업 애플리케이션을 통해 일상적인 업무를 수행하고 있으며, 별도의 리포팅, 분석 툴 사용 방법을 배울만한 충분한 시간 여유가 없는 상태입니다. 이들이 비즈니스 분석을 위한 쿼리 툴을 사용하려면 쿼리 툴과 협업 애플리케이션 사이에서 일종의 "컨텍스트 스위치"를 경험해야 하며, 이는 업무 속도를 저하시키는 요인으로 작용합니다. 또 최악의 경우 사용자들이 확보한 통찰력(insight)과, 실행 가능한 조치(action) 사이의 연결 고리를 찾지 못할 수도 있습니다.
하지만 애플리케이션에서 통합 BI 데이터/KPI에 접근할 수 있게 하거나, BI 경고/워크플로우를 통합하거나, 또는 단순히 BI 툴에 의해 생성된 대시보드와 그래픽 리포트를 삽입하는 방법으로 BI 기능을 현업 애플리케이션에 직접 구현할 수 있다면 한층 효과적인 비즈니스 프로세스의 통합이 가능해질 것입니다.
Oracle Business Intelligence Enterprise Edition Plus 소개
Oracle Business Intelligence Enterprise Edition Plus는 오라클의 차세대 BI 툴 셋으로 인터액티브 대시보드, 리포트, 고품질 출판, 경고 기능과 함께 다양한 관계형/OLAP 데이터 소스와의 통합 기능, 그리고 전사적 데이터에 대한 비즈니스 데이터 딕셔너리를 제공하는 메타데이터 계층을 제공합니다. Oracle Fusion Middleware의 일부로서 OTN에서 다운로드할 수 있는 Oracle Business Intelligence Enterprise Edition Plus는, 기업 내 다양한 사용자 계층을 지원하는 리포트, 경고, 그래프, 역할 기반 대시보드를 위한 포괄적인 플랫폼을 제공합니다.

Oracle Business Intelligence Enterprise Edition Plus는 4가지 서버 제품을 중심으로 하는 일련의 제품군과 마이크로소프트 윈도우즈 기반 관리 툴로 구성됩니다.
- Oracle BI Server—다양한 관계형/OLAP 데이터소스에 연결하고, 비즈니스 메타데이터 레이어를 통해 계산, 요약, KPI 등을 포함하는 통합적인 데이터 셋에 대한 접근을 제공합니다.
- Oracle BI Presentation Server—ODBC를 통해 Oracle BI Server에 연결하고 다이내믹 HTML 인터페이스를 통해 인터페이스 대시보드, 리포트, 데이터 시각화 기능을 구현합니다.
- Oracle BI Delivers—Oracle BI Presentation Server와 함께 리포트를 스케줄링하거나 사용자에 의해 정의된 경고, 임계치를 기준으로 작업을 실행하는 워크플로우 생성을 위해 활용됩니다.
- Oracle BI Publisher—관계형 데이터베이스, Oracle BI Answers 요청, Oracle BI Discoverer 워크북, Oracle Business Intelligence Enterprise Edition 메타데이터 레이어로부터 전달되는 데이터 소스를 이용하여 고품질 리포트를 생성합니다.
이러한 서버 애플리케이션과 함께 활용되는 또 다른 툴로 Oracle BI Administration이 있습니다. Oracle BI Administration은 마이크로소프트 윈도우즈 기반 툴로 메타데이터 레이어, 보안, 캐싱 등의 Oracle BI Server 관리 기능을 제공합니다.
웹 서비스 통합
Oracle Business Intelligence Enterprise Edition의 가장 흥미로운 기능의 하나로 Oracle BI Presentation Server가 제공하는 SOAP 인터페이스를 꼽을 수 있습니다. 이 인터페이스는 Oracle JDeveloper 10g와 같은 툴을 이용하여 비즈니스 프로세스, 애플리케이션에서 호출할 수 있는 일련의 웹 서비스를 구현합니다.
Oracle Business Intelligence Enterprise Edition Plus 10.1.3.3의 SOAP 인터페이스는 다음과 같은 서비스를 제공합니다:
- XmlViewService—리포트 결과를 Microsoft XML Resultset과 호환하는 XML 포맷의 결과 셋으로 반환합니다. 이 서비스는 SOA를 통해 OBI:EE 컨텐트를 공개하기 위한 핵심 서비스로 사용됩니다. XmlViewService는 "stateful" 서비스이며, 따라서 동일한 세션 키를 사용하여 여러 번의 호출 작업을 수행할 수 있습니다.
- SAWSessionService—OBI:EE Presentation Service(구서비스명 SAW) 웹 서비스 세션을 관리합니다. 다른 서비스를 이용하기 전에, 먼저 이 서비스를 호출하여 다른 서비스가 사용할 세션 키를 생성해야 합니다.
- SecurityService—OBI:EE Presentation Server 카탈로그에서 액세스 컨트롤 리스트(ACL)의 읽기/설정을 허용합니다.
- IBotService—OBI:EE iBot의 "immediate mode" 실행을 허용합니다.
- WebCatalogService—OBI:EE Presentation Server 카탈로그에서 리포트, 필터, iBot을 공개합니다.
- ReplicationService—OBI:EE 10.1.3.2에서는 사용되지 않는 레거시 인터페이스입니다.
- MetadataService—OBI:EE Analytics Server 메타데이터 모델을 노출합니다.
- ReportEditingService—다른 리포트, 필터들을 이용한 리포트 조합을 허용합니다.
- HtmlViewService—리포트 실행을 통한 HTML 조각(fragment)의 생성을 허용합니다. 이 서비스는 완성된 리포트의 폴링(polling)을 위해 스크립트를 포함하는 HTML 조각을 즉각적으로 반환하며, 반환된 HTML 조각은 결과로 생성된 HTML로 대체됩니다. 이 서비스는 포탈 환경을 위해 구현되었습니다.
- JobManagementService—OBI:EE iBot과 OBI:EE 스케줄러에 의해 설정된 다른 작업에 대한 컨트롤을 허용합니다.
이러한 세분화된(fine-grained) 웹 서비스를 통해 Oracle Business Intelligence Enterprise Edition Plus 기능의 대부분을 노출할 수 있지만, 웹 서비스만을 활용하는 경우 인증 관리, 연결의 퍼시스턴스 관리, 데이터 인출, 결과 처리를 로우 레벨에서 처리해야 하므로 매우 많은 작업 시간이 소요될 수 있다는 문제가 있습니다. 이러한 프로세스를 보다 단순화하기 위해, 오라클 개발 팀은 Easy BI Bridge라는 샘플 코드를 OTN을 통해 제공하고 있습니다.
The EasyBI Bridge
Oracle Business Intelligence Enterprise Edition Plus SOAP 인터페이스를 이용한 작업을 한층 단순화하기 위한 목적에서 제공되는 Easy BI Bridge는 상위 수준(coarse-grained)의 Java 웹 서비스로, Oracle Business Intelligence Enterprise Edition Plus 웹 서비스 기능의 일부만을 제한적으로 구현하고 있습니다.
Easy BI 서비스는 Oracle Business Intelligence Enterprise Edition Plus의 네이티브 SOAP 인터페이스가 제공하는 다양한 로우-레벨 메소드를 4가지의 이해하기 쉬운 메소드로 축약하고 있습니다. 이처럼 단순화된 서비스 셋을 제공하는 한편으로, Easy BI 서비스는 Oracle BI Presentation Serve와 애플리케이션 간의 로그온/로그오프 프로세스를 관리함으로써 개발자의 업무를 한층 단순화해 줍니다. 하지만 Easy BI Bridge는 샘플 코드로서만 제공되고 있으며, 코딩 작업의 단순화를 대가로 기능성과 성능을 희생하고 있음을 주지할 필요가 있습니다.
Easy BI Bridge의 설치
Easy BI Bridge와 본 아티클의 예제는 아래에 설명된 오라클 소프트웨어 버전을 요구합니다(모두 OTN에서 다운로드할 수 있습니다).
- Oracle Business Intelligence Enterprise Edition Plus 10.1.3.3
- Oracle JDeveloper Studio Edition 10.1.3.3
- Oracle Application Server SOA Suite Edition 10.1.3.1.0
이와 별도로, 본 아티클의 예제에서는 아래의 오라클 데이터베이스 버전을 사용하고 있습니다.
- Oracle Database 10.2.0.3 Enterprise Edition
Easy BI Bridge의 소스 코드는 이곳에서 다운로드할 수 있습니다. "d:\workspace"와 같은 디렉토리 경로에서 다운로드한 zip 파일을 압축을 풀되, 전체 경로명을 유지하는 옵션을 사용합니다. (참고: 본 문서에서는 Microsoft Windows 환경을 가정하고 있습니다. 하지만 Easy BI Bridge는 다른 운영 체제에서도 정상적으로 동작합니다.)
Easy BI Bridge 들여다 보기
Oracle JDeveloper 프로젝트는 다음과 같은 3가지 핵심 구성 요소를 포함합니다.
- BusinessIntelligence Java 웹 서비스 – BPEL 프로세스에 의해 사용되는 SOAP 1.1 호환 서비스입니다.
- OBI: EE 웹 서비스 IBotService, SAWSessionService, XMLViewService를 사용하는 일련의 Java 프록시 – 이 프록시들은 Oracle JDeveloper에 의해 생성됩니다.
- EasyBIBridge.java Java 클래스 – 위 두 요소 간의 "접착제(glue)" 역할을 담당하는 코드를 포함합니다.
이 3가지 구성 요소 이외에도 몇 가지 지원 파일이 함께 제공됩니다.
- BridgeNamespaceContext.java - Microsoft Rowset URN을 이용하여 초기화되는 XML NamespaceContext를 제공합니다.
- RequestSpecification, RequestParameter - BusinessIntelligence 웹 서비스 호출을 위한 매개변수를 저장하는 밸류 클래스(value class)입니다.
Java 패키지 네임스페이스 oracle.bi.soa, – OBI:EE 웹 서비스에 대한 프록시를 위한 oracle.bi.soa.proxy 네임스페이스를 함께 포함하고 있습니다.
BusinessIntelligence 웹 서비스는 아래와 같은 메소드들을 노출합니다:
- evaluateCondition(RequestSpecification)—OBI:EE 리포트를 실행하고 리포트 결과에 로우가 한 개 이상 있는 경우 TRUE를 반환합니다.
- executeRequest(RequestSpecification)—OBI:EE 리포트를 실행하고 리포트 결과에 포함된 XML 로우셋을 반환합니다.
- getDataValue(RequestSpecification)—OBI:EE 리포트를 실행하고 리포트 결과의 최상단 좌측 셀로부터 하나의 값을 반환합니다. 이 메소드는 KPI 등의 리포트 결과에 보다 쉽게 접근하기 위한 편의적인 방법으로 활용됩니다.
- invokeiBot(RequestSpecification)—iBot의 즉각적인 실행 및 결과 반환을 스케줄링합니다.
이 메소드는 동일한 RequestSpecification 구조를 공유합니다. 이 구조는 Oracle BI Presentation Server 카탈로그의 리포트 경로에 대한 참조와 옵션 매개변수 셋을 포함하고 있습니다.
Easy BI Bridge를 설정하기 위해, 먼저 Oracle JDeveloper를 시작하고 File/Open...을 선택합니다. 코드의 압축을 푼 디렉토리로 이동하여 BISOABridge.jws. 파일을 엽니다.
Oracle JDeveloper에서 아래 화면과 같은 프로젝트가 열립니다. 프로젝트에서 EasyBIBridge.java 소스 파일을 더블 클릭하여 엽니다.

이 파일에서 public class EasyBIBridge를 찾아 Oracle Business Intelligence Enterprise Edition Plus가 설치된 환경에 맞도록 biServer, administrator, adminPW의 값을 변경해 줍니다. 이 예제 코드에서 웹 서비스는 Oracle BI Server 관리자 계정을 통해서만 접근하게 됩니다. 이 코드는 예제로서 제공되며, 따라서 통제된 환경에서의 테스트 목적으로만 사용되어야 함을 다시 한 번 강조합니다.
변경된 내용을 저장하고 WebServices.deploy 파일을 마우스 오른쪽 버튼으로 클릭한 뒤 Deploy to EAR file을 선택합니다. Oracle JDeveloper가 Easy BI Service를 재컴파일한 후 EAR 파일에 적용합니다. 이제 EAR 파일을 Oracle Application Server 10.1.3.1.0 설치 환경에 적용할 수 있습니다.
본 문서에서 참조되는 데이터와 Oracle BI Server 리포지토리를 설치하는 방법은 다운로드 파일 내의 문서에서 확인할 수 있습니다. 설치를 완료한 후에는 OTN_SOA_BI.rpd 리포지토리 파일을 이용하여 사전 정의된 비즈니스 모델을 구현할 수 있습니다.
Order Bookings 데모에 BI 기능 추가하기
지금까지 Easy BI Bridge의 설치 작업을 성공적으로 완료하였습니다. 이제 Easy BI Bridge가 제공하는 기능을 이용하여 비즈니스 애플리케이션과 프로세스에 BI 기능을 추가할 수 있습니다. 여기에서는 Oracle SOA Suite Order Bookings 데모의 일부로 제공되는 비즈니스 프로세스를 수정하여, Oracle Business Intelligence Enterprise Edition Plus가 제공하는 기능을 활용하도록 변경해 보기로 합니다. 이러한 작업 과정에서 Oracle Fusion Middleware의 분석 기능을 기존 프로세스에 적용하는 방법을 배우고, Oracle JDeveloper 10g가 제공하는 웹 서비스, BPEL 기능과 Easy BI Bridge를 매우 쉽게 활용할 수 있음을 확인하게 될 것입니다.
Order Bookings 데모에 대한 개요 정보는 아래 다이어그램에서 확인할 수 있습니다. 이 데모는 Oracle SOA Suite 10.1.3.1.0의 기능을 예시하고 있으며, 웹 인터페이스를 통해 접수되는 주문 처리 과정을 보여 주고 있습니다. 접수된 주문은 Enterprise Service Bus를 통해 BPEL 프로세스로 전송됩니다. BPEL 프로세스는 주문을 등록하고 데이터베이스의 DBAdapter를 통해 고객 정보를 가져옵니다. 고객 상세 정보의 조회가 완료되면, 신용 조회 서비스를 호출하여 고객의 신용 상태를 조회합니다. 고객 주문의 처리여부는 고객의 신용 상태와 주문 금액에 따라 달라집니다.

이를 위해 먼저 Order Bookings SOA Suite 데모를 다운로드, 설치하고 시스템 환경에 맞는 설정 작업을 수행해 주어야 합니다. 그런 다음 Oracle BPEL Console을 통해 주문 처리를 위한 워크플로우를 실행합니다. 본 문서에서는 독자 여러분이 Order Bookings 데모와 Oracle JDeveloper의 BPEL 기능을 기본적으로 이해하고 있으며, Oracle Business Intelligence Enterprise Edition Plus 10.1.3.2, 10.1.3.3에서 제공되는 리포트 작성 컴포넌트인 Oracle Answers를 사용해 본 경험이 있다고 가정하고 있습니다.
본 예제에서는 먼저 데이터베이스에 대한 고객 정보의 조회 작업을 Oracle Business Intelligence Enterprise Edition Plus 리포트 실행 요청으로 대체합니다. 이때 기존의 오라클 데이터베이스 대신 KPI 및 고객 분석 정보를 저장한 데이터 웨어하우스가 사용됩니다. 두 번째로, 외부 신용 정보 기관에 대한 호출 부분을 Oracle Business Intelligence Enterprise Edition Plus를 이용한 호출 작업으로 대체합니다. 이 두 가지 간단한 예제를 통해 Oracle Business Intelligence의 엔터프라이즈 정보 모델로부터 Oracle BI Answers를 이용하여 데이터를 가져오는 프로세스를 구현하는 방법을 배우고, 기존 애플리케이션과 프로세스에 분석 기능을 삽입하는 방법을 익힐 수 있을 것입니다.
Oracle SOA Suite 10.1.3.1.0을 설치한 후 Applications 탭 -> SOAOrderBooking 엔트리 -> SOAOrderBooking.bpel 파일을 사용하여 Order Bookings 데모를 설치, 설정합니다. 파일을 더블 클릭하여 메인 Order Bookings BPEL 프로세스를 엽니다.

BPEL 프로세스는 클라이언트로부터의 호출 작업으로 시작하며, 1차적으로 주문 상세 정보를 데이터베이스에 저장합니다. 그런 다음 BPEL 프로세스의 좌측, 우측에 위치한 일련의 서비스를 사용하여 고객 정보를 데이터베이스에서 가져오고 외부 신용 조회 서비스를 이용하여 고객의 신용 상태를 확인합니다.
신용 조회 서비스 결과와 주문 금액에 따라 주문은 승인, 거부되거나 또는 담당자의 검토가 필요한 항목으로 분류될 수 있습니다.

본 예제에서는 DBAdapter를 통한 데이터베이스 호출을 executeRequest Easy BI 서비스에 대한 호출로 대체하고, CreditValidatingService에 대한 호출을 evaluateCondition Easy BI 서비스에 대한 호출로 대체합니다.
Oracle BI Answers 요청의 실행
가장 첫 번째 작업으로 Order Bookings BPEL 프로세스를 열고 Easy BI Bridge를 파트너 서비스로 등록해야 합니다. 이를 위해 Oracle JDeveloper의 Component Palette을 열고 드롭다운 목록을 사용하여 Services 뷰를 선택한 다음 드래그-앤-드롭 작업을 통해 BPEL 프로세스의 우측 라인에 파트너 서비스를 가져옵니다. Create Partner Link 대화 상자에서 파트너 서비스의 이름을 BusinessIntelligence로 지정하고 Browse WSDL Files from Local File System... 버튼을 눌러 아래 파일을 선택합니다:
\bisoabridge\public_html\WEB-INF\wsdl\BusinessIntelligence.wsdl
이 파일은 앞에서 설치한 Easy BI Bridge 샘플 코드에 포함되어 있습니다.
표시되는 프롬프트를 모두 승인한 뒤 BusinessIntelligence_Role을 'partner role'로 선택합니다. OK를 눌러 Partner Link 정의를 저장합니다. 이것으로 Easy BI Bridge를 등록하고 BPEL 프로세스에서 서비스를 공개하기 위한 절차를 완료했습니다.

파트너 링크를 추가한 다음에는 Component Palette으로 돌아가 드롭다운 목록에서 Process Activities를 선택합니다. 여기에 표시되는 액티비티의 목록은 비즈니스 프로세스에서 실행할 수 있는 액션을 의미합니다. 여기에서는 비즈니스 프로세스에서 특정 웹 서비스를 사용하도록 요구하는 Invoke 액티비티를 선택해야 합니다.
드래그-앤-드롭 작업을 통해 Invoke 액티비티를 비즈니스 프로세스의 기존 GetCustInfo Invoke 액티비티 바로 뒷부분으로 가져옵니다. 나중에 Oracle Business Intelligence Enterprise Edition에 대한 호출이 정상적으로 실행됨을 확인한 뒤에 GetCustInfo Invoke 액티비티와 Assign 액티비티를 제거하게 될 것입니다.

새로운 Invoke 액티비티를 추가한 후 이 액티비티를 BusinessIntelligence 파트너 링크에 연결하고 ExecuteRequest 서비스를 선택합니다.(아래 스크린샷 참조)

Invoke 액티비티의 이름을 GetCustInfoFromBI로 지정하고 Edit Invoke 대화 상자의 Magic Wand 버튼을 사용하여 글로벌 입력/출력 변수를 생성합니다(변수 이름은 디폴트 값을 그대로 사용합니다). 마지막으로 OK를 눌러 액티비티를 저장합니다. 잠시 뒤에 이 입력/출력 변수를 이용하여 Answers 요청에 값을 전달하고 가져오게 될 것입니다.
새로운 액티비티가 추가된 비즈니스 프로세스가 아래와 같습니다.

다음 단계에서는 실행할 Oracle BI Answers 요청의 이름, 그리고 요청에 필요한 매개변수의 이름과 값을 액티비티에 전달해야 합니다. 하지만 이 작업을 수행하기 전에, 먼저 Oracle BI Answers에서 액티비티가 실행할 리포트를 생성해 주어야 합니다. 이 리포트는 고객 ID를 매개변수로 받아들인 후 Microsoft XML Result Set 포맷으로 고객 상세 정보를 반환합니다. 반환된 고객 정보는 비즈니스 프로세스에서 사용되는 변수에 맞도록 변환 처리됩니다.
Oracle BI Answers를 이용하여 아래 그림과 같이 간단한 컬럼 목록을 반환하는 요청을 생성합니다.

다음으로, CUSTID 컬럼에 대해 Presentation Server 변수(디폴트 값 10)를 사용하는 필터를 생성합니다. 마지막으로 리포트를 Web Catalog Shared 영역의 새로운 디렉토리(EasyBI)에 저장합니다.
이제 Order Bookings BPEL 프로세스로 돌아와, Process Activities 리스트를 사용하여 방금 추가한 Invoke 액티비티의 바로 앞에 새로운 Assign 액티비티를 추가합니다. 이 액티비티는 Invoke 액티비티가 요청한 변수를 할당하고 요청의 이름, 매개변수 이름, 매개변수 값 등을 설정합니다. Assign 액티비티를 추가한 다음, 이 액티비티를 더블 클릭하여 편집기를 열고 AssignRequestForBI를 호출한 뒤 Copy From 작업을 사용하여 아래 변수를 할당합니다.
| From |
To |
| Type |
Value |
Type |
Value |
| Expression |
'/Shared/Easy BI/Customer Details' |
Process Variable |
GetCustInfoFromBI_executeRequest_InputVariable /ns32:executeRequestElement/ns32:reportPath |
| Expression |
'CUSTID' |
Process Variable |
GetCustInfoFromBI_executeRequest_InputVariable /ns32:executeRequestElement/ns32:params/ns32:name |
| ProcessVariable |
InputVariable/payload//client:SOAOrderBookingProcessRequest /ns4:PurchaseOrder/ns4:CustID |
Process Variable |
GetCustInfoFromBI_executeRequest_InputVariable /ns32:executeRequestElement/ns32:params/ns32:value |
모든 변수 값을 성공적으로 복사한 뒤의 Edit Invoke 액티비티 대화 상자가 아래와 같습니다.

OK를 눌러 Assign 액티비티를 저장합니다.
다음으로 GetCustInfoFromBI Invoke 액티비티의 바로 뒷부분에 두 번째 Assign 액티비티를 추가하고 이름을 DecodeCustInfo로 설정합니다.(아래 스크린샷 참조).

DecodeCustInfo 액티비티를 더블 클릭하여 액티비티 대화 상자를 엽니다.
Copy Operation 탭을 클릭하고, 대화 상자의 왼쪽에서 Expression을 Type으로 선택한 후 Expression Editor 버턴을 사용하여 아래 표현식을 추가합니다:
ora:parseEscapedXML()
커서를 괄호 기호 사이에 위치시키고 Variable Selector를 사용하여 Oracle BI Answers 요청 출력 변수의 executeRequestResponseElement를 선택합니다:

OK를 눌러 표현식을 저장하고 Copy Operation 대화 상자로 돌아갑니다.
Copy Operation의 To 항목에서 변수를 마우스 오른쪽 버튼으로 클릭하고 다시 Process Variables 노드를 마우스 오른쪽 버튼으로 클릭한 뒤 Create Variable을 선택합니다. 변수 이름을 DecodedResults로 설정하고 변수 타입으로 Element를 선택합니다.

이제 Easy BI Bridge 프로젝트의 rowsets.xsd 파일에 그 스키마가 정의된 커스텀 타입 변수를 생성할 차례입니다. 이 스키마는 아래와 같은 일련의 엘리먼트 타입을 포함하고 있습니다:
<xsd:element name="rowset1" type="rowset1t"/>
<xsd:complexType name="rowset1t">
<xsd:sequence>
<xsd:element name="Row">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Column0" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
스키마를 Order Bookings 프로젝트로 가져오려면 변수 브라우저 Element 필드 옆의 Flashlight 아이콘을 눌러 Type Chooser를 엽니다.(아래 스크린샷 참조)

Type Chooser 대화 상자가 표시되면, 초록색 화살표로 표시된 조직도 모양의 아이콘을 클릭하여 새로운 스키마를 가져옵니다.

이제 Easy BI 프로젝트의 rowsets.xsd 파일(/bisoabridge/public_html/rowsets.xsd)을 검색하고 OK를 눌러 파일을 가져옵니다. 새로운 노드가 Imported Schemas라는 이름의 Type Explorer 트리에 표시됨을 확인할 수 있습니다. 이 트리를 확장하여 전체 엘리먼트를 확인합니다.
여기서 사용되는 XML Schema는 요청 출력을 위한 컬럼들에 대응되는 일련의 엘리먼트를 포함하고 있습니다. 리포트에서는 7가지 컬럼이 반환되므로, Type Chooser 대화 상자가 표시될 때 rowset7 엘리먼트를 선택하도록 합니다.

OK를, 그리고 다시 OK를 누른 다음 BusinessIntelligence 파트너 링크를 선택하여 XSD Schema 파일을 저장합니다. 이제 Copy Operation 대화 상자의 To 영역을 새로운 변수가 제공하는 rowset7 엘리먼트로 설정합니다. 이 작업을 완료한 후의 대화 상자가 아래와 같습니다.

OK를 눌러 Assign 액티비티를 저장합니다. 이제 Oracle BI Answers로부터 출력 변수를 가져와 올바른 XML Schema를 사용하는 "제너릭" 변수로 복사했습니다. 마지막으로 이 변수를 기존 BPEL 프로세스에서 사용하는 프로세스 변수로 복사하여 고객 주문 과정에서 처리될 수 있게 합니다.
각각의 변수 엘리먼트를 순차적으로 복사하는 Assign 액티비티를 별도로 생성하는 대신, Transform 액티비티와 XSL 변환 맵을 이용하여 한 번에 모든 엘리먼트를 변환하도록 합니다.
이를 위해, Component Palette에서 방금 전에 추가한 Assign 액티비티의 바로 뒷부분에 Transform 액티비티를 추가하고 액티비티 이름을 다음과 같이 명명합니다:TransformDecodedtoCVariable
지금까지 구현된 BPEL 프로세스가 아래와 같습니다:

이제 DecodedResults XML 로우셋의 엘리먼트를 올바른 프로세스 변수 엘리먼트로 변환하기 위한 상세 정보를 입력해 주어야 합니다. 이를 위해 Transform 액티비티를 눌러 Transform 대화 상자를 열고 Source and Target 섹션에서 DecodedResults를 소스로, CustomerServiceResponse를 타겟으로 선택합니다.

그런 다음 Create Mapping 버튼을 눌러 두 변수를 서로 매핑시킵니다.
앞에서 생성한 요청의 각 컬럼 정의에 주의하면서, 요청 결과 셋의 각 컬럼을 타겟 엘리먼트로 매핑합니다. 예를 들어 Answers 요청의 Column 0은 CUSTID를 포함하고 있으므로 타겟 영역의 tns:custid 엘리먼트로 매핑되어야 합니다.

다시 기존의 Answers 요청을 참조하여 나머지 로우셋 엘리먼트를 타겟 영역으로 매핑시킵니다.
변환 매핑을 완료한 다음, 작업 내용과 결과로 생성된 .xsl 파일을 저장합니다.
업데이트된 BPEL 프로세스의 적용
이제 수정된 BPEL 프로세스를 적용하고 테스트하기 위한 모든 준비가 완료되었습니다. 아직까지는 고객 상세 정보를 데이터베이스에서 가져오는 코드가 그대로 사용되고 있습니다. 잠시 뒤에 모든 액티비티가 정상적으로 동작함을 확인하고 나면 이 코드를 제거하게 될 것입니다. 아래 수행되는 절차는, 사용자 여러분이 본 예제를 실행하기 전에 Order Bookings 데모를 설치, 적용하고 데모 웹 인터페이스를 통해 주문을 입력해 봄으로써 Order Bookings BPEL 프로세스가 정상적으로 적용되었음을 확인하였다고 가정하고 있습니다. 만일 이 작업을 완료하지 않은 상태라면, 지금 작업해 주시기 바랍니다.
Oracle JDeveloper에서 System Navigator 창의 SOAOrderBooking.jpr 폴더를 확인합니다. 이 폴더에서 build.xml 파일을 마우스 오른쪽 버튼으로 클릭하고 Run Ant를 선택합니다. Properties 탭을 사용하여, Order Bookings 데모를 설치할 때 선택했던 속성 파일이 여전히 선택되어 있는지 확인합니다. 그런 다음 OK를 클릭하여 업데이트된 Order Bookings BPEL 프로세스의 빌드, 설치 작업을 수행합니다.

Apache ANT 로그를 확인하여 빌드, 적용 작업이 성공적으로 완료되었는지 확인합니다(로그 마지막 부분에 BUILD SUCCESSFUL 엔트리를 확인할 수 있어야 합니다). 그런 다음 Oracle BPEL Console과 Order Bookings 웹 클라이언트를 실행하여 수정된 비즈니스 프로세스가 정상적으로 동작하는지 확인합니다.
웹 클라이언트를 사용하여 sking@soademo.org 계정으로 로그인하고 Treo 650 Phone/PDA의 주문을 입력합니다. 이 상품의 가격은 $650이며 수작업 승인 절차를 거치지 않고 Order Bookings 비즈니스 프로세스를 통해 처리됩니다. 주문 입력이 완료되었다면 Oracle BPEL Console을 열고 수정된 SOA Order Bookings BPEL 프로세스의 최근 인스턴스를 확인합니다. 모든 것이 정상적으로 설정되었다면 업데이트된 비즈니스 프로세스에서 Answers 리포트를 호출하여 고객 데이터를 가져올 수 있을 것입니다.

BPEL 프로세스에 추가된 액티비티 중 하나를 클릭하면, 각 액티비티에서 처리되는 데이터를 확인할 수 있습니다. 한 예로, DecodeCustInfo Assign 액티비티를 클릭하면 앞에서 생성한 변수에 Answers 요청의 결과가 로드됨을 확인할 수 있을 것입니다.

이 첫 번째 과정을 성공적으로 완료하였다면, 두 번째 단계로 Easy BI Bridge가 제공하는 또 다른 메소드, 즉 신용 상태의 평가를 위한 메소드를 활용할 수 있습니다.
BI 조건의 평가
고객 데이터를 조회하는 기존 BPEL 프로세스의 바로 뒷부분에서 신용 확인 서비스가 호출되어 고객 신용 카드 정보를 검증합니다. 이제 고객의 신용 정보를 신뢰할 수 있는 경우 로우를 반환하고, 그렇지 않은 경우 아무 것도 반환하지 않는 Answers 요청으로 이 부분을 대체할 수 있습니다. 이러한 접근법을 사용하여 Order Bookings BPEL 프로세스 내의 신용 검증 서비스를 대체하면서, 기존과 동일한 승인/거부 로직을 적용할 수 있습니다.
다시 Oracle JDeveloper로 돌아가 AssignRequest, GetCustInfo 액티비티를 삭제합니다. (이 액티비티들은 BI 기능으로 대체되었습니다.) 지금까지 구현된 BPEL 프로세스가 아래와 같습니다:

이제 Oracle BI Answers에서 사용자의 신용 카드 정보가 올바른 경우 로우를 반환하는 리포트를 생성합니다. 본 아티클과 함께 제공되는 샘플 데이터 셋에 포함된 Customer Attributes 테이블의 Fraud Alert 컬럼을 이용하여 고객의 신용 상태를 결정하게 됩니다. 실제 환경에서는 BI 분석 결과를 고객 신용 평가에 반영하고 수치화 하겠지만, 여기에서는 단순한 Y, N 값만을 반환하는 간단한 컬럼을 사용하기로 합니다. 아래 그림에서처럼 이 값에 대해 필터를 생성합니다. Presentation Server 변수를 이용하여 Customer ID 매개변수를 생성하고 비즈니스 프로세스의 다른 요청과 동일한 Web Catalog 디렉토리에 요청을 저장합니다.

다시 Oracle JDeveloper로 돌아가 Component Palette를 사용하여 InvokeCreditService 액티비티의 바로 뒷부분에 새로운 Invoke 액티비티를 추가하고 BusinessIntelligence 파트너 서비스에 링크한 후 액티비티의 이름을 InvokeCreditServiceFromBI로 명명합니다. evaluateCondition 서비스를 선택하고 Magic Wand 버튼을 사용하여 디폴트 값을 사용하는 2개의 글로벌 변수를 생성합니다.

위에서와 동일한 절차를 사용하여 새로운 Invoke 액티비티의 앞에 Assign 액티비티를 추가합니다. 이 액티비티는 InvokeCreditServiceFromBI 입력 변수에 고객의 ID, 변수 이름, 리포트 이름을 할당하기 위해 사용됩니다.

지금까지 수정된 BPEL 프로세스를 아래 스크린샷에서 확인할 수 있습니다. 이번에도 새로운 로직이 정상적으로 동작함을 확인할 때까지 기존의 Assign, Invoke 액티비티를 삭제하지 않기로 합니다.

요청이 호출된 바로 직후에 액티비티를 확인하면 이 액티비티가 스위치(switch) 액티비티임을 바로 확인할 수 있습니다. 엔트리 바로 옆의 Edit 링크를 클릭하면 기존의 신용 조회 서비스로부터 반환되는 값을 확인하는 것이 가능합니다.

조건부 표현식의 우측 상단에 위치한 Edit 링크를 클릭하면, evaluateCondition Invoke 액티비티로부터 반환된 값을 대신 사용하도록 조건을 수정할 수 있습니다.

이제 비즈니스 프로세스를 저장/재적용하고, 신용 확인 절차를 성공적으로 통과할 수 없는 고객의 계정으로 주문을 입력합니다. 그런 다음 BPEL Control 애플리케이션을 사용하여 변경된 내용이 성공적으로 적용되었는지 확인합니다. 신용 평가 과정을 통과할 수 없는 고객에 대해 Answers 웹 서비스는 "False" 응답을 반환하고 프로세스는 실패하게 됩니다(아래 그림 참조).

새로운 InvokeCreditServiceFromBI Invoke 액티비티를 클릭해 보면 조건이 성공적으로 평가되었고 "False"가 반환되었음을 확인할 수 있습니다.

이것으로 예제의 실행 과정을 모두 완료하였습니다. 이제 Oracle JDeveloper로 돌아가 기존의 신용 조회 서비스에 대한 참조 부분을 제거하고, 추가적인 Oracle BI Answers 요청을 통해 데이터 셋, 또는 개별 데이터 엘리먼트를 조회하거나, invokeIbot 서비스를 이용한 리포트 배포, 경고 설정 기능을 구현할 수 있습니다.
요약
본 문서를 통해 Oracle Business Intelligence Enterprise Edition Plus의 웹 서비스 SOAP 인터페이스가 제공하는 몇 가지 가능성에 대해 배워 볼 수 있었습니다. 예제에서 Easy BI Bridge 샘플 코드를 이용하여 기존 비즈니스 프로세스를 데이터 웨어하우스에 대한 조회 작업으로 대체하고, Oracle BI Answers 요청 결과를 바탕으로 조건부 표현식을 평가하는 과정을 구현해 보았습니다.
이러한 방식으로 표준 기반 인터페이스를 활용함으로써 오라클 BI 툴이 제공하는 데이터 통합, 분석, 메타데이터 기능을 기존 애플리케이션, 비즈니스 프로세스에 접목시킬 수 있습니다. 이러한 모든 작업은 호출 애플리케이션의 관점에서 투명하게 수행됩니다. Easy BI Bridge 샘플 코드와 Oracle Business Intelligence Enterprise Edition Plus의 SOAP 인터페이스에 대한 자세한 정보는 Easy BI Bridge 다운로드에 포함된 문서와 OTN 제품 문서를 통해 확인하실 수 있습니다.
Mark Rittman은 오라클 ACE 디렉터이자 영국에 본사를 둔 BI, 데이터 웨어하우징 전문 컨설팅 업체 Rittman Mead Consulting의 창설자입니다. 그는 영국 오라클 사용자 그룹 비즈니스 인텔리전스/리포팅 SIG 회장, ODTUG BI&DW SIG 부회장을 역임하고 있으며 개인 블로그(www.rittmanmead.com/blog)를 운영하고 있습니다.
Joel Crisp는 오라클의 Oracle Business Intelligence Suite 부문 수석 엔지니어입니다. British Computer Society(BCS)의 공인 IT 전문가인 조엘은 미국 Trilogy사와 Sun Microsystems 프로세셔널 서비스 부문 자바 아키텍트로 근무한 경력을 가지고 있습니다. |