Oracle® BPEL Process Manager Order Booking Tutorial
10g Release 2 (10.1.2) B15813-02 |
|
Previous |
Next |
This chapter of the tutorial describes how to build parallel flow logic to call another asynchronous service for receiving a supplier price.
This chapter contains the following topics:
This phase of the tutorial adds to the OrderBooking process you designed in Chapter 3, "Invoking an Asynchronous Service". Ensure that you have successfully completed that phase before performing this one. In this phase of the tutorial, you build parallel flow logic to call the asynchronous BPEL process to receive supplier prices from two services for a client order. You perform the following key tasks:
Create a partner link to interact with a second asynchronous service (Select Manufacturing).
Design parallel flow logic to call the two services (Rapid Distributors and Select Manufacturing).
Design the BPEL process to invoke the Select Manufacturing service.
Deploy the BPEL process.
Run the deployed BPEL process from Oracle BPEL Console by completing and submitting an order form that is sent in parallel to the Rapid Distributors service and the Select Manufacturing service.
Access the Select Manufacturing URL to manually submit a supplier price (the Rapid Distributors price is automated).
Wait for both services to return price results.
Review the supplier prices returned from the Rapid Distributors service and the Select Manufacturing service.
This section contains the following tasks:
The Select Manufacturing service was automatically started when you started the Rapid Distributors service in "Starting and Testing Your Services". If the Select Manufacturing service is not currently running, see that section for instructions on starting it.
Access the Select Manufacturing user application using Internet Explorer or Mozilla Firefox to see if it is deployed:
http://localhost:9700/SelectManufacturingUI
The Order List to Review and Quote Price window appears.
Summary: You now create the partner link for the Select Manufacturing service. |
Return to JDeveloper BPEL Designer.
Ensure that Process Activities is selected in the drop-down list of the Component Palette section.
Drag and drop a PartnerLink activity onto the left side of the designer window (below the Partner Links header and above the client partner link).
Enter the following values to create a partner link for the Select Manufacturing service:
Note: For the WSDL File field below, click the flashlight (the second icon from the left named WSIL Browser) to access the WSDL Chooser window for automatically selecting the Select Manufacturing service deployed in "Starting and Testing Your Services". |
Field | Value |
---|---|
Name | SelectManufacturing |
WSDL File | Access this URL by clicking the WSIL Browser flashlight icon and expanding and selecting LocalBPELServer > processes > default > SelectManufacturing.
http://localhost:9700/orabpel/default/SelectManufacturing/SelectManufacturing?wsdl See Also: "Setting the Hostname in Your JDeveloper BPEL Designer Web Browser Preferences" if you receive a parsing error when attempting to add a WSDL file in the WSDL Chooser window. |
Partner Link Type | SelectManufacturing |
My Role | SelectManufacturingRequester |
Partner Role | SelectManufacturingProvider |
Click OK.
Select Save from the File main menu.
Summary: You now create a Flow activity into which you place Invoke and Receive activities for both the Rapid Distributors and Select Manufacturing suppliers. A Flow activity is required to invoke the two suppliers in parallel. The order's line items are passed to the two suppliers for their price quotes. |
Drag and drop a Flow activity from the Component Palette section to below the GetCreditRating Scope activity.
Double-click the diamond to display the Flow window.
Enter GetPriceQuote in the Name field.
Click OK.
Drag and drop the following activities that you created in Chapter 3, "Invoking an Asynchronous Service" into the right panel of the GetPriceQuote Flow activity. Drag each activity one at a time and place them in the following order.
assignRDIn
invokeRD
receiveRD
Select Save from the File main menu.
Drag and drop an Invoke activity from the Component Palette section into the left panel of the GetPriceQuote Flow activity.
Double-click the Invoke icon to display the Invoke window.
Enter the following details:
Field | Value |
---|---|
Name | invokeSM |
Partner Link | SelectManufacturing |
The Operation (initiate) field is automatically filled in.
Click the first icon to the right of the Input Variable field. This is the automatic variable creation icon.
Click OK on the Create Variable window that appears.
A variable named invokeSM_initiate_InputVariable is automatically created in the Input Variable field. This variable is automatically assigned a message type of SelectManufacturingRequestMessage.
Click OK.
Drag and drop a Receive activity below the invokeSM Invoke activity you just created.
Double-click the Receive icon to display the Receive window.
Enter the following details:
Field | Value |
---|---|
Name | receiveSM |
Partner Link | SelectManufacturing |
The Operation (onResult) field is automatically filled in.
Click the first icon to the right of the Variable field. This is the automatic variable creation icon.
Click OK on the Create Variable window that appears.
A variable named receiveSM_onResult_InputVariable is automatically created in the Variable field. This variable is automatically assigned a message type of SelectManufacturingResponseMessage.
Click OK.
Select Save from the File main menu.
Summary: You now create an Assign activity that passes the customer's order line items to the Select Manufacturing supplier for their price quote. |
Drag and drop an Assign activity from the Component Palette section into the left panel of the GetPriceQuote Flow activity and above the invokeSM Invoke activity.
Double-click the assign icon to display the Assign window.
Click the General tab.
Enter assignSMIn in the Name field.
Click Apply.
Click Create to display the Create Copy Rule window.
Enter the following details:
Field | Value |
---|---|
From |
|
|
Variable |
|
Expand and select Variables > inputVariable > payload > ns1:PurchaseOrder > ns1:OrderItems
Note: The namespace number values (for example, ns1, ns2) can vary. Use the namespace values that automatically appear. |
To |
|
|
Variable |
|
Expand and select Variables > invokeSM_initiate_InputVariable > payload > ns1:OrderItems |
Click OK to close the Create Copy Rule window and the Assign window.
The designer window looks as follows:
Click the - sign to close the GetPriceQuote Flow activity. In this phase of the tutorial, you do not create an additional Assign activity to explicitly copy the received data of invokeSM_initiate_InputVariable into another variable.
Select Save from the File main menu.
When complete, the designer window looks as follows:
Go to the Applications Navigator section.
Right-click OrderBooking.
Increment the version number again of the project when prompted and click OK (for example, enter 1.2).
This compiles the BPEL process. Review the bottom of the window for any errors. If there are no errors, deployment was successful. If deployment was unsuccessful, see Step 5.
Log into Oracle BPEL Console by selecting Start > All Programs > Oracle - Oracle_Home > Oracle BPEL Process Manager 10.1.2 > BPEL Console (or refresh the page if it is already open).
The Dashboard tab of Oracle BPEL Console appears.
Click the OrderBooking version you increased in Step 5 in the Deployed BPEL Processes list.
Enter details in all fields of the HTML Form. You can also use a text editor to copy and paste these details from the contents of the OrderBookingPO_1.xml
file:
Select XML Source from the Initiating a test instance list.
Copy and paste the contents of OrderBookingPO_1.xml
into the field that appears.
Click Post XML Message.
The BPEL Processes tab displays a message similar to the following:
Test Instance Initiated
Click the Instances tab at the top.
Verify that the OrderBooking, CreditRatingService, TaskManager, SelectManufacturing, and RapidDistributors instances were created. All should appear in the Instance list. The Last Modified list displays the times at which they were created. The CreditRatingService and RapidDistributors instances complete relatively faster, since they are automated services. SelectManufacturing is running and awaiting user input to complete. This is defined in the TaskManager service, which is also awaiting completion.
Click the OrderBooking instance you increased in Step 5 in the Instance list.
A message appears stating the following:
The state of this instance is Active
Click the Audit link to follow the instance execution process. Note that the SelectManufacturing service is pending. The RapidDistributors service has completed.
Click the Flow link. Note that the parallel flow logic has completed on the RapidDistributors branch and is waiting on the SelectManufacturing branch (highlighted below).
To access this part of the activity, present it to the user for pricing, and accept the user data for task completion and process continuation, you must invoke the task from your browser.
The sample JSP pages and user presentation are prebuilt for you and deployed as SelectManufacturingUI
. The JSP page displays a list of tasks waiting for user action.
Access the prebuilt JSP Select Manufacturing application using Internet Explorer or Mozilla Firefox.
http://localhost:9700/SelectManufacturingUI
Click the order under Title.
Provide a price in the Price field, and click Quote. This sends a form submit message on a JSP and completes the task. After processing, a message appears saying that the task has completed.
Return to Oracle BPEL Console.
Click the OrderBooking instance.
A message appears stating the following:
The state of this instance is Completed
Click the Audit and Flow links and observe OrderBooking process instance execution to the end (observe each supplier's price quote).
You have now built parallel flow logic to call the asynchronous BPEL process to receive supplier prices from two services for a client order. You performed the following key tasks:
Created a partner link that interacted with a second asynchronous service (Select Manufacturing).
Designed parallel flow logic that called the two services (Rapid Distributors and Select Manufacturing).
Designed the BPEL process to invoke the Select Manufacturing service.
Deployed the BPEL process.
Ran the deployed BPEL process from Oracle BPEL Console by completing and submitting an order form that was sent in parallel to the Rapid Distributors service and the Select Manufacturing service.
Accessed the Select Manufacturing URL to manually submit a supplier price (the Rapid Distributors price was automated and did not require a manual submittal).
Waited for both services to return price results.
Reviewed the supplier price returned from the Rapid Distributors service and the Select Manufacturing service.