<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3814019208606334611</id><updated>2012-01-17T10:01:48.945-08:00</updated><category term='Oracle SOA Suite parallelism Flow Flow-N BPEL Activity'/><category term='Oracle SOA Suite BPEL compensate handler activity'/><category term='Oracle SoA Suite BPEL Correlation WS-Addressing'/><title type='text'>Exploring Oracle SOA Suite : BPEL Activities</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://swapnil-soa.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://swapnil-soa.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Swap</name><uri>http://www.blogger.com/profile/08483784637686996735</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_InZVG6F1ZIc/R5WRMx1h-NI/AAAAAAAAAAU/O8O6S_W0DJc/S220/swap.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3814019208606334611.post-2201495318638317094</id><published>2008-04-22T05:57:00.000-07:00</published><updated>2009-03-30T23:53:45.996-07:00</updated><title type='text'>Creating OLite Connection from JDeveloper</title><content type='html'>Follow the steps below to configure connection to OLite DB from JDeveloper for ESB and BPEL tables.&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;1. Go to Connection Navigator&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;2 Right click Databases  and select “Create New Database Connection”&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;Approach #1&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;3. Select “Third Party JDBC Driver” and click Next&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;4. Provide “system/any” as Username/password &lt;span style="font-family:georgia;"&gt;for SID:"oraesb" &lt;/span&gt;.&lt;/p&gt;&lt;p&gt;5. Provide “system/password” as Username/password for SID:"orabpel" .&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;6. You may need to create a Oracle Lite Jar classpath entry. Click Browse-&gt; Add Entry &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;and navigate to %ORA_HOME%\bpel\lib\olite40.jar&lt;/span&gt;&lt;/p&gt;&lt;p&gt;6. Provide the url for the connection as specified in %ORAHOME%\j2ee\home\config\datasources.xml&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;7. Test Connection and you are on your way.&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;Approach #2&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;3. Select “Oracle Lite” as driver and click Next&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;4. Provide “system/any” or "system/password" as Username/password.&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;5. Provide following details –&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;Host-localhost&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;Port-1531&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;SID – oraesb or orabpel for your SID of choice.&lt;span style="font-family:georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;6. Test Connection and you should be on your way.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814019208606334611-2201495318638317094?l=swapnil-soa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swapnil-soa.blogspot.com/feeds/2201495318638317094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814019208606334611&amp;postID=2201495318638317094' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/2201495318638317094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/2201495318638317094'/><link rel='alternate' type='text/html' href='http://swapnil-soa.blogspot.com/2008/04/creating-olite-connection-from.html' title='Creating OLite Connection from JDeveloper'/><author><name>Swap</name><uri>http://www.blogger.com/profile/08483784637686996735</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_InZVG6F1ZIc/R5WRMx1h-NI/AAAAAAAAAAU/O8O6S_W0DJc/S220/swap.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814019208606334611.post-7616458526852878513</id><published>2008-01-29T02:51:00.000-08:00</published><updated>2008-12-10T13:49:07.522-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle SoA Suite BPEL Correlation WS-Addressing'/><title type='text'>Correlation Illustrated</title><content type='html'>&lt;strong&gt;Correlation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This post would effort to explore the meaning and need of correlating requests and the best way to do them using Oracle SOA Suite.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What &amp;amp; Why&lt;/strong&gt;&lt;br /&gt;In common business scenarios it is not possible to have a synchronous response to each of our requests. Mostly the business has to deal with vendors, who would need to undergo a detailed process to come up with a solution. However, this response may not be necessarily binding business from carrying on its other activities. In such scenarios, the business enters in to asynchronous communication with these third parties. The async process necessarily stresses that the response may come back at a later time, through callback or polling mechanism as is suitable.&lt;br /&gt;&lt;br /&gt;In case of a single instance its quite easy to match the response to request, however, when there are multiple instances the business would be wondering which request has been responded to. For example, if a travel booking agent spawns 10 requests for Frankfurt to Paris, and after a while airline responds to one of those 10 requests, it would not be safe to assume that this is a response to first request only. Hence the travel agent would tag in an ID to segregate one request for another, and would expect the airline to return this id unaltered to match the request. This id, which enables requestor to correlate the response sent by the provider, is called Correlation Id.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How (in Oracle BPEL)&lt;/strong&gt;&lt;br /&gt;Oracle BPEL provides us with two mechanisms through which an asynchronous callback message could map to its calling instance in the crowd.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;WS-Addressing&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Correlation Sets&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;WS-Addressing&lt;/strong&gt;&lt;br /&gt;“How does the callback maps to the correct instance out of so many waiting processes”, it’s a very common surprise to all beginners, creating first ever Asynchronous Invoke in BPEL Process Manager. The answer is, any time an asynchronous service is invoked, Oracle BPM, instills a message UID in WS-Addressing headers that float with SOAP Packets, which are used internally by the BPEL Server to correlate the flowing request/response.&lt;br /&gt;&lt;br /&gt;This is the default mechanism supported by Oracle BPEL Process Manager, which is overridden automatically when the user opts to create his own correlation set.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Correlation Sets&lt;/strong&gt;&lt;br /&gt;Correlation Sets enable you to correlate asynchronous messages based on message body contents.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The question now arises, why ever would a BPEL developer like to over-ride default WS-Addressing correlation and use content-based correlation. Well, he won’t have to; if the called service is an Oracle BPEL, or the one, which supports and retains WS-Addressing headers sent, and returns the same in response.&lt;br /&gt;&lt;br /&gt;The reasons, to use content-based correlation, could be many; some of the familiar ones that come to my mind are –&lt;br /&gt;&lt;br /&gt;1. The asynchronous web service invoked by BPEL does not support/understand WS-Addressing headers.&lt;br /&gt;2. When BPEL instance is expecting messages from a third party, for example, a file-poller.&lt;br /&gt;3. When asynchronous call has multiple hops and reply is received directly from end system. For example, Request path is A &gt; B &gt; C  &gt; D and response comes to A directly from D, i.e. D &gt; A.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;WE now understand and appreciate, need of correlation and the two mechanisms to achieve correlation. In WS-Addressing, we, as in developer, does not bother of how the correlation ID is created and maintained. However, in content-based correlation the responsibility of managing correlation set, defining property alias and initializing the correlation with appropriate value falls on developer.&lt;br /&gt;&lt;br /&gt;To understand how to perform these tasks, we would start by understanding in which activities do we need correlation. The Correlation is required whenever data is going out or coming in to the BPEL process, hence Correlation works only with Invoke, Receive, Pick and Reply activities.&lt;br /&gt;&lt;br /&gt;To create a correlation of our own, we need to create the Correlation Set first. A correlation set is a set of properties shared by all messages in the correlated group.&lt;br /&gt;&lt;br /&gt;The correlation set is normally instantiated on invoke or receive activity. When correlation is instantiated on receive activity it is fairly straight forward, you create a correlation set, and select initiate = “yes”.&lt;br /&gt;&lt;br /&gt;However, when you have to create correlation set on invoke, we have one addition option to understand, it’s the “pattern”. Now before we move ahead with “pattern”, lets explore what is “initiate” option.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_InZVG6F1ZIc/R58Mzy5_s-I/AAAAAAAAAAs/N53X6K1asHU/s1600-h/invokePattern.jpg"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_InZVG6F1ZIc/R58Mzy5_s-I/AAAAAAAAAAs/N53X6K1asHU/s320/invokePattern.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5160857781967762402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;picture&gt;&lt;br /&gt;&lt;br /&gt;If initiate option is set to “yes” this means that we assign the value to correlation variable. When initiate option is set to “no” this means, we want to validate the value against, value stored in correlation variable.&lt;br /&gt;&lt;br /&gt;With this in mind, we would try to understand, the “pattern” option of Correlation tab in invoke activity.&lt;br /&gt;&lt;br /&gt;When initiate = “yes”,&lt;br /&gt;Pattern=”in” means the correlation is being instantiated with a  value that is coming into the BPEL, from another service. Clearly, this invoke is then not the one which is invoking an asynchronous process, as the pattern suggests a response coming back.&lt;br /&gt;Pattern = “out” means the correlation is being instantiated on the message that is going out of our BPEL.&lt;br /&gt;Pattern = “out-in” means the correlation would be set on a variable that is part of both outgoing and incoming parameter, in this synchronous invoke. However, its nature is very much questionable.&lt;br /&gt;&lt;br /&gt;When initiate=”no”&lt;br /&gt;The above patterns would reflect which way the variable needs to be validated, inward, outward or both ways.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Creating a Correlation Set &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Correlation sets uses correlation tokens available inside messages, headers or business documents. Correlation tokens are the declarative properties of messages. A property is an element within a message identified by a query. Property aliases are the constructs to specify the queries to identify properties.&lt;br /&gt;&lt;br /&gt;To create Correlation Set click the Create &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_InZVG6F1ZIc/R58NTC5_s_I/AAAAAAAAAA0/wnoPcK457xw/s1600-h/createIcon.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_InZVG6F1ZIc/R58NTC5_s_I/AAAAAAAAAA0/wnoPcK457xw/s320/createIcon.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5160858318838674418" /&gt;&lt;/a&gt; icon, and insert the appropriate values. As shown in the diagram below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_InZVG6F1ZIc/R58N5i5_tAI/AAAAAAAAAA8/UqGVoHBpdx4/s1600-h/CrCorrSet.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_InZVG6F1ZIc/R58N5i5_tAI/AAAAAAAAAA8/UqGVoHBpdx4/s320/CrCorrSet.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5160858980263638018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here you would also need to create a Property (not shown in diagram above, its just beneath Xpath text box. This way we declared one of the property alias for instantiation, we need to create another one for validation.&lt;br /&gt;&lt;br /&gt;Select the BPEL in diagram, in the adjacent Structure window, you would see set of properties. Right Click Property Alias, and select “Create Property Alias…”.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_InZVG6F1ZIc/R58N6C5_tBI/AAAAAAAAABE/vzkAtiemgRg/s1600-h/CreatePropAlias.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_InZVG6F1ZIc/R58N6C5_tBI/AAAAAAAAABE/vzkAtiemgRg/s320/CreatePropAlias.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5160858988853572626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, select the appropriate message part, and then enter Xpath query string in the text box. You can use Ctrl+Space for Autofill.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_InZVG6F1ZIc/R58N6C5_tCI/AAAAAAAAABM/yTT2nKtmz8k/s1600-h/CreatePropAlias2.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_InZVG6F1ZIc/R58N6C5_tCI/AAAAAAAAABM/yTT2nKtmz8k/s320/CreatePropAlias2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5160858988853572642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, select the appropriate message part, and then enter Xpath query string in the text box. You can use Ctrl+Space for Autofill.&lt;br /&gt;&lt;br /&gt;References :&lt;br /&gt;&lt;a href="http://blogs.oracle.com/reynolds/discuss/msgReader$50?mode=day"&gt;Antony Reynold's Correlation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.orablogs.com/reynolds/archives/001572.html"&gt;Antony Reynold's on Pattern and Initiate&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814019208606334611-7616458526852878513?l=swapnil-soa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swapnil-soa.blogspot.com/feeds/7616458526852878513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814019208606334611&amp;postID=7616458526852878513' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/7616458526852878513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/7616458526852878513'/><link rel='alternate' type='text/html' href='http://swapnil-soa.blogspot.com/2008/01/correlation-this-post-would-effort-to.html' title='Correlation Illustrated'/><author><name>Swap</name><uri>http://www.blogger.com/profile/08483784637686996735</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_InZVG6F1ZIc/R5WRMx1h-NI/AAAAAAAAAAU/O8O6S_W0DJc/S220/swap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_InZVG6F1ZIc/R58Mzy5_s-I/AAAAAAAAAAs/N53X6K1asHU/s72-c/invokePattern.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814019208606334611.post-4238140591609955283</id><published>2008-01-23T22:57:00.000-08:00</published><updated>2008-01-23T23:05:19.403-08:00</updated><title type='text'>Invoking Java - The WSDL way</title><content type='html'>&lt;div align="justify"&gt;WSIF defines additional binding extensions so that EJBs, local java classes, software accessible over message queues using the JMS API and software that can be invoked using the Java Connector architecture can also be described in WSDL.  &lt;br /&gt;&lt;br /&gt;The Java binding is a WSDL binding that allows abstract functionality in the abstract service description (messages, operations and port types) to be mapped to functionality offered by a Java class directly. This means that a Java class can be described using WSDL, and can be accessed as a WSDL-described service through WSIF.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;How to create a WSIF WSDL?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Add these two schema to your definitions tag&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;xmlns:format="http://schemas.xmlsoap.org/wsdl/formatbinding/"&lt;br /&gt;xmlns:java=”http://schemas.xmlsoap.org/wsdl/java/”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The format namespace adds support for mapping Java types to XML schema.&lt;br /&gt;The java namespace allows mapping WSDL operation to Java methods.&lt;br /&gt;&lt;br /&gt;Specify binding Information&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;binding name="JavaBinding" type="tns:TestService"&gt;&lt;br /&gt;     &lt;java:binding/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Binding name specifies the name which would be reffered from service tag.&lt;br /&gt;Binding type specifies the portType, specified in WSDL&lt;br /&gt;The java:binding tag identifies that this is bound to Java code rather than a SOAP service.&lt;br /&gt;&lt;br /&gt;This binding would encompass, formatting information, i.e. which XML tag is to be mapped to what Java DataType&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;&lt;format:typemapping encoding="Java" style="Java"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The format:typeMapping tag tells us that we will be mapping XML Schema types onto Java types.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;&lt;format:typemap typename="xsd:string" formattype="java.lang.String"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The format:typeMap tag explains what Java type is to be used for each XML schema type in the interface.&lt;br /&gt;&lt;br /&gt;The Service Tag refers to binding tag for mapping information.&lt;br /&gt;The Java:address tag specifies fully qualified classname which contains implementations of operations specified inside binding tag.&lt;br /&gt;&lt;br /&gt; &lt;span style="color:#3333ff;"&gt;&lt;span style="font-size:85%;"&gt;&lt;service name="TaskServiceService"&gt;&lt;br /&gt;   &lt;port name="TaskServicePort" binding="tns:TaskServiceWSIFBinding"&gt;&lt;br /&gt;     &lt;java:address classname="oracle.bpel.services.workflow.task.impl.TaskServiceWSIF"&gt;&lt;br /&gt;   &lt;/port&gt;&lt;br /&gt; &lt;/service&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814019208606334611-4238140591609955283?l=swapnil-soa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swapnil-soa.blogspot.com/feeds/4238140591609955283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814019208606334611&amp;postID=4238140591609955283' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/4238140591609955283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/4238140591609955283'/><link rel='alternate' type='text/html' href='http://swapnil-soa.blogspot.com/2008/01/invoking-java-wsdl-way.html' title='Invoking Java - The WSDL way'/><author><name>Swap</name><uri>http://www.blogger.com/profile/08483784637686996735</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_InZVG6F1ZIc/R5WRMx1h-NI/AAAAAAAAAAU/O8O6S_W0DJc/S220/swap.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814019208606334611.post-1049247115121761353</id><published>2008-01-21T23:12:00.000-08:00</published><updated>2008-12-10T13:49:07.669-08:00</updated><title type='text'>Experiencing the Unimplemented</title><content type='html'>&lt;strong&gt;Implementing Link Activity on Oracle BPEL Process Editor&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Business Process inherently supports sequencing of business tasks. The business processes, in real time, however, are always desired to run in parallel. Business process specification provides a structured activity called ‘Flow’ to achieve parallelism.&lt;br /&gt;&lt;br /&gt;Illustratively, business process like Loan Approval would be looking in to run the Paper work, Field Investigation and Background Checking processes in parallel, so that the total turn-around time could be lessened. However, in this when scrutinized,&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_InZVG6F1ZIc/R5WYMB1h-PI/AAAAAAAAAAg/Z7YEXsi28ZI/s1600-h/loanAppr.bmp"&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_InZVG6F1ZIc/R5WYMB1h-PI/AAAAAAAAAAg/Z7YEXsi28ZI/s320/loanAppr.bmp" border="0" alt="" id="BLOGGER_PHOTO_ID_5158196280641583346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The bank won’t like to initiateApprovalProcess until FieldIntvestigation and BackgroundChecking process is complete. So here we have a scenario of holding activity in one sequence till other activities in parallel flow have completed.&lt;br /&gt;&lt;br /&gt;This means I would like to somehow suggest the BPEL Process Manager, not to initateApprovalProcess Activity, till the other two sequences have been completed. Oracle BPEL does not provide any direct BPEL process activity to meet this end. However BPEL specification does not fail to mention an activity to cater this need. This activity is called the LINK activity.&lt;br /&gt;&lt;br /&gt;In this scenario, we would declare a link name in scope of flow, as –&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;links&amp;gt;&lt;br /&gt;       &amp;lt;link name="BackgroundCheckLink"&amp;gt;&lt;br /&gt;       &amp;lt;link name="FieldInvestigationLink"&amp;gt;&lt;br /&gt;&amp;lt;/links&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now this link name is mentioned as source on the activity, which must complete, and as target for the activity, which needs to wait. In the above scenario, we would name two link activities, BackgroundCheckLink and FieldInvestigaitonLink.&lt;br /&gt;BackgroundCheckLink is mentioned as source on BackgroundCheckSequence and FieldInvestigaitonLink is mentioned as source on FieldInvestigationSequence. Since both these links must have executed, both the links are mentioned as target on Invoke Activity.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;&amp;lt;sequence name="BackgroundCheck"&amp;gt;&lt;br /&gt;       &amp;lt;source linkname="BackgroundCheckLink"&amp;gt;&lt;br /&gt;       :&lt;br /&gt;       :&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&amp;lt;sequence name="FieldInvestigation"&amp;gt;&lt;br /&gt;       &amp;lt;source linkname="FieldInvestigationLink"&amp;gt;&lt;br /&gt;       :&lt;br /&gt;       :&lt;br /&gt;&amp;lt;/sequence&amp;gt;&lt;br /&gt;&amp;lt;invoke name="InitiateApprovalProcess"&amp;gt;&lt;br /&gt;       &amp;lt;target linkname="FieldInvestigationLink"&gt;&lt;br /&gt;       &amp;lt;target linkname="BackgroundCheckLink"&gt;&lt;br /&gt;       :&lt;br /&gt;       :&lt;br /&gt;&amp;lt;/sequence&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So, after this addition to your .bpel file, the activity would wait before activating  initiateApprovalProcess invoke until, both the sequences, BackgroundCheck and FieldInvestigation have completed.&lt;br /&gt;&lt;br /&gt;I need to present a case on how to provide conditioning on THE LINKS. May be some time soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814019208606334611-1049247115121761353?l=swapnil-soa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swapnil-soa.blogspot.com/feeds/1049247115121761353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814019208606334611&amp;postID=1049247115121761353' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/1049247115121761353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/1049247115121761353'/><link rel='alternate' type='text/html' href='http://swapnil-soa.blogspot.com/2008/01/experiencing-unimplemented.html' title='Experiencing the Unimplemented'/><author><name>Swap</name><uri>http://www.blogger.com/profile/08483784637686996735</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_InZVG6F1ZIc/R5WRMx1h-NI/AAAAAAAAAAU/O8O6S_W0DJc/S220/swap.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_InZVG6F1ZIc/R5WYMB1h-PI/AAAAAAAAAAg/Z7YEXsi28ZI/s72-c/loanAppr.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814019208606334611.post-3178664761412276977</id><published>2008-01-21T22:50:00.000-08:00</published><updated>2008-01-21T22:54:01.480-08:00</updated><title type='text'>Oracle Workflow Patterns</title><content type='html'>&lt;strong&gt;Simple Workflow&lt;/strong&gt;&lt;br /&gt;Some user activity is required for the business process to carry on. The business process may still continue, if human task expires, along some other flow.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Simple Workflow with Auto Escalation&lt;/strong&gt;&lt;br /&gt;When a human task expires, the task can then be escalated to assignee’s manager (default rule) or to some other person, as specified by the Escalation Function.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Simple Workflow with Auto Renewal&lt;/strong&gt;&lt;br /&gt;Renewal differs from Escalation, in terms, when the task is escalated; it goes to some other person, when renewed, the task is reassigned to the same user.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Sequential Workflow&lt;/strong&gt;&lt;br /&gt;This pattern, routes the human task to business users in a sequential manner.&lt;br /&gt;Sequential Workflow with Escalation&lt;br /&gt;&lt;br /&gt;In case some user is not performing an action for desired time, his task could be escalated to his supervisors.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Parallel Workflow&lt;br /&gt;&lt;/strong&gt;When multiple users work on a single task at a given point of time, for example, voting, this is termed as parallel workflow.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Parallel Workflow with Final Reviewer&lt;/strong&gt;&lt;br /&gt;Used to exist in earlier Workflow product of Oracle&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Adhoc Workflow&lt;br /&gt;&lt;/strong&gt;The task is assigned to a user, where he decides where the task should go next, and completes when one of the assignees finally work on the task.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;FYI Tasks&lt;br /&gt;&lt;/strong&gt;FYI tasks are those, which just allow the assignees to add comments/attachments, but their action does not affect the execution of business process.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;External Routing Service&lt;br /&gt;&lt;/strong&gt;When a third party routing algorithm determines the assignment and routing policy,.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Task Continuation&lt;br /&gt;&lt;/strong&gt;Oracle allows you to perform a task continuation, where in the history, attachments and comments are accessible from the previous task. An example could be if you wish to implement Parallel workflow with final reviewer. The first task would be a group vote, and in second task, you can check task continuation, for the reviewer to understand basis of vote, if need be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814019208606334611-3178664761412276977?l=swapnil-soa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swapnil-soa.blogspot.com/feeds/3178664761412276977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814019208606334611&amp;postID=3178664761412276977' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/3178664761412276977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/3178664761412276977'/><link rel='alternate' type='text/html' href='http://swapnil-soa.blogspot.com/2008/01/oracle-workflow-patterns.html' title='Oracle Workflow Patterns'/><author><name>Swap</name><uri>http://www.blogger.com/profile/08483784637686996735</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_InZVG6F1ZIc/R5WRMx1h-NI/AAAAAAAAAAU/O8O6S_W0DJc/S220/swap.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814019208606334611.post-4432484359378460135</id><published>2008-01-21T22:35:00.000-08:00</published><updated>2008-01-21T22:40:20.519-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle SOA Suite BPEL compensate handler activity'/><title type='text'>Problem with compensate in Oracle 10.1.3.1.0</title><content type='html'>There seems to be a problem with compensation handler implementation with Oracle 10.1.3.1.0. In case, you face similar problem, think upgrading to 10.1.3.1.3, instead of  investing time to pull out a solution.&lt;br /&gt;   &lt;br /&gt;The problem is :: A scope which throws the exception also gets compensated, even when it is not completed, which is  not in accordance with BPEL specification, which says, the scope should only be compensated if the scope is completed, faulting scope shall not be compensated.&lt;br /&gt;&lt;br /&gt;Moreover, if a scope is not activated yet, i.e., no activity of this scope is executed, then this scope would not be compensated, even if some peer scope faults.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814019208606334611-4432484359378460135?l=swapnil-soa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swapnil-soa.blogspot.com/feeds/4432484359378460135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814019208606334611&amp;postID=4432484359378460135' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/4432484359378460135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/4432484359378460135'/><link rel='alternate' type='text/html' href='http://swapnil-soa.blogspot.com/2008/01/problem-with-compensate-in-oracle.html' title='Problem with compensate in Oracle 10.1.3.1.0'/><author><name>Swap</name><uri>http://www.blogger.com/profile/08483784637686996735</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_InZVG6F1ZIc/R5WRMx1h-NI/AAAAAAAAAAU/O8O6S_W0DJc/S220/swap.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3814019208606334611.post-6283994938154761037</id><published>2008-01-21T22:26:00.000-08:00</published><updated>2008-01-23T21:08:14.970-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle SOA Suite parallelism Flow Flow-N BPEL Activity'/><title type='text'>The controversial parallelism in Flow activity</title><content type='html'>&lt;div align="justify"&gt;&lt;span&gt;There had been a lot of discussions detailing whether Flow activity provides parallelism as it promises. It was believed earlier, that&lt;i&gt; Oracle does not provide parallelism under Windows OS&lt;/i&gt;, and they are working on it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The common perception was all activities in lined sequences, were invoked one after the other, and the next activity is not picked up for execution lest the one in hand yeilds. However, observing a bit of experiments, this could be safely concluded that only synchronous Invoke activities bind the BPEL engine from executing any other activity. The wait, receive, pick and other such blocking activities are simply spawned and next activity is picked up for execution.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3814019208606334611-6283994938154761037?l=swapnil-soa.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://swapnil-soa.blogspot.com/feeds/6283994938154761037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3814019208606334611&amp;postID=6283994938154761037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/6283994938154761037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3814019208606334611/posts/default/6283994938154761037'/><link rel='alternate' type='text/html' href='http://swapnil-soa.blogspot.com/2008/01/controversial-parallelism-in-flow.html' title='The controversial parallelism in Flow activity'/><author><name>Swap</name><uri>http://www.blogger.com/profile/08483784637686996735</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_InZVG6F1ZIc/R5WRMx1h-NI/AAAAAAAAAAU/O8O6S_W0DJc/S220/swap.jpg'/></author><thr:total>1</thr:total></entry></feed>
