Chapter 8 - Adding Fulfillment

Posted at 2010. 3. 2. 16:55 | Posted in Oracle Solution/PO Processing
Introduction

배송을 처리하는 BPEL Process 와 Business Rule 를 추가하여 봅시다.

1000원 이하는 USPS, 1000~5000원은 UPS, 5000원 초과는 FedEx 로 배송 처리합니다.



Add a BPEL Process and a Business Rule


BPEL Process 를 Components 영역에 추가합니다.




Name : FulfillmentProcess
Template: Asynchronous BPEL Process
Service Name : fulfillmentprocess_client
Expose as a SOAP service 체크 해제

Input 오른쪽의 찾기 버튼 클릭




Import 클릭






파일을 불러옵니다.






Fufillment 를 선택합니다.




Output 은 CarrierSelection 를 선택합니다.




Input 과 Output 확인 후 OK 클릭




Business Rule 컴포넌트를 Components 영역에 추가합니다.




Genral 탭에서

Name : FulfillmentRules
Package : fulfillmentrules

Input 을 추가합니다.




Fulfillment를 선택합니다.




이어서 Output을 추가합니다.




CarrierSelection을 선택합니다.



Advanced 탭에서 Service Name에 OracleRulesFulfillment 입력 후 OK를 클릭합니다.



approveLargeOrder와 FulfillmentProcess를 연결합니다.




FulfillmentProcess와 FulfillmentRules를 연결합니다.





Define the Business Rule

FulfillmentRules(Business Rule) 컴포넌트를 더블클릭하여 편집합니다.





왼쪽 메뉴에서 Bucketsets을 클릭합니다.



List of Ranges 를 추가합니다.



아이콘을 더블클릭하여 편집창을 띄웁니다.



Name은 OrderTotal, Data Type는 double 선택. 녹색 플러스 버튼을 클릭하여 아래와 같이 입력합니다.



왼쪽 메뉴에서 Facts를 클릭 한 후, 목록에서 FulfillmentType을 수정합니다.



total의 Bucketset을 OrderTotal로 설정합니다.



왼쪽 메뉴에서 Ruleset_1을 선택 후 Create Decision Table을 클릭합니다.



<insert condition> 부분을 클릭합니다.



<edit condition> 부분을 더블 클릭하고 FulfillmentType.total을 선택합니다.



R1 셀을 클릭 후 small을 선택합니다.



Rule을 추가합니다.



R2 셀에 large,를 선택합니다.

다시 Rule 추가 후 R3 셀에 xtralarge를 선택합니다.



Actions 부분에 Assert를 추가합니다.



assert new를 더블 클릭합니다.




Facts는 CarrierSelection을 선택하고 Parameterized를 체크합니다. 그리고 Always Selected를 체크합니다.

OK를 클릭합니다.



small의 액션에 CarrierValue.UPS를 선택합니다.



large에는 CarrierValue.UPS, xtralarge는 CarrierValue.FED_EX를 선택합니다.





Define the BPEL Process

FulfillmentProcess(BPEL Process)를 더블 클릭해서 편집합니다.



Business Rule
액티브를 추가합니다.



이름은 FulfillmentProcess를 입력, Dictionary는 FilfillmentRules를 선택합니다.

Assign Input Facts 탭에서 Assign을 추가합니다.



아래와 같이 선택합니다.



Assign Output Facts 탭에서 Assign을 생성합니다.





OK를 클릭합니다.





Invoke FulfillmentProcess

approveLargeOrder(BPEL Process를 더블 클릭합니다.



Invoke 액티브를 ManualPOApproval_1이 있는 Switch 액티브 아래에 추가합니다.



추가한 Invoke 액티브와 FufillmentProcess(BPEL Process) 컴포넌트와 연결합니다.

Name : Invoke_Fulfillment

Input Variable을 기본 이름으로 추가합니다.



Transform 액티브를 Invoke_Fulfillment 액티브 위에 추가합니다.



추가한 Transform 액티브를 더블 클릭하여 편집합니다.



Source Variable 은 inputVariablepayload를 선택합니다.



Target Variable은 Invoke_Fulfillment_process_InputVariablepayload를 선택합니다.

Create Mapping 버튼을 클릭합니다.



customerIdorderId를 매핑합니다.



Mathematical Functions - multiply 을 가운데 영역에 추가합니다.

그리고 priceqty를 추가한 multiply과 연결하고, totalmultiply과 연결합니다.



Switch 액티브를 Invoke_Fulfillment 액티브 바로 액티브 아래에 추가합니다.



Sequence 액티브를 Switch 액티브의 <case> 영역 안에 추가합니다.



Transform_1을 추가한 Sequence 안으로 옮깁니다.



Invoke_Fulfillment를 Sequence안 Transform_1 아래로 옮깁니다.



<case>의 조건을 아래와 같이 설정합니다. (XPath Expression Builder 를 이용하세요)



<other wish> 부분은 삭제합니다.





routePO를 더블 클릭하여 수정합니다.



static routing rule을 추가합니다.



Service 클릭



타겟 서비스를 선택합니다.



맵핑을 선택합니다.



맵핑파일을 생성합니다.



아래와 같이 맵핑 합니다.



Mediator 설정에서 FulfillmentProcess로 가는 조건을 추가합니다.





모두 저장합니다~ 완성되었습니다.





Deploying and testing the application

테스트를 해보면 배송 처리가 된 것을 확인할 수 있습니다.







tag: , ,

댓글 (Comment)

Name*

Password*

Link (Your Website)

Comment

SECRET | 비밀글로 남기기