Oracle Gold Partners, our very popular training packages, training schedule is listed here
Designed by Five Star Rated Oracle Press Authors & Oracle ACE's.
Asynchronous BPEL Process
A Asynchronous Process is one which you call and need not wait for the response before proceeding further. You may just initiate the Asynchronous process and receive the response when you require it as a part of your process, hence you are not forced to wait for response.
For analogy sake, let me give you an example for better understanding. I have chosen simplicity of the analogy above technical similarity.
Real life example of a Synchronous process: You call a friend and ask him to give you some information. While your friend is finding out the information for you, you are on the call waiting for his response. Note that connection is not dropped
Real life example of an Asynchronous process: You call a friend and ask him to give you some information. You ask him to call you back when the information is ready and you disconnect the call. When your friend is ready with the information, he calls you and gives you the information. Note that you don’t wait for a response from your friend and connection is lost. When your friend is ready, he has to establish a new connection and then provide you the information
By now, you have already got a SOA Server up & Running, and also, you have now successfully connected your jDeveloper to BPEL Server.
In this article, you will see the steps for
a) Creating a new Business Event which will be raised in EBS to initiate BPEL Process
b) Creating a BPEL Process that listens to Business Events from an Oracle eBusiness Suite environment.
You will also find an overview of how event message is propagated from Oracle eBusiness Suite to BPEL Server.
To begin with we will learn how to install the SOA Server and Tools on your PC.
Installation of SOA Suite
Install Virtual Machine [This step is optional]
Install Complete SOA Suite Tools from Oracle [ includes the BPEL Server ]
Install Companion CD's for Oracle SOA Suite
Validate your Installation of Oracle 10g SOA Suite
Oracle BPEL Tables in the perspective of Oracle Workflow Tables.
In this article you will learn about the main tables used by the BPEL Server/Engine. For these tables, you will also see the corresponding tables in good old Oracle Workflow.
The reason I write this article is because I believe in next 5 Years time , many of the current Oracle Workflow Consultants will be working on Oracle BPEL Instead.
PROCESS_LOG [ Similar to wf_item_types in Oracle Workflows ]
This is the table in BPEL where the any activity related to changes to the process are stored.
For example, if you wish to know how many time the BPEL process was deployed onto server or revised, then this is the table to look into.
A higher level that this table are tables PROCESS and PROCESS_DEFAULT.
These table contain the BPEL Process name and their revision information.
CUBE_INSTANCE [ Similar to wf_items in Oracle Workflows ]
For each BPEL process instance an entry gets created in this table.
This will tell you the data on which this instance started, and the last updated date of the instance.
To purge records from this table, you can use collaxa.delete_ci, using primary key value from cikey.
State 5 or more means that the process instance is complete.
If state is less than 5, then it means that process instance is ongoing.
INVOKE_MESSAGE
Stores the information regarding the message that invoke a BPEL Process.
For example a Business Event can invoke a BPEL Process via WebService, as shown in image below.
Of course this table will also tell you the timestamp at which the BPEL process was invoked.
WORK_ITEM [ Similar to WF_ACTIVITIES in Oracle Workflow ]
This table contains the activities against the BPEL Process Instance.
DOCUMENT
If a variable with XML document has size bigger than 5MB[configurable], then variables XML data gets stored into this table.
AUDIT_TRAIL
This is the table that gets used to display the audit flow from BPEL Console.
This has a column named LOG which is a Large Object RAW Column, each step in BPEL process gets logged into LOG Column in XML zipped form.
In this article, I will show quickly how to do a HelloWorld program in BPEL. Of course this example will be kept very simple.
Why this example?
To show you how to create a BPEL Project
To show you how to deploy and test the BPEL Project
To explain the basic components of a BPEL Project
Explain why Oracle designed BPEL/ESB in this manner, and its benefits
Will all the above be covered in this specific article?
To keep things simple, I will split the above listed tasks into streamlined but concise articles.
What this article will not include
a. This will simply show you step by step approach for creating HelloWorld.
b. Testing steps will be explained in a future article
c. I will explain the internals of these BPEL components in a latter article.
d. Invocation of a third party web service. I will cover this latter.
e. Concepts of ESB for example Message Transformation, Rules based routing etc.
f. Database related transactions/flows
Pre-Requisites
I hope that you have already read and implemented article Connecting jDeveloper to SOA Servers.
What is the scenario painted by this article?
1. Each default BPEL Process has two variables in addition to having a receiveInput[start] and replyOutput[end]
The two variables are input and output[result]
2. We will add two stages to this Synchronous process
3. Stage 1 will Alter the value of input variable itself by concatenating text Hello From Anil Passi to .
4. Stage 2 will assign the value in input variable to the output variable
Lets get started with steps for BPEL HelloWorld
Step 1. Select Application Navigator Tab and right click on Applications to create a new Application. Give it any name you desire.
Step 2. Right click on that Application and create New Project of type BPEL Process Project. Give it a name HelloPassiWorld
Important:- Make sure that the template is Synchronous BPEL Process
Step 3. Click on Next, accept all defaults and click on Finish.
Step 4. You will now see a default flow created.
In the right hand side top of the window, select "Process Activities"
Step 5. Click on Assign within Process Activities. Drag it between receiveInput and replyOutput.
Do this step twice. Your flow will look as below.
Step 6. Double-click on Assign_1. A window will pop-up. Select tab Copy Operation, then click on Create and then click on Copy Operation again.
You will see another window pop-up with title Create Copy Operation.
It has two sections From and To.
Step 7. In the From section, select Expression and hit control-space. Select concat
Step 8.
Enter text as below, and navigate cursor to after comma and hit Control Space again.
Step 9. Select bpws:getVariableData with 3 input parameters.
Keep on hitting Control Space and keep selecting default values for parameters to concat method.
Step 10. In Right hand side, select Variable and expand the section to select client:input.
Step 11. Click on OK and Apply and again OK.
Step 12. DoubleClick on Stage_2 this time. and again use Create Copy Operation.
Step 13. Assign the Input Variable to the Output Variable. Note that we have modified the value of the input variable.
Step 10. Click on OK and OK again and save the project.
Step 11. Right click on the project and select Rebuild
You should receive something similar to below text in Message tab[once rebuild is completed]
Compiling C:\jdev\jdev\mywork\Application2\HelloPassiWorld\bpel\HelloPassiWorld.bpel
BPEL suitcase generated in: C:\jdev\jdev\mywork\Application2\HelloPassiWorld\output\bpel_HelloPassiWorld_v2007_01_08__3624.jar
copying bpel/HelloPassiWorld.wsdl to output directory
converting, through native2ascii, build.properties to output directory
[01:01:28] Successful compilation: 0 errors, 0 warnings.
Step 12.
Right click on the project and Deploy it to the BPEL Server as below.
Deploying to http://localhost:8888 domain: default. Please wait....
[1:10:15 AM] Please check Ant log to determine whether the project deployed successfully.
Ant Log is
--------------------------------------------------------------
| Deploying decision services for HelloPassiWorld on localhost, port 8888
--------------------------------------------------------------
[deployDecisionServices] There are no decision services to deploy
BUILD SUCCESSFUL
Total time: 2 minutes 16 seconds
This completes your HelloWorld Project in BPEL.
In the next article I will be explaining how to test this project.
Apps2Fusion are passionate about Fusion Cloud E-Learning and classroom trainings. Training is our core business and we have been doing this for many many years. We work hard to advise trainees with right career paths. We have published various five star rated Oracle Press Books each was best sellers in its category. We have helped many and could help you as well.