반응형
Introduction

BPEL 로 만들어진 "POProcessing"에 OSB를 연동하는 연습해 보겠습니다.

아래와 그림과 같이 두개의 서비스(Composite)이 있습니다.

"POProcess" 서비스로 주문 요청이 들어왔을때 일정 가격 이상이면 "CreditCardValidation" 서비스에 카드상태를 조회하는 흐름입니다.



OSB를 이용하여 "POProcessing"에서 "CreditCardValidation"를 직접 부르지 않고, OSB를 거쳐가는 흐름으로 바꿔보겠습니다.




Prerequisites

완성된 "POProcessing"을 가져다가 사용해야 하기 때문에 정상적으로 돌아가려면 JMS Moudle, DataSouce 를 설정해야 합니다.

설정하는 방법은 여기를 참조하세요. (암호: 0le0kype)

※ WebLogic 10.3.4 에서 데이타소스 설정 부분이 조금 바꼈습니다. 처음 생성할 때 "Geneirc Data Source" 을 선택합니다.



※ soademoDatabase 만들 때 타겟을 admin 과 soa_server1 두개 다 선택해 주세요.


POProcessing 를 만들어보려면 여기를 보세요.



Setup and Deploy Composites


일단 Jdeveloper에 서버(SOA+OSB)를 등록합시다.

FIle - New 또는 아래와 같이 선택합니다.


"Connections" 카테고리에서 "Application Server Connection"을 선택합니다.


계정과 비밀번호 입력.


서버의 주소와 포트 도메인명 입력.


"Test Connection" 버튼을 클릭해서 아래와 같이 모두 "success"가 나와야 하겠습니다.


등록 완료.



Resource Palette 에서 확인해보면 등록이 되어있습니다.


※ 만약 리소스 팔레트가 보이지 않으면 메뉴에서 View - Resource Palette




아래 3개의 SOA Composite 을 불러와서 서버에 배치(Deploy)해야 합니다.
    1. POProcessing - 주문을 받아서 마지막에 배송정보를 JMS에 주문을 등록.
    2. CreditCardValidation - POProcessing 에 요청된 주문이 일정 가겨 이상이면 카드 상태 조회
    3. ConsumeJMSFulfillmentApp - JMS 에 등록된 배송 정보를 뽑아내서 파일로 등록

Application 메뉴에서 "Open Application"을 선택합니다.



POProcessing.jws 파일을 불러옵니다.


예전 버전에서 만들어진거라고 최신꺼에 맞게 마이그레이션 한다고 합니다. Yes 클릭.


"POProcessing" 어플리케이션 안에 "ApproveTaskDetails", "POProcessing" 프로젝트 두개가 들어 있습니다.

"ApproveTaskDetails" 프로젝트는 "POProcessing" 프로젝트의 흐름에서 사용자에게 승인을 받는 Human Task 에서 사용하는 화면인 ADF 프로젝트입니다. (자동 생성 된것 -_-)

근데 이것이 마이그레이션이 제대로 안되서 배치하려고 하면 에러를 뿜습니다.

그래서 저 ADF 프로젝트는 삭제 후 다시 생성하겠습니다.


실제 파일까지 삭제합니다.


POProcessing 프로젝트의 composite.xml 파일을 열어 편집합니다.



ManualPOApproval (Human Task) 컴포넌트를 더블클릭하여 수정합니다.



편집창 상단에 Create Form - Auto-Generate Task Form 선택.



프로젝트명 설정 후 확인.


아래와 같이 화면이 자동으로 생성됩니다.


프로젝트도 생성되었습니다.



다시 POProcessing 프로젝트의 composite.xml 편집창으로 와서 WriteApprovalResults(File Adapter) 컴포넌트를 수정합니다.



Next로 넘기다가 5단계(Step 5)에서 파일이 저장될 위치를 적절히 설정합니다.



getStatusByCC.wsdl 파일을 편집해야 합니다.

파일을 더블클릭해서 연 후 편집창 아래쪽 Source 탭을 선택한 후 아래와 같이 soa_server의 포트로 바꿔줍니다.


모두 저장 후 서버에 배치(Deploy) 합니다.

POProcessing 프로젝트에서 마우스 오른쪽 버튼 클릭 - Deploy - POProcessing...


Deploy yo Application Server (기본 선택) 선택 후 Next


Overwrite 선택 후 Next. (당장은 처음 올리는 것이기 때문에 체크 안해도 됨)



아래와 같이 연관된 프로젝트도 같이 배치합니다.


배치할 서버를 선택합니다.


배치할 서버내의 파티션을 선택합니다.

11.1.1.3.0 부터는 파티션이라는 것이 생겨서 그룹(?)을 나눌 수 있습니다.


배치 ㄱㄱ



