Wednesday, 26 September 2018

Inserting data from file into DB using Oracle SOA Database Adapter


In my previous blog I have explained about how to do configuration settings for Database adapter on Weblogic console and how to create a database adapter.
In this blog I am discussing about reading data from a xml file and inserting that data into database. So here I will be explaining
a. How to create a File adapter to pick a xml file from a particular location
b. How to create a Database adapter to insert data.
c. How to transform data from file to table.
I will start with creating a Application.
Open JDeveloper, Go to file select New, from that select Applications – from Items select SOA application and in next window give directory path where you want create this Application.
Click on next, in next window provide project name, click next.
Now from Composite template select “Empty composite”, click finish.
1. Now from Component palette drag File Adapter and place it left “Exposed service” side.
DBInsert
2. Click Next.
DBInsert1
3. Give a proper name for File adapter. Ex: “ReadFileCustomerDetail”. Click Next
DBInsert2
4. Click check box Define from operation and schema. Click Next.
DBInsert3
5. Here I want read file data so I am selecting check box Read file. Click next.
DBInsert4
6. In next step provide location from where file needs to be read.
There are two ways one is Physical and Logical path.
Physical path : If you select this option then whenever you want change your location you should come here and change it.
Logical path : If you select this option then you provide a logical name and every time whenever want to change file path then just change it in Configuration plan file. And also this value can also be changed at run time on Enterprise management console so need to change it through Jdeveloper.
Here I am selecting Physical path option and providing local file location.
In this window we also select other options like
a. Process file recursively.
b. Archive processed file : File will be archived and placed in provided location after successful read.
c. Delete files after successful retrieval : Once file is retrieved from location then that file will be deleted.
Click Next.
DBInsert5
7. Here provide file format which you want read from provided location. Ex : *.xml, CustomerData*.xml.
We can provide file format which needs to be excluded.
Also if file contains multiple records and want to read single or multiple records at a time, that also can be selected here. I want to read one record at a time so I have provided one here.
Click Next.
DBInsert6
8. In next step file age and file polling frequency should be provided. Click Next.
DBInsert7
9. In next step format of file which needs to be read should be provided. Click on search. It will open other window.
DBInsert8
10. In next step click red marked box.
DBInsert9
11. Once click, it will open Import Schema File. Click search button and go to location where file format .xsd file besides. Import that file into project by following next steps.
DBInsert10
DBInsert11
12. Select CustomerDataRequests. Click OK.
DBInsert12
13. Now in URL part CustomerDetail.xsd will appear. Click Next.
DBInsert13
14. Click Finish.
DBInsert14
After this a File adapter will be created in Exposed Services part.
15. Now I will create a BPEL process. While creating a BPEL process I am defining it later so I am selecting Define service later in Template and provide name for BPEL. Click OK.
DBInsert15
16. Now drag a Database Adapter from Component palette into External Services part.
DBInsert16
17. Give name to Service and Click Next.
18. In next step create a new Database Connection. Click on plus sign, it will open one more window. Here provide
a. Connection Name
b. Username
c. Pawword
d. Host Name
e. SID or Service name
f. Port number
Before clicking OK, click Test Connection and check connection was Success or Failure. If connection was Success then click OK.
DBInsert18
19. Next step provide JNDI name which is created on Weblogic console. Click Next.
DBInsert19
20. In next step will see multiple database operation.
Here I have selected insert only. Click next.
DBInsert20
20. Here we should import a table in which we would like to insert Customer data. Click on Import Tables.
DBInsert21
21. Select a Schema in which table is created and click on Query. Once we click on Query it will open list of tables under that schema.
DBInsert22
22. Move that required table from left to right by clicking on arrow provided. Click OK.
DBInsert23
23. Now will see selected table. Click Next.
DBInsert24
24. In next window select a sequence which is created to generate Primary Key. Click on search, it will return list of sequences from that select required sequence. Click Next.
DBInsert25
25. Click Finish. It will create a Database adapter.
26. Now we will have File adapter, BPEL Service and Database adapter.
Now connect File adapter, BPEL and database adapter.
DBInsert26
After connecting all three we will see complete service like below.
DBInsert27
27. Now double click on BPEL.
Drag a receive service from Web service palette and place it in empty BPEL. Receive service will receive file from File adapter.
DBInsert28
28. After that double click receive activity and provide a valid name. Click check box Create instance. Click search button of partner link.
DBInsert29
It will open other window, select partner link which is going to provide file to read. Here ReadFileCustomerDetail will provide file. Click OK.
DBInsert30
29. To create a input variable which will give data from file, click plus to create a new variable. Give a proper name and Click OK.
DBInsert31
30. Now drag Invoke service again from component palette.
Give a valid name, select a partner as Database invoke. Create input and output by clicking on plus. Click OK.
DBInsert33
31. Drag a Transfom activity from Oracle Extensions palette into BPEL.
DBInsert34
32. Click on Transform select input, output and give name for transformation. Click OK.
DBInsert35
33. Now map incoming payload to input of DB adapter as per below screen.
DBInsert36
34. Save all work done. We will see complete service like below screen.
DBInsert37
35. Deployed service into local weblogic server.
36. Placed file into mentioned location with below data.
DBInsert38
37. Data inserted into table successfully.
DBInsert39

