Service Callout In OSB

Prerequisite: For understanding this you must have some basic knowledge on SOA as this post involves using SOA to make it more clear to understand.

Well, Service Callout in OSB is similar to Invoke activity in SOA. We use Invoke activity in SOA to trigger external services like (WS Service, DB Service, JMS Service, FTP Service etc). Similarly we use Service Callout in OSB to trigger external services.

Similarities & differences b/w Invoke & Service Callout: Both used to trigger external services, but Invoke can be used for both Synchronous& Asynchronous external services (i.e the calling external service may or may not give the response). But Service Callout is used only to trigger Synchronous external services. To trigger oneway services there is another component in OSB which is ‘Push’ which also works same as Service Callout, only difference is Push is used for triggering Oneway external services and Service Callout is used for triggering Synchronous external services. Invoke activity will be having ‘Input Variable’ and ‘Output variable’ and similarly Service Callout will also has ‘Request Variable’ & ‘Response Variable’.

Let’s take a simple example and discuss about why and where we use Service Callout in OSB. I’ve a an external service asynchronous¬† service ‘EmployeeInfo’ which accepts EmployeeId, EmployeeName as inputs.

  1. So in OSB first we have to import Resources (WSDL, XSD) for that external WSDL service. Then we have to create Business Service calling the ‘EmployeeInfo’ WSDL.
  2. Create a proxy service based out of Business Service created earlier.
  3. Now we have to pass ‘EmployeeId’, ‘EmployeeName’ as inputs the proxy service which will pass the same as inputs to the business service. But let’s make a requirement like we pass only ‘EmployeeId’ as input to the proxy service then in the Message Flow we have to call another external service ‘EmployeeName’ wsdl, passing ‘EmployeeId’ to get the respective ‘EmployeeName’ and then pass this retrieved ‘EmployeeName’ along with ‘EmployeeId’ to the ‘EmployeeInfo’ wsdl.
  4. So we have to create another Business Service calling ‘EmployeeName’ wsdl.
  5. From the MessageFlow using Service Callout call the ‘EmployeeName’ wsdl. While calling that service pass the ‘EmployeeInfo->EmployeeId’ to the ‘EmployeeName Request variable’ using Assign activity.
  6. Get the response from ‘ EmployeeName Response variable’ and replace it on ‘EmployeeInfo->EmpName’ using Replace activity. This concept is called Message Enrichment.

This is how and why Service Callout is used in OSB. Find below few screnshots for your reference.

The below screen explains about service callout variables (similar to Invoke activity input, output variables)

Note: In all the below screens please assume Customer as Employee.

ServiceCallout

Below screen explains about how we assign ‘EmployeeInfo->EmployeeId’ to ‘EmployeeName request variable’ with the help of Assign.

Assign

Below screen explains about how we replace the EmployeeInfo payload, ‘EmployeeInfoBS->EmployeeName input field’ to ‘EmployeeNameBS response variable’ with the help of Replace.

Replace

To make the above example work we need two SOA services ‘EmployeeInfo’ (Asynchronous) and ‘EmployeeName’ (synchronous) to be created and deployed on server. Which then have to be used in OSB project for creating business services.

Find below screens for SOA BPEL for EmployeeInfo’ (Asynchronous)

EmployeeInfoProcess

Find below screens for SOA BPEL for ‘EmployeeName’ (synchronous).

EmployeeNameProcess

Hope this post helps you to understand concept of Service Callout in OSB.

Advertisements

OSB 11g Installation (Software Required for Setup and links to download)

For complete set up of OSB we need to install multiple software on our machine and this post put all the necessary information for that here.

The below information is specific to Windows OS 64 bit machine.

1) Download JDK 6 and install
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html

2) Download Oracle DB 11g XE and Install (while configuration remember password given)
http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html

3) Download RCU 11.1.1.7.0 and Install (Give DB credentials as username:sys, password: pwd given while DB installation, host: localhost, port:1521, service: XE) & in in step check the SOA & BPM Infrastructure checkbox as we need those schema only)
http://www.oracle.com/technetwork/middleware/soasuite/downloads/soasuite11gdownload-2210918.html

4) Download weblogic server 10.3.6 generic . It is available in three locations given below.
http://www.oracle.com/technetwork/middleware/soasuite/downloads/soasuite11gdownload-2210918.html [10.3.6 Size: 0.99 GB] (or)
http://www.oracle.com/technetwork/middleware/service-bus/downloads/index.html (or)
http://www.oracle.com/technetwork/middleware/weblogic/downloads/wls-main-097127.html [Generic (997 MB) ]

Note: While Installation you have to specify Middle ware directory, remember that.

5) Download OEPE 11.1.1.8 (oepe-indigo-win64.zip) and place the extracted folder into the Middlware folder created in earlier step.
http://www.oracle.com/technetwork/developer-tools/eclipse/downloads/oepe-11118-521475.html

6) Download Oracle Service Bus Generic (Release 11gR1 (11.1.1.7.0)
http://www.oracle.com/technetwork/middleware/service-bus/downloads/index.html

After download open the OSB installer file and go to win64 installer. Run the installer (double click on it). It will ask for JDK path, provide the JDK path and it launch the installation wizard.

e.g. D:\Softwares\Fusion\ofm_osb_generic_11.1.1.7.0_disk1_1of1\Disk1\install\win64

e.g: C:\Program Files\Java\jdk1.6.0_45

Domain Setup: Once you are done with above installations then you need to do a domain creation/ configuration.

Windows -> All Programs -> oracle weblogic -> Weblogic Server 11gr1-> Tools -> Configuration Wizard.

I hope this post helps you to set up OSB 11g on your machine. If you have any doubts feel free to post in the comment section.