반응형
Introduction
Business Rule 컴포넌트를 이용하여 5000원이 넘는 주문만 휴먼테스크를 이용해 처리하고 5000~1000의 주문이면 그냥 카드상태만 체크하게 변경해봅시다~
이렇게 규칙(?)을 때로 빼놓으면 나중에 7,500원이 넘는 결제를 휴먼테스크로 처리하고 싶으면 Business Rule 컴포넌트만 변경하면 되지 편하겠네용용~
Adding a Bussiness Rule to POProcessing
비지니스 룰(Business Rule) 컴포넌트를 Components 영역에 드래그 앤 드랍 합니다.
Name : ManualApproval
Input 추가
Import 클릭 - 아래 파일을 임포트(import) 합니다.
price를 선택합니다.
이번에는 Output을 추가 합니다.
discountandshipping 선택
OK 클릭
ManualApproval(Business Rule) 더블클릭
Ruleset_1 에서 Create 버튼 클릭
아래 Rule_1 이 추가 되는데 IF 부분에 <insert test> 클릭
클릭 하면 <operand> == <operand> 가 나오는데 앞의 <operand> 클릭 후 price 선택
== 부분 클릭 후 <= 선택
마지막 오른쪽 <operand> 클릭 후 5000 입력
THEN 아래 부분의 <insert action> 클릭 후 assert new 클릭
assert new <target> 가 생기고 <target> 클릭 후 discountandshipping 선택
<add property> 클릭
Value를 아래 그림과 같이 바꿔 줍니다.
Rule 를 하나 더 추가 합니다.
IF
price.price < 5000
THEN
.........
2개의 Rule 만들어졌습니다.
저장 후 Business Rule 편집창을 닫습니다.
approveLargeOrder(BPEL Process)를 더블 클릭해서 편집 합니다.
구조 팔레트(Structure palette) 부분에서 Variables - Process - Variables를 선택합니다.
선택 되어있는 상태에서 + 버튼(Create An Object of The Selected Node Type)을 클릭합니다.
Name: approvalRequired
엘리먼트(Element) 선택 후, 오른쪽의 찾기(Browse) 버튼 클릭
OrderBookingDiscount.xsd - discountandshipping 선택
OK 클릭
Business Rule 액티브를 ManualPOApproval_1 위에 드래그 앤 드랍 합니다.
Name : ApprovalRule
Dictionary : ManualApproval
Assign Input Facts 탭에서 추가(Create) 버튼 클릭
아래와 같이 입력 합니다. (빌더를 이용하셔요~)
Assign Output Facts 탭에서 추가(Create) 버튼 클릭
아래와 같이 선택합니다.
OK 클릭
추가된 ApprovalRule(Business Rule) 아래에 스위치(Switch) 액티브를 추가합니다.
추가된 스위치의 <case> 영역에 시퀀스(Sequence) 액티브를 추가합니다.
ManualPOApproval_1 액티브를 스위치 <case>의 시퀀스 액티브 안으로 옮깁니다.
taskSwitch 도 마찬가지로 이동
<case> 조건을 설정합니다.
Xpath Builder 클릭
bpws:getVariableData('approvalRequired','/ns5:discountandshipping/ns5:approvalRequired') = 'true'
<otherwise> 영역에 Assign 액티브를 추가합니다.
Assign_1 더블 클릭
General 탭에서
Name : AutoApproved
Copy Operation 탭에서 값을 세팅합니다.
'approved' 를 outputVariable - status 에 입력합니다.
OK 클릭
모두 저장합니다.
Deploying and Running the application
주문가격(price * quantity)이 5,000원 이상인 주문을 테스트 해봅시다~
ManualPOApproval(Human Task)에서 실행 중 상태입니다.
BPEL Process(approveLargeOrder)를 조금 자세히 보자면 아래와 같습니다.
BPM 작업 목록에서 확인해보면 주문이 하나 올라와있습니다. 승인 처리 해봅시다.
모든 처리가 완료 되었습니다.
Write 된 파일입니다.
1,000 ~ 4,999원의 주문은 그냥 카드 상태만 검사합니다.
ManualPOApproval(Human Task)을 타지 않았습니다.
Business Rule 이후에 approvalRequired 변수가 false로 갱신되었습니다.
1,000원 미만의 주문은 패스... 직접 해보세요~
Business Rule 컴포넌트를 이용하여 5000원이 넘는 주문만 휴먼테스크를 이용해 처리하고 5000~1000의 주문이면 그냥 카드상태만 체크하게 변경해봅시다~
이렇게 규칙(?)을 때로 빼놓으면 나중에 7,500원이 넘는 결제를 휴먼테스크로 처리하고 싶으면 Business Rule 컴포넌트만 변경하면 되지 편하겠네용용~
Adding a Bussiness Rule to POProcessing
비지니스 룰(Business Rule) 컴포넌트를 Components 영역에 드래그 앤 드랍 합니다.
Name : ManualApproval
Input 추가
Import 클릭 - 아래 파일을 임포트(import) 합니다.
price를 선택합니다.
이번에는 Output을 추가 합니다.
discountandshipping 선택
OK 클릭
ManualApproval(Business Rule) 더블클릭
Ruleset_1 에서 Create 버튼 클릭
아래 Rule_1 이 추가 되는데 IF 부분에 <insert test> 클릭
클릭 하면 <operand> == <operand> 가 나오는데 앞의 <operand> 클릭 후 price 선택
== 부분 클릭 후 <= 선택
마지막 오른쪽 <operand> 클릭 후 5000 입력
THEN 아래 부분의 <insert action> 클릭 후 assert new 클릭
assert new <target> 가 생기고 <target> 클릭 후 discountandshipping 선택
<add property> 클릭
Value를 아래 그림과 같이 바꿔 줍니다.
Rule 를 하나 더 추가 합니다.
IF
price.price < 5000
THEN
.........
2개의 Rule 만들어졌습니다.
저장 후 Business Rule 편집창을 닫습니다.
approveLargeOrder(BPEL Process)를 더블 클릭해서 편집 합니다.
구조 팔레트(Structure palette) 부분에서 Variables - Process - Variables를 선택합니다.
선택 되어있는 상태에서 + 버튼(Create An Object of The Selected Node Type)을 클릭합니다.
Name: approvalRequired
엘리먼트(Element) 선택 후, 오른쪽의 찾기(Browse) 버튼 클릭
OrderBookingDiscount.xsd - discountandshipping 선택
OK 클릭
Business Rule 액티브를 ManualPOApproval_1 위에 드래그 앤 드랍 합니다.
Name : ApprovalRule
Dictionary : ManualApproval
Assign Input Facts 탭에서 추가(Create) 버튼 클릭
아래와 같이 입력 합니다. (빌더를 이용하셔요~)
Assign Output Facts 탭에서 추가(Create) 버튼 클릭
아래와 같이 선택합니다.
OK 클릭
추가된 ApprovalRule(Business Rule) 아래에 스위치(Switch) 액티브를 추가합니다.
추가된 스위치의 <case> 영역에 시퀀스(Sequence) 액티브를 추가합니다.
ManualPOApproval_1 액티브를 스위치 <case>의 시퀀스 액티브 안으로 옮깁니다.
taskSwitch 도 마찬가지로 이동
<case> 조건을 설정합니다.
Xpath Builder 클릭
bpws:getVariableData('approvalRequired','/ns5:discountandshipping/ns5:approvalRequired') = 'true'
<otherwise> 영역에 Assign 액티브를 추가합니다.
Assign_1 더블 클릭
General 탭에서
Name : AutoApproved
Copy Operation 탭에서 값을 세팅합니다.
'approved' 를 outputVariable - status 에 입력합니다.
OK 클릭
모두 저장합니다.
Deploying and Running the application
주문가격(price * quantity)이 5,000원 이상인 주문을 테스트 해봅시다~
<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>1212</ns1:ID>
<ns1:productName>HD TV</ns1:productName>
<ns1:itemType>Electronics</ns1:itemType>
<ns1:price>2250</ns1:price>
<ns1:quantity>10</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>
<soap:Body xmlns:ns1="http://xmlns.oracle.com/ns/order">
<ns1:PurchaseOrder>
<ns1:CustID>1111</ns1:CustID>
<ns1:ID>1212</ns1:ID>
<ns1:productName>HD TV</ns1:productName>
<ns1:itemType>Electronics</ns1:itemType>
<ns1:price>2250</ns1:price>
<ns1:quantity>10</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>
ManualPOApproval(Human Task)에서 실행 중 상태입니다.
BPEL Process(approveLargeOrder)를 조금 자세히 보자면 아래와 같습니다.
BPM 작업 목록에서 확인해보면 주문이 하나 올라와있습니다. 승인 처리 해봅시다.
모든 처리가 완료 되었습니다.
Write 된 파일입니다.
1,000 ~ 4,999원의 주문은 그냥 카드 상태만 검사합니다.
<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>
<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>
ManualPOApproval(Human Task)을 타지 않았습니다.
Business Rule 이후에 approvalRequired 변수가 false로 갱신되었습니다.
1,000원 미만의 주문은 패스... 직접 해보세요~
<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>2121</ns1:ID>
<ns1:productName>Bluetooth Headset</ns1:productName>
<ns1:itemType>Electronics</ns1:itemType>
<ns1:price>49.99</ns1:price>
<ns1:quantity>1</ns1:quantity>
<ns1:status>Initial</ns1:status>
<ns1:ccType>Mastercard</ns1:ccType>
<ns1:ccNumber>8765-8765-8765-8765</ns1:ccNumber>
</ns1:PurchaseOrder>
</soap:Body>
</soap:Envelope>
<soap:Body xmlns:ns1="http://xmlns.oracle.com/ns/order">
<ns1:PurchaseOrder>
<ns1:CustID>1111</ns1:CustID>
<ns1:ID>2121</ns1:ID>
<ns1:productName>Bluetooth Headset</ns1:productName>
<ns1:itemType>Electronics</ns1:itemType>
<ns1:price>49.99</ns1:price>
<ns1:quantity>1</ns1:quantity>
<ns1:status>Initial</ns1:status>
<ns1:ccType>Mastercard</ns1:ccType>
<ns1:ccNumber>8765-8765-8765-8765</ns1:ccNumber>
</ns1:PurchaseOrder>
</soap:Body>
</soap:Envelope>
반응형
'Oracle Solution > PO Processing' 카테고리의 다른 글
Chapter D - Fault Handling (0) | 2010.08.12 |
---|---|
Chapter C - Unit Testing (0) | 2010.03.02 |
Chapter B - Managing the lifecycle of a SOA composite application (0) | 2010.03.02 |
Chapter 9 - Adding JMS to Fulfillment (0) | 2010.03.02 |
Chapter 8 - Adding Fulfillment (0) | 2010.03.02 |
Chapter 6 - Modifying the Mediator (0) | 2010.02.10 |
Chapter 5 - Adding Human Workflow (0) | 2010.02.05 |
Chapter 4 - BPEL Orchestration (0) | 2010.02.04 |
Chapter 3 - Creating the Purchase Order Routing Service (0) | 2010.02.03 |
Chapter 2 - Creating the Credit Card Validation Service (1) | 2010.02.03 |