CreditCardValidation.jws 파일(Application 파일)을 불러옵니다.



getCreditValidation (Dataase Adapter) 컴포넌트를 수정합니다.



커넥션 정보가 없기때문에 에러가 날 것입니다. 일단 OK


상단에 Connection이 비어있습니다. 추가 버튼 클릭



아래와 같이 적절한 정보를 입력합니다.



아래에 JNDI Name 을 입력합니다.

※ 서버에 배치된 조합 인스턴스에서 실제로 사용되는 자원은 저 JNDI Name을 룩업(Lookup)합니다. 중요!!!


모두 저장 후 배치합니다.

ConsumeJMSFulfillmentApp.jws 파일을 불러 온 후 WriteFileFulfillmentMessage (File Adapter) 컴포넌트를 편집합니다.



5단계에서 저장될 위치를 적절히 수정합니다.


모두 저장 후 배치합니다.

배치한 조합이 잘 작동하는지 확인 해봅시다.

EM에 접속해서 아래와 같이validationForCC(CreditCardValidation) 조합을 선택 후 상단에 "Test" 버튼 클릭.


CCNumber 에 "1234-1234-1234-1234" 를 입력 후 "Test Web Service" 버튼을 클릭.



아래와 같이 응답이 "VALID" 로 나와야 정상입니다.




Configure Service Bus

이제부터 OSB(Oracle Service Bus)를 사용하게 됩니다.

osb console 로 접속합니다.

왼쪽 상단에 Change Center 박스 안에 "Create" 버튼을 클릭합니다.

OSB 에서 하나의 작업 단위(Session)를 관리합니다. 나중에 이 작업을 롤백할 수도 있고 한답니다.

(원문: Click Create button in left hand corner of screen to start a new session. In OSB, all changes are done
in a sandbox called a session. You first create the sandbox by creating a session in the change center.
After a set of related changes are done, you deploy all the changes in the session as a unit by clicking
Activate in Change Center.)



다 수정한 후에는 다시 "Activate" 버튼을 클릭하여 수정 사항을 적용시켜야 합니다.



먼저 왼쪽 하단의 메뉴중 "System Administration" 을 선택합니다.



Import Resources 를 클릭 후 (기본 선택됨) "chap-1-starting-sbconfig.jar" 파일을 임포트합니다.



"Import" 버튼을 클릭합니다.


"Active" 버튼을 클릭해서 수정사항을 반영합니다.


어떤 작업을 했는지 설명을 남길 수 있군요.. Submit


"Project Explorer"를 선택합니다.



세션을 생성하고 "Credit_Services" 프로젝트를 선택합니다.


"ProxyServices" 폴더를 생성합니다.


"Resources" 폴더도 생성합니다.



"Resources" 폴더를 선택합니다.



Create Resource 콤보를 클릭 후 "Resources from URL" 을 선택합니다.



서비스의 WSDL URL 을 알아야 하는데 이 주소는 아래 그림과 같이 EM에서 확인 할 수 있습니다.



알아낸 주소를 "URL/Path"에 입력하고 Resource Name을 입력 후 Next.


Import 버튼을 클릭.

 

"BusinessServices" 폴더를 선택합니다.


"Business Service"를 생성합니다.



"Service Name" 입력 후 WSDL "Web Service" 오른쪽의 Browse 버튼을 클릭합니다.



"ValidateCredit_WSDL"을 클릭합니다.


Ports 아래에 있는 "execute_pt"를 선택합니다.


Last 버튼을 클릭합니다.


아래쪽의 Save 버튼을 클릭합니다.


다시 Project Explorer - Credit_Services - BusinessServices 까지 이동합니다.



"Operational Settings" 탭을 선택합니다.


"Monitoring" 부분에 모니터링을 활성화 시키고 주기는 25분으로 설정후 Update 버튼을 클릭합니다.



수정사항을 반영합니다.



작업 내용 입력!



등록한 Business Service 가 동작하는지 테스트 해봅시다.


CCNumber 태그 안에 카드 번호(1234-1234-1234-1234)를 입력후 "Execute" 버튼을 클릭.


아래와 같이 결과가 잘 나와야 합니다. ㅎㅎ



다시 세션을 활성화 시킨 후 Project Explorer - Credit_Services - ProxyServices 까지 이동 후 "Proxy Service"를 생성합니다.


Service Name 입력 후 Business Service 오른쪽의 Browse 버튼을 클릭합니다.
 


"validationForCC" 를 선택 후 Submit 버튼을 클릭합니다.


Last 버튼을 클릭합니다.


Save 버튼을 클릭합니다.


Activate 버튼을 클릭하여 변경사항을 적용합니다.

이제 이 프록시 서비스가 작동하는지 테스트 해봅시다.


