Creating BPEL Process to Publish, Query, and Delete Orders into Oracle eBusiness Suite Open Interface
Creating BPEL Process to Publish, Query, and Delete Orders
into Oracle E-Business Suite Open Interface
Purpose
This OBE tutorial describes and shows how to use Oracle BPEL
PM with Oracle E-Business suite. It shows how to:
Create a BPEL process to publish a Sales Order into Oracle E-Business Suite
Open interface tables using AppsAdapter. Oracle Adapter for Oracle Applications
exposes both Open Interface Tables and Concurrent Programs as Web Services
that can in turn be invoked from a BPEL process.
Create a BPEL Process to query and delete the published Sales order using
an Order Management stored procedure API.
This OBE leverages AppsAdapter Tutorial shipped with SOA suite
Place
the cursor over this icon to load and view all the screenshots for this tutorial.
(Caution: Because this action loads all screenshots simultaneously, response
time may be slow depending on your Internet connection.)
Note: Alternatively, you can place the cursor
over each individual icon in the following steps to load and view only the screenshot
associated with that step.
Overview
Oracle Adapters for Oracle Applications provides comprehensive
bi-directional integration with Oracle Applications and supports all recommended
interfaces. , i.e., (i) interface tables; (ii) Concurrent programs; (iii) Business
events; (iv) XML gateways; (v) EDI gateway; (vi) PLS/SQL APIs; (vii) Web servies.The
Adapter supports for all modules of Oracle Applications in Release 12 and Release
11.5.1 to 11.5.10, as well as supports for custom integration interfaces with
reference to various versions of Oracle E-Business Suite including Release 12,
Release 11i10, and pre-Release 11i10. It also simplifies design-time experience
and promotes rapid development.
This Sample shows how to propagate Sales Order using BPEL
PM and e-Business Suite interface tables, and Concurrent program. It then deletes
the Sales Order placed from the base table using PL/SQL APIs.
Part 1: Deploying and
running a BPEL Process to create a Sales Order into E-Business suite.
1.
Set up the wrapper package on target Database
(The database on which you intend to run this sample) by executing the
following script. For the purpose of the lab, this step can be skipped
as the wrapper package has already been created.
Open a command prompt window, navigate to the directory
where you have installed the Oracle E-Business Suite files, and execute
the following command:
[ORACLE_HOME]/samples/tutorials/150.AppsAdapter/OrderImportConcurrentProgram/bpel/XX_BPEL_FND_REQUEST_SUBMIT_REQUEST.sql
as APPS/APPS.
[ORACLE_HOME]
- The directory where you installed Oracle E-Business Suite
2.
Start the SOA Suite instance and log into Enterprise
manager.
Open any Internet browser and enter the following URL in the address bar
(of the format http://<host>:<port>/em)
http://localhost:8888/em
Note: In this case, the HTTP port used is 8888
(default).
Log in to the Enterprise Manager by providing the user
name as oc4jadmin and the password as welcome1 (or the one
you provided at the time of the Oracle Application Server installation)
.
3.
Create a connection pool and a data source to be able to connect
to the database.
a.
In Oracle Enterprise Manager Application Server Control,
click the Home link
.
b.
In the home OC4J instance page, select the Administration link.
c.
From the list of available administration tasks, click the Go To Task
icon for the Services > JDBC Resources task.
d.
In the Connection Pools section, click the Create
button.
e.
In the Create Connection Pool - Application, accept default values and
click Continue. You create a new connection pool for this tutorial.
f.
Enter the following information in the Create Connection Pool form (leave
defaults for the the fields not specified here): Replace the DB hostname,
SID/Service name, username and password as appropriate to the Database
you are trying to access to perform tasks in this tutorial.
Property Name
Value
Name
ebiz_pool
URL type
Generate URL from Connection Information option
DB Hostname
ptc-apps01.us.oracle.com
DB Listener Port
1521
SID/Service Name
VIS
Username
apps
Use Cleartext Password
apps
After entering the above details, click the Test Connection button.
In the Test Connection window, click Test button to test the connection
with the sample SQL statement.
Activate the Create Connection Pool window and observe the successful
connection message. . If you get an error message, check the URL and credentials
to ensure you've entered the right information.
Click Finish.
Observe the message that the ebiz_pool connection has been created. Also,
observe the ebiz_pool entry in the Connection Pools section.
g.
Now, create a Data Source.
In the JDBC Resources page, click Create button under the
Data Sources section.
h.
In the Create Data Source - Application & Type page, accept
default values and click Continue. You are going to create a
Managed Data Source. This data sources uses OC4J connection pooling
capability and hence the connection pool created in the step above can
be used in this case.
i.
In the Create Data Source - Managed Data Source page, enter details for
the data source as shown in the following table. After entering the above
details, click Finish.
Property Name
Value
Name
ebizDataSource
JNDI Location
jdbc/ebizDataSource
Transaction Level
Global & Local Transactions
Connection Pool
ebiz_pool (the connection pool you
created in the previous step)
Login Timeout (seconds)
0
Observe the confirmation that the data source ebizDataSource has
been created. Also observe the entry in the Data Sources section.
4.
Create an Oracle Applications adapter connection. This connection is needed to propagate sales order information to E-Business suite.
a.
In the Oracle Application Server Control page, select the Cluster
Topology breadcrumb link at the top of the page.
.
b.
Under the Members section > View By drop down list,
select Applications to view all the applications in the OC4J home
instance.
.
In the expanded tree of applications, click the link of the default
application.
c.
Under the Modules section, click the link corresponding to the
AppsAdapter resource adapter module.
d.
On the Resource Adapter: Oracle Applications Adapter page, select
the Connection Factories link.
e.
Under Connection Factories, click Create. (You want to use the
create button near the top of the screen, not the one in the Shared Connection
Pools section.)
f.
In the Create Connection Factory: Select Interface page, accept
default value for the Connection Factory Interface and click Continue.
g.
In the Create Connection Factory page, enter eis/Apps/appsSample
as the JNDI Location. In the Configuration Properties, enter jdbc/ebizDataSource
as value for xADataSourceName. Accept default values
for all other fields. Click Finish.
Observe the confirmation message that the connection factory has been
created.
h.
Restart SOA Suite: First go to Start > All Programs > [Oracle_Home] >
Stop SOA Suite.
After viewing the message, now select Start > All Programs > [Oracle_Home] > Start SOA Suite.
In this step, you deploy a pre-packaged BPEL process. This process reads
a sales order from a pre-configured XML file through an adapter and propagates
that oder through AppsAdapter to E-Business Suite
a.
Restart SOA Suite: Go to Start > All Programs > [Oracle_Home]
> Stop SOA Suite.
After viewing the message, now select Start > All Programs > [Oracle_Home]
> Start SOA Suite.
b.
Access the AppsAdapter sample tutorial under [ORACLE_HOME] directory
structure where you installed the SOA Suite. To achieve this task, navigate
to [ORACLE_HOME]\bpel\samples\tutorials\150.AppsAdapter\OrderImportConcurrentProgram\bpel
folder.
Right click on the bpel.xml file and select Edit to edit this
xml file.
c.
Edit bpel.xml to specify the physical directory for the File Adapter
- synchronous read operation. Ensure that the code segment related tot
he getOrderDetails entry has the LogicalDirectory entry set to
the folder path where your AppsAdapter samples are installed, as shown
below. (this path may be different for you depending on the directory
where you installed your SOA suite. For example, replace c:\SOASuite10131
with the folder where you installed your SOA suite.)
After making changes to the bpel.xml file as necessary, you need to compile
and deploy the BPEL process. To perform this task, go to start >
All Programs > Oracle_SOA > Oracle BPEL Process Manager > Developer
Prompt.
This opens up a command prompt window. In the command prompt window.
e.
In the command prompt window, change directory to the folder where the
build.xml of the OrderImportDemo project is present. The
following screenshot shows a possible path to the directory.
Then run the obant command to compile and deploy the BPEL process.
Observe the message that the Build is successful. (Note that the following
screenshot shows only partial message that you see during the compile/deploy
process)
f.
Edit the order_data.xml file. Open this file from the directory structure [BPEL_samples]\150.AppsAdapter\OrderImportConcurrentProgram\inputDir
folder.
Right click on the order_data.xml file and select Edit.
Find and replace all the three occurrences of "order_id_01"
with a non-default value. For example: 123456. (Note: You need to do this because there might already be an order with that particular orderid within E-Business Suite.) Save the file
g.
Go to BPEL Console and initiate the process by supplying a dummy string
as input. In a browser window, provide the URL of the format http://<host>:<port>/BPELConsole
(The default port is 8888)
for starting the BPEL Console. If you receive an error that the page cannot
be opened, go to Start > All Programs > Oracle_SOA > Oracle BPEL
Process Manager > BPEL Control to start the console page.
The default login userid=bpeladmin passwd=welcome1
Select the OrderImportDemo link from the Deployed BPEL Processes
list under the Dashboard or the BPEL Processes tab.
h.
In the Initiate section, provide dummy as the value to initiate
a test instance and click the Post XML Message button.
Observe the message that the Test instance is initiated and that the
instance is being processed asynchronously. Click to view the Visual Flow
diagram.
i.
The resulting visual flow diagram shows the successful invocation of
the Open Interface and Concurrent Program services.
You can go to Audit tab and click View Raw XML link to view the XML file
that is generated for the specific instance.
A snippet of the resulting XML file is shown below. Observe the order
ID value 123456 that you provided in a previous step.
6.
Navigate to Oracle Applications Forms to check the
status of the Concurrent Program execution.
7.
You can verify whether the purchase order has successfully
been created, by using Oracle Applications Forms. To perform this task,
follow the instructions given below:
a.
Open any Internet browser and enter the URL where your
Oracle Applications is installed. The URL will be in the form of http://<hostname
where Oracle Applications is installed>:<port>. Default port
number to be used is 8000.
Click the Apps Logon Links link to login to Oracle
E-Business Suite. Provide appropriate username and password to login to
the page.
Click the E-Business Home Page link.
Login using username and password as appropriate to
your E-Business suite installation.
b.
Scroll down the list of responsibilities available in the Navigator
section, and click the responsibility Order Management Super User,
Vision Operations (USA). Then select Sales Order from the resulting
pane (as shown in the highlighted selection of the second frame of the
screenshot). Note: Your screen may show more values than shown in the
following screenshot where some portions of the screen are stripped out.
c.
The above step opens up one Oracle Applications 11i browser window
that shows a message asking you not to close the window and a Oracle Applications
- Vision window that contains the Order Management Super User, Vision
Operations (USA) Navigator form and the Sales Orders - [New]
form.
Observe that the Order Returns-->Sales Order form is active now.
d.
In the Sales Order form press F11 to enable search for any Order. In
the Customer PO field enter value order_id_01 (order id present
in the orders xml file) and press CTRL+F11 keys.
Details of newly created order with Order id = 'order_id_01' could be
seen.
e.
Press on the Line items tab. Verify the quantity and item type
of the order is same as that present in the raw xml data that was generated
while the BPEL process was tested with an initiator in step 5i above.
Part II: Query and
Delete a Sales Order
In this section, you query and delete a sales order through
the DeleteOrder BPEL process. You use JDeveloper to connect to Oracle E-Business
Suite and perform this task. This BPEL process has the following activities:
Receive activity that gets triggered by an input (order header_id) from
the BPEL Console
An assign activity that sets the header_id to the input of the DeleteOrder
Stored Procedure service
An invoke activity to call the DeleteOrder Stored Procedure service.
Create a Connection to The Database
1.
If you haven't already done so, start the BPEL server
process.
Restart SOA
Suite: Go to Start > All Programs > [Oracle_Home] > Stop SOA
Suite. After viewing the message, now select Start > All Programs >
[Oracle_Home] > Start SOA Suite.
2.
Launch Jdeveloper and create a connection to E-Business Suite using the
apps schema.
a.
In JDeveloper select the Connections tab (choose View > Connection
Navigator if it's not displayed). Right click on Database and select
New Database Connection to open the database wizard.
b.
Enter appropriate values to connect to your database. This tutorial uses
Connection name as ebiz and username and password as apps. The
following screenshots show the Database connection creation process.
.
If you received an error when you test the connection, verify your database
hostname, port, and SID to make sure they are accurate. When the connection
is successfully created, you view an entry for ebiz in the Database connection
navigator as shown in the following screenshot.
The first configuration task is to create a new BPEL project.
To perform this task, execute the following steps:
1.
Open Oracle JDeveloper BPEL Designer. Activate the Applications
Navigator tab. Right click on the Applications node and select
New Applications. .
Provide name of the application as BPEL_eBuz.
Click OK.
Do not create the Project file yet. Click Cancel.
2.
Now, create a BPEL Process project. To achieve this task, perform the
following steps:
Right click on BPEL_eBuz node in the Application Navigator and
select New.
In the New Gallery dialog box select Projects
from the General Categories section and select BPEL Process
Project from the Items section. Click OK.
3.
The BPEL Process Project dialog box is displayed.
In the BPEL Process Name field, enter a descriptive name. For example,
OrderImportDemo.
a.
Select Asynchronous BPEL Process as
the template and click Finish.
b.
Observe that a BPEL Process project by name OrderImportDemo has
been created in the Applications section and view the OrderImportDemo.bpel
visual process flow diagram.
Define an Oracle Applications
Adapter Service called "Delete Order"
This "Delete Order" AppsAdapter service will be used to delete a sales order from E-Business Suite.
1.
From Component Palette, select Services from
the drop down list.
Click and drag a PartnerLink onto the Services
area in the OrderImportDemo.bpel visual process flow diagram.
2.
In the Create Partner LInk window click the Define adapter services
icon in the WSDL Settings section.
3.
In the Adapter Configuration Wizard, click Next for the Welcome
screen. Select Oracle Applications as the Adapter you would like
to configure. Click Next.
4.
In step 2, name the service as DeleteOrder and provide description
as Deletes an existing order from E-Business suite and click Next.
5.
In Step 3, select the database connection for your applications that
you created earlier in this tutorial and click Next.
6.
In the Oracle Applications Module Browser window, navigate to the Delete
Order entry through this path: Product Families > Order Management Suite (OM_PF) > Order Management
(ONT) > Sales Order (ONT_SALES_ORDER) > PLSQL > Process Order
API (OE_ORDER_PUB) > DELETE ORDER (DELETE_ORDER)
Click OK.
7.
In the Adapter Configuration Wizard step 4, select DELETE ORDER API
and click Next.
With this step, you finished defining Oracle Application Adapter Service
called DeleteOrder. Click Finish to complete the process.
8.
You are now returned to the Create Partner Link window, populated with
WSDL Settings information based on the adapter you created in the previous
steps. Click OK.
Now return to the BPEL Designer and observe that DeleteOrder is now available
as a service.
Save all your work by .
9.
From the Component Palette, select Process Activities from
the drop down list and then select the Invoke activity.
Drag the Invoke activity to the OrderImportDemo.bpel visual process flow
diagram beneath the receiveInput activity.
10.
Drag the Invoke activity's connector to the Oracle E-Business Suite DeleteOrder
partnerlink. (Hold the right arrow button and drag it to the DeleteOrder
icon)
In the EditInvoke dialogue box, enter CallDeleteOrder
as the name of the activity. Click the Automatically Create Input Variables
button to select the input variable and similarly for the output variable.
Observe that the Input Variable and Output Variable fields
are populated. Click OK.
11.
Drag and drop an Assign Activity from the Component Palette
and drop in the flow before the CallDeleteOrder activity.
12.
Double click on the Assign_1 activity to set the values as follows
for setting the input value for the CallDeleteOrder invoke activity. On
the General tab, provide name as AssignDeleteOrder. On the
Copy Operation tab, select the Copyoperation from
the Create option drop down list.
13.
In the Create Copy Operation window:
in the From section expand the Variables node - Variables
> Process > Variables > inputVariable > payload > client:OrderImportDemoProcessRequest
> client:input
In the To sections expand the Variables node - Variables >
Process > Variables > CallDeleteOrder_DeleteOrder_InputVariable
> InputParameters > ns2:InputParameters >ns2:P_HEADER_ID
Now compile the BPEL Process and deploy it in your local server.
To complete this task, perform the following steps:
1.
In the Application Navigator, expand the BPEL_eBuz
application and right click on the OrderImportDemo node. Select
Make to compile the application.
Right click on the OrderImportDemo node and select
Deploy > BPEL Process Deployer... from the menu to deploy
the application.
2.
In the BPEL Process Deployer window > Integration Server
Connection, click New to create a new Integration Server connection.
In Step 1, provide Connection Name as SOA. Click Next.
In step 2, click the Configure a new application server icon to
create a new application server connection.
In the Create Application Server Connection wizard window, provide
Connection Name as ApplicationServerConnection and select Oracle
Application Server 10g 10.1.3. as Connection Type. Click Next.
Provide username and password that is appropriate for your SOA Suite
installation. Click Next.
Ensure that the hostname and port are accurate and click Next.
Test the Connection and click Finish. Ensure that the status is
Success. Otherwise, verify your connection details and test the connection
again.
With this step, you completed creating an application server instance
connection.
Now, control returns to Step 2 of the Create Integration Server Connection
window. Click Next.
In Step 3, Click Test Connection to ensure that the connection
is successful. Click Finish.
Now the control returns to the BPEL Process Deployer window. Click Ok.
In the Deployment Properties window, click OK. The version will
be different if you tried deployment of this application for more than
one time.
View the Apache Ant - Log window to make sure that the deployment is
successful. Save all your files in Oracle JDeveloper.
3.
Open a browser window and view the BPEL Console (http://<hostname>:8888/BPELConsole
or Start > All Programs > Oracle SOA Suite > Oracle BPEL Process
Manager > BPEL Control) to verify that the process OrderImportDemo
is available as one of the deployed BPEL Processes on the BPEL server.
Click OK.
Looking up for an
existing Sales Order in E-Business Suite
Lets look for an existing Sales Order in Oracle E-Business
suite.
1.
Login to your Oracle Applications instance > Oracle
E-Business Suite, using login name as operations/welcome.
Choose Order management Super user, vision operations (USA) responsibility,
as done in a previous step.
Click on Quick Sales Orders. This will launch corresponding
forms for the Sales Orders. If this is the first time Jinitiator is running,
it will first auto install on your machines. This is a one-time process
that we will be seeing.
2.
We query for existing Orders. Click on Cust Name
and click F11. When the fields turn blue in color, enter Business
World in the Cust Name field and press CTRL - F11. The form is now
populated with information corresponding to customer Business World. Also
observe there is a line item corresponding to this customer entry. If
you do not see a line item, us the up and down arrow keys on your key
board to select an Order that contains at least one line item.
The above screenshot shows an order with Order ID 57686 in the system.
You may find a different order.
3.
Now find out the corresponding header_id for the Order selected
in the step above. We require header_id because Order Management works
on internal values. Typically Order number is provided by the external
systems and there is a possibility that there can be two Sales Order with
the same Order Number(coming from two different companies).
In JDeveloper, go to Tools > SQL Worksheet. Select ebiz
as the database connection from the Select Connection window. This
is the database connection you created in an earlier step in this tutorial.
In the ebiz window, enter the following SQL statement and click
the Execute SQL Statement button
to execute the command.
SELECT * FROM oe_order_headers_all
WHERE order_number=57686
Observe that the header_id value for order number 57686 is 104550.
Test a BPEL process from the BPEL Console by invoking an instance of the BPEL process and using the built in test client.
1.
Open a new Internet browser and enter the following
URL in the address bar to log into the Oracle BPEL Console:
http://localhost:8888/BPELConsole
If not already
logged in, log in to the BPEL Control by providing the user name asoc4jadmin
and the password as welcome1 (or the one you provided at the time
of the Oracle SOA Suite installation).
2.
Click on OrderImportDemo link and in the Initiate tab, provide
the Order ID you identified in a previous step, in the input parameter
field. click Post XML Message.
View the message that the instance has been successfully processed asynchronously.
Click the Visual Flow diagram to view the visual flow of the BPEL
process diagram.
3.
Now, lets verify what the result from the API that actually performs
action on the sales orders will be. Click the CallDeleteOrder activity
to delete the order with the order ID supplied in the test instance.
4.
In the Activity Audit Trail window, observe the highlighted
message that shows status of the delete action.
In this tutorial example, observe the message data OE_PC_DELETE_VIOLATION
with message reason as Order has been booked. This message indicates
that there is a delete violation constraint defined on the order table
and hence this order cannot be deleted. Since the specified order has
already been booked, it cannot be deleted and hence the above constraint
is raised.
<X_RETURN_STATUS> E <X_RETURN_STATUS>
<X_MSG_COUNT>1<X_MSG_COUNT>
<X_MSG_DATA> ONT$#0; OE_PC_DELETE_VIOLATION
....
Conclusion: The above is a valid error message from
the Order management system. If an Order has been booked then you can't
delete it. Try to delete another order.
However, if your order with the specified order ID is
not yet booked, it can be deleted from the sales order related tables
and hence you will see a message that it has been deleted. A successful
deletion message would appear as shown in the following screenshot:
<X_RETURN_STATUS> S <X_RETURN_STATUS>
<X_MSG_COUNT> 0 <X_MSG_COUNT>
<X_MSG_DATA xsi:nil= TRUE ...
If you got the above message that the deletion is successful,
go back to Oracle Applications and search your order number for the line
item that you deleted.
This process proves the capability of the E-Business adapter to invoke
a PL/SQL API as a Service inside the BPEL flow.