Create your first SOA Composite - Hello World ! Process

Start JDeveloper.  Left click Applications node in the Applications Navigator and select New Application, as shown
Create an Application named Training.Give “Training” in Application nameSelect a suitable location and select SOA Application in the Application Template



The wizard now prompts you to create a project.  Later, you can add more projects to this application.

Give the project name as HelloWorld

Select Composite template as Composite with BPEL Process.  This is a convenient shortcut to tell that the composite we want to create would contain one BPEL process.  As an alternative, we can choose Empty Composite here,  add add a BPEL component later.



Click on Finish
  
A new dialog opens up.  This is to configure the BPEL component that we are adding to our composite.

Give name as HelloWorld_BPELSelect Template as Synchronous BPEL Template and click ok.


Templates are pre-defined structures provided by Oracle.  Essentially, by using a template, a few activities shall come by default, so that you are saved of the mundane steps of adding those activities.  It’s even possible to create your own custom templates.  As of now, we select the predefined template for a synchronous process.  A synchronous process is one which is expected to be comparatively short-lived (few seconds to minutes) and hence can be expected to return a response quite quickly.  So, the client invoking a synchronous process can afford to wait (and block) for the response to come back.
 
 The following structure comes up.



This is the picture of the composite (more technically, it’s the design time view of composite.xml).  As you can see, it contains a service component called HelloWorld_BPEL and a binding component called helloworld_bpel_client.

 Service components are the building blocks that you use to construct a SOA composite application. Examples - BPEL, Human Task, Business Rules, Mediators, Spring.

 Binding component establish a connection between a SOA composite and the external world.  They are categorized as Service binding component and Reference binding components.  Service binding components provide the entry point to the composite Reference binding components provides access to the external service in the outsideworld.  Examples include JCA Adapters (FTP adapter, DB adapter, Apps adapter etc), HTTP Binding, Direct binding etc.


  Double click on this component to open it up.



As you can see, there is an input coming from the helloworld_bpel_client service binding  (which represents any client that is invoking our BPEL process).
 Drag an Assign activity from the component palette on the right.



In this assign activity, we can add any number of “Copy rules”.  Copy rules allow us to copy values from a source variable to a target variable, or to assign result of an expression (say a concatenate operation or a square root operation) to a target variable.

 We want to create an expression similar to
“Hello” + Input = Output. 
This we shall create using the following steps:
  1. Expand output variable so that you can see client:result.  This is the string field to which we want to assign some value.
  1. From the icons on top right corner, drag an expression  onto client:result.
  1. 3 . A dialog called Expression Builder opens up.  Expression builder is a nifty tool to quickly create expressions.  It shows categories of operations.  You choose a category and it shows you the expressions within that category.   For example 



1.      Here we choose “concat” function from the String Functions category
2.      Click on Insert into expression.  This puts the concat() into the Expression box above.  (When you get experienced, you can simply write functions directly here.).  Place the mouse cursor between “(“ and “)” of the concat function
3.      Next we expand the input and select the client:input field.  This is the field that has got the value that was sent by the user.  We want to append hello to this and assign that to the output variable.  So choose this
4.      Press Insert into expression
5.      Type ‘Hello’ followed by a comma.    Note that in BPEL, (or more precisely xpath) we use single quotes for strings

Now press OK.  Control returns to Edit Assign dialog.  Now expand the outputVariablein the To section (right section) and select client:result field.  Press OK




This has completed the Assign activity.  For better readability we should always give descriptive names to activities.  So double click on the text “Assign1” (not the icon) and give name as “Assign_Hello”
  


The BPEL process is now complete !




Now we shall deploy this to the BPEL Server.  Make sure you have created connection to the application server.  If not, here are the steps 
  1. Go to Application Server Navigator tab.  Right click Application Servers and select New Application Server
  1. Select Standalone Server




In SOA, we always use Standalone.  Integrated is used when creating ADF apps.
  1. Give a name to the connection, like MyApplicationServer.  Select Weblogic  10.3 from the Connection type



Give Username as weblogic, and password as the weblogic password specified during installation

  1. If the SOA suite is running on your local system, then enter localhost in the Weblogic Hostname, else give the actual hostname.  No need to change ports.  In the weblogic domain, give the name of your domain as given in <MW_HOME>\user_projects\domains.  For example we have E:\Middleware\SOASuite11gR1PS3\user_projects\domains\SOASuitePS3DevDomain


Here Port (aka “Listen Port”) is default TCP port that this server uses to listen for regular (non-SSL) incoming connections.  To find this out, simple copy the port in the EM url.
  1. After this you can test the connection.  All tests should be successful. 


Now go back to JDeveloper and right click the composite “HelloWorld” in the Application Navigator.  Select Deploy > HelloWorld 


In the next step, select Deploy to Application Server.  Click nextMake sure Mark composite as default is checked, click nextSelect MyApplicationServer.  Let it choose the default partition, click finish

The log window will show that BPEL process is being compiled, and then deployed onto the server.


Now we want to run this program to see it in action !
Go to EM console now.  http://localhost:7001/em/Expand the tree on the left pane as shown and select HelloWorld
Select Test Button.  Then give some string in the input text field.  And then press Test Webservice button Test Web Service




Here EM console is acting like a client to our process.  It takes this input, creates a SOAP message and then sends that message to our BPEL process.
The output from the BPEL process is shown:

  You can now also click on the Launch Flow Trace button  to see the actual flow of the process.  Make sure you allow popups !!.  In mozilla, you may see the settings at bottom right corner.

 The flow trace page will open up



Flow Trace page shows the flow of messages through one or more connected SOA composite applications, their services, references, and service components. You can also view and respond to faults occurring in the flow and view composite sensor data collected in the flow.

ECID is a unique identifier for this flow (A flow can contain multiple composites, although in this HelloWorld, there is only one composite.  SOA server makes sure that all composites invoked during a single flow have this common value, which is used later on to connect them to each other.  This ability to identify a flow is something new in 11g). Note, ECIDs are not propagated through business events.

 To open the BPEL process, click on HelloWorld_BPEL link. It will open in a popup window

Here you can observe the various activities in Audit Trail as well as Flow tabs.  Audit tab is useful if you want to see the times each activity was invoked, inputs and outputs etc.  Similar information can also be gleaned from the Flow tab.  Click on the flow tab


While this looks similar to the BPEL diagram we had in JDeveloper, there is a difference.  Here the activities are links, and when we click on them, they show more information regarding the data processed.  For example, to find out the input, we can click the Receive activity (receiveInput) and see the following



Thank YOU...




































































































































































































Leave a Reply

Subscribe to Posts | Subscribe to Comments

About This Site

Howdy! My name is Suersh Rohan and I am the developer and maintainer of this blog. It mainly consists of my thoughts and opinions on the technologies I learn,use and develop with.
Powered by Blogger.

- Copyright © My Code Snapshots -Metrominimalist- Powered by Blogger - Designed by Suresh Rohan -