"1234-1234-1234-1234" 입력 후 Execute 버튼 클릭.


정상적으로 나왔습니다.


세션을 활성화 시킨 후 Project Expoloer - Credit_Services - ProxtServies 까지 이동합니다.

ValidateCredit 프록시 서비스의 메세지 흐름(Message Flow)을 수정합니다.



메세지 흐름 편집 화면입니다.

ValidateCredit 클릭 - Add Pipeline Pair 선택
 


아래와 같이 흐름이 추가되었습니다.

Request Pipeline 클릭 - Add Stage 선택


추가된 stage1 클릭 - Edit Stage 선택



Stage 편집 화면에서 "Add an Action" 클릭 - Reporting - Report 선택



아래와 같이 Report 액션이 추가된 것을 볼 수 있습니다.

<Expression> 을 클릭합니다.


textarea 에 $body 입력 후 Save 버튼을 클릭합니다.


"Add a Key" 를 클릭합니다.



Key Name에 "CCNumber"를 입력하고 <XPath> 를 클릭합니다.



변수를 찾아서 입력하는 방법을 이용해봅시다.

화면 왼쪽 아래의 "Variable Structure" 를 클릭합니다.


Select Structure 콤보 선택 - body 선택


CCNumber 를 선택하면 아래쪽 Prperty Inspector 부분에 XPath가 나옵니다.

저 부분을 드래그로 선택 후 "Copy Property"를 클릭하면 textarea에 붙여넣기가 됩니다.


variable 은 "body"를 입력합니다.



Action 하나를 더 추가해야합니다.

Report 아이콘 클릭 - Add an Action - Message Processing - Validate 선택



<XPath> 는 "./*"(쩜슬래쉬별)을 입력, variable은 "body" 입력, <Resource> 를 클릭합니다.



"XMLSchema_1437688841" 을 선택합니다.


Elements 아래의 "creditcardStatusRequest" 를 선택 후 Submit 버튼을 클릭합니다.


Save 버튼을 클릭합니다.


ValidateCredit 클릭 - Add Service Error Handler 선택



Error Handler 클릭 - Add Stage 선택



추가된 stage 클릭 - Edit Stage 선택




"Add an Action" 클릭 - Reporting - Alert 선택



아래와 같이 설정 후 Save 버튼을 클릭합니다.



Save All 버튼을 클릭합니다.


Activate 버튼을 클릭하여 변경 내용을 적용시킵니다.



Re-wrie POProcessing Composite

JDeveloper로 돌아와서 POProcessing 프로젝트를 수정(compsite.xml)합니다.

getCreditCardStatus (Web Service) 컴포넌트를 수정합니다.



WSDL URL 오른쪽의 "find existing WSDLs" 버튼을 클릭합니다.



상단의 콤보를 "Resource Palette" 로 변경 후 아래와 같이 선택합니다.



WSDL URL 이 변경되었습니다.



다시 배치(Deploy) 합니다.



ApproveTaskDetails 프로젝트는 배치 안해도 됩니다.





Test the end-to-end application

이제 정상적으로 "POProcessing - OSB - CreditCardValidation" 으로 처리가 되는지 테스트 해봅시다.

EM에 접속해서 "POProcessing"을 테스트합니다. 데이터는 아래와 같습니다.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body xmlns:ns1="http://xmlns.oracle.com/ns/order">
        <ns1:PurchaseOrder>
            <ns1:CustID>1111</ns1:CustID>
            <ns1:ID>2222</ns1:ID>
            <ns1:productName>iPod shuffle</ns1:productName>
            <ns1:itemType>Electronics</ns1:itemType>
            <ns1:price>145</ns1:price>
            <ns1:quantity>30</ns1:quantity>
            <ns1:status>Initial</ns1:status>
            <ns1:ccType>Mastercard</ns1:ccType>
            <ns1:ccNumber>1234-1234-1234-1234</ns1:ccNumber>
        </ns1:PurchaseOrder>
    </soap:Body>
</soap:Envelope>
데이터 입력 후 "Test Web Service" 버튼을 클릭합니다.


음.. 처리하는데 0.9초 걸렸다네요.. "Launch Flow Trace" 버튼을 클릭합니다.



"approveLageOrder" BPEL 컴포넌트에서 - getStatusByCC(CreditCardValidtaion) 서비스를 호출한 것을 확인할 수 있습니다.




"approveLargeOrder" 를 클릭하면, BPEL 흐름을 볼 수 있습니다.



이제 정상적으로 OSB를 거쳐갔는지 확인해봅시다.

osb console 메인 화면에서 "Message Reports" 를 선택합니다.


아래쪽에 보면 입력받은 메세지가 남아있는 것을 확인할 수 있습니다.




반응형
//