Oracle SOA Mediator

Oracle SOA Mediator

Mediator is one of the service component of the Oracle SOA Suite, there are four main functionality of Mediator
  1. Routing : Mediator route incoming payload to the external service based on routing rule
  2. Validate: Mediator performs XSD schema validation , it describes the structure of xml payload
  3. Filter: Mediator defines a filter expression that specifies the service to be invoked if the payload satisfy filter condition
  4. Transform: Mediator performs XSLT transformation , it transforms data suitable for the target                                                                                                                                                                                                                                                                    In this Demo we will be creating a composite application that routs the incoming payload to the BPEL process based on filter expression
    Step 1: Click File –> new –> project –> SOA Project                                                                                                                                       OracleSOAMediator1                                                                                                                                                                                                                              Click OK                                                                                                                                                                                                     Step 2: Enter the project name and click nextOracleSOAMediator2                                                                                                                                                                                                                                         Click Finish                                                                                                                                                                                                     Step 3: Create a Schema for input and output                                                                                                                                                                                                                                            OracleSOAMediator3                                                                           Step 4: Expose a SOAP service, drag a Soap from component panel and drop it in exposed service OracleSOAMediator4                                                                                                                                                                                                                                                                            Name it as ProductDeliver, in WSDL URL click on Generate WSDL from schema as shown aboveOracleSOAMediator5                                                                                                                                                                                                                                                                                   In Interface Type choose Synchronous Interface  and click on + sign at input and name it as Request  , browse for input schema element
    OracleSOAMediator6                                                                                                                                                                                                                                                                                                                      Choose the input element and click OKDo the same for output click on + sign at output and name it as Response, browse for output schema element and click ok OracleSOAMediator7                                                                                                                                                                                                                                                                                                                   Now u have exposed a SOAP Service                                                                                                                                            Step 5: Drag a mediator component from component panel and drop it in Components                                                                                                                                                                                                                                                OracleSOAMediator8                                                                                                                                                                                                                                                                                                 and click OK                                                                                                                                                                            OracleSOAMediator9                                                                                                                                                                                                                               Now connect SOAP service with mediatorStep 6:Drag a BPEL process from component panel and drop it in components, name it as DLF and in Template choose Synchronous BPEL ProcessOracleSOAMediator10                                                          In input click browse and select input schema element, Click OK
    OracleSOAMediator11                                                                                               In output click browse and select output schema element, Click OK
    OracleSOAMediator12                                                                                                 And uncheck Expose as a SOAP Service and click OKNow that u have create a BPEL Process (DLF), Follow same steps to create two more BPEL name it as Emirates and FedExOracleSOAMediator13Now connect this three BPEL to the mediatorOracleSOAMediator14
Double click on mediator, u will find three section pointing to DLF, Emirates and FedEx BPEL
OracleSOAMediator15
In DLF section click on filter to specifies routing rule
OracleSOAMediator16
In routing rule we are going to compare payload element i.e. deliveryLocation  with India,if  true it will route to DLF BPEL
Click OK
Now assign payload to the input of DLF BPEL by click Assign value in mediator
OracleSOAMediator17
After mapping payload with input of DLF BPEL
Click OK
Now that u have mapped input to DLF BPEL, u should get the out from DLF BPEL and mapped it to SOAP response
In Synchronous reply click on Assign value
OracleSOAMediator18
Map the out of DLF BPEL to the SOAP response, Click OK
Now that u have done with DLF BPEL, do the same for Emirates and FedEx
BPEL and assign value for request and response
OracleSOAMediator19
If deliveryLocation  is Dubai,it will route to Emirates BPEL else if deliveryLocation  is USA,it will route to FedEX BPEL
Step 6: Click on DLF BPEL , drag  assign from components panel and place it in BPELOracleSOAMediator20
Double click on assign and concat product name with courier name as shown below
OracleSOAMediator21
Do the same for Emirates and FedEx BPEL
OracleSOAMediator22
OracleSOAMediator23
Save all the changes and deploy the application
Step 7: Test the Application
1)
Request
OracleSOAMediator24
Response
OracleSOAMediator25
2)
Request
OracleSOAMediator26
Response
OracleSOAMediator27
3)
Request
OracleSOAMediator28
Response
OracleSOAMediator29