<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>The Real Ranch!!!</title>
	<atom:link href="http://soaranch.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://soaranch.wordpress.com</link>
	<description>There is something about SOA</description>
	<lastBuildDate>Thu, 05 Jan 2012 06:08:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='soaranch.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>The Real Ranch!!!</title>
		<link>http://soaranch.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://soaranch.wordpress.com/osd.xml" title="The Real Ranch!!!" />
	<atom:link rel='hub' href='http://soaranch.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Dynamic Value Mapping in OSB via Custom XPaths</title>
		<link>http://soaranch.wordpress.com/2011/01/02/dynamic-value-mapping-in-osb-via-custom-xpaths/</link>
		<comments>http://soaranch.wordpress.com/2011/01/02/dynamic-value-mapping-in-osb-via-custom-xpaths/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 13:14:44 +0000</pubDate>
		<dc:creator>Sandeep Phukan</dc:creator>
				<category><![CDATA[11g]]></category>
		<category><![CDATA[BPEL]]></category>
		<category><![CDATA[Composite]]></category>
		<category><![CDATA[DVM]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OSB]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[XPath]]></category>
		<category><![CDATA[XQuery]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://soaranch.wordpress.com/?p=181</guid>
		<description><![CDATA[I. Overview OSB 11g R1 does not have DVM support. Now this is perfectly fine for clients who are using DVMs as part of the SOA Composites. But considering the fact that Oracle Mediator 11g has DVM functionality, and that many clients would have a migration path from Mediator based artifacts to OSB 11g, this&#160;&#8230; <a href="http://soaranch.wordpress.com/2011/01/02/dynamic-value-mapping-in-osb-via-custom-xpaths/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=181&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>I. Overview</strong></p>
<p>OSB 11g R1 does not have DVM support. Now this is perfectly fine for clients who are using DVMs as part of the SOA Composites. But considering the fact that Oracle Mediator 11g has DVM functionality, and that many clients would have a migration path from Mediator based artifacts to OSB 11g, this can be a problem.<br />
Clients can wait till Oracle releases the official support or resort to some ad hoc measures. Let’s look at such a solution. The solution is based on custom OSB XPaths.<br />
1. An OSB Proxy Service DVMLookup exposes DVMs and is based on the following xml input:<br />
<a href="http://soaranch.files.wordpress.com/2011/01/image001.jpg"></a></p>
<p><a href="http://soaranch.files.wordpress.com/2011/01/image001.jpg"></a><a href="http://soaranch.files.wordpress.com/2011/01/image001.jpg"><img class="aligncenter size-full wp-image-182" title="image001" src="http://soaranch.files.wordpress.com/2011/01/image001.jpg?w=640" alt=""   /></a></p>
<p>This matches closely with the Oracle SOA 11g DVM lookup XPAth lookupValue(DVM_TABLE_NAME,SOURCE_COLUMN_NAME,SOURCE_COLUMN_VALUE,TARGET_COLUMN_NAME,DEFAULT_VALUE)<br />
2. The customer DVMs can be added to the CommonServices/DVMs</p>
<p><a href="http://soaranch.files.wordpress.com/2011/01/image002.jpg"></a><a href="http://soaranch.files.wordpress.com/2011/01/image002.jpg"><img class="aligncenter size-full wp-image-183" title="image002" src="http://soaranch.files.wordpress.com/2011/01/image002.jpg?w=640&#038;h=256" alt="" width="640" height="256" /></a></p>
<p>3. This Service gets called via a Java class that is exposed as an OSB Custom XPath. The signature for the method call is<br />
public static String lookupValue(String DVMTableName,String SourceColumnName,String SourceColumnValue,String TargetColumnName,String DefaultValue)<br />
4. The dvm-custom xpath config file looks like this:</p>
<p><a href="http://soaranch.files.wordpress.com/2011/01/image001.jpg"><br />
</a><a href="http://soaranch.files.wordpress.com/2011/01/image003.jpg"></a><a href="http://soaranch.files.wordpress.com/2011/01/image003.jpg"><img class="aligncenter size-full wp-image-184" title="image003" src="http://soaranch.files.wordpress.com/2011/01/image003.jpg?w=640&#038;h=147" alt="" width="640" height="147" /></a></p>
<p><strong>II. Installation</strong></p>
<p>1. Download the package <a title="http://s-labs.googlecode.com/files/DVMLookup.zip" href="http://s-labs.googlecode.com/files/DVMLookup.zip">DVMLookup.zip</a>. This contains the following:<br />
a. OSB_Artifacts.jar: Contains the OSB Artifacts CommonServices and TestDVMLookup<br />
b. CustomXPath : Contains the custom xpath components viz. dvm-custom.xml, dvmLookup.jar and dvm-custom.properties<br />
c. SimpleDVMLookup: Contains the Eclipse project for the dvmLookup Java classes</p>
<p>2. Deploy the CommonServices and TestDVMLookup in OSB. In addition import these projects into OEPE.<br />
3. Copy all the contents of CustomXPath into the location %OSB_HOME%/config/ xpath-functions<br />
4. Restart Weblogic and OEPE. Weblogic admin startup log should show the DVM client successfully initiated</p>
<p><a href="http://soaranch.files.wordpress.com/2011/01/image004.jpg"></a><a href="http://soaranch.files.wordpress.com/2011/01/image004.jpg"><img class="aligncenter size-full wp-image-185" title="image004" src="http://soaranch.files.wordpress.com/2011/01/image004.jpg?w=640&#038;h=120" alt="" width="640" height="120" /></a></p>
<p>5. OEPE should show the custom xpath as follows:</p>
<p><a href="http://soaranch.files.wordpress.com/2011/01/image005.jpg"></a><a href="http://soaranch.files.wordpress.com/2011/01/image005.jpg"><img class="aligncenter size-full wp-image-186" title="image005" src="http://soaranch.files.wordpress.com/2011/01/image005.jpg?w=640&#038;h=241" alt="" width="640" height="241" /></a></p>
<p><strong>III. Post – Installation Checks</strong><br />
1. The current Setup contains a predefined set of DVMs within CommonServices/DVMs folder:</p>
<p><a href="http://soaranch.files.wordpress.com/2011/01/image002.jpg"></a><a href="http://soaranch.files.wordpress.com/2011/01/image002.jpg"><img class="aligncenter size-full wp-image-183" title="image002" src="http://soaranch.files.wordpress.com/2011/01/image002.jpg?w=640&#038;h=256" alt="" width="640" height="256" /></a></p>
<p>2. Test the DVMLookup proxy service within DVMLookupTest /DVMTest with the following input in the body</p>
<p><a href="http://soaranch.files.wordpress.com/2011/01/1.jpg"><img class="aligncenter size-full wp-image-191" title="1" src="http://soaranch.files.wordpress.com/2011/01/1.jpg?w=640&#038;h=123" alt="" width="640" height="123" /></a></p>
<p>3. The result response should be:</p>
<p><a href="http://soaranch.files.wordpress.com/2011/01/2.jpg"><img class="aligncenter size-full wp-image-192" title="2" src="http://soaranch.files.wordpress.com/2011/01/2.jpg?w=640&#038;h=204" alt="" width="640" height="204" /></a></p>
<p>This completes the Post installation check</p>
<p><strong>IV. Customizations</strong><br />
1. As already mentioned, the CommonServices/DVMs contains predefined DVMs. You would now need to insert your own dvms. Open your existing DVM and create a new XQuery Resource within the CommonServices/DVMs folder in OEPE or the OSB Console. You can use of the existing DVMs to insert your own values or copy the values in the template dvms, create a new XQuery Resource , paste the values and then modify the XQuery Resource with your own values.<br />
2. The LoadDVM stage of the proxy loads the DVM based on the DVM Table name. Hence, you have to add another else-if condition to insert the new DVMTable you just created.</p>
<p><a href="http://soaranch.files.wordpress.com/2011/01/image006.jpg"><img class="aligncenter size-full wp-image-187" title="image006" src="http://soaranch.files.wordpress.com/2011/01/image006.jpg?w=640&#038;h=841" alt="" width="640" height="841" /></a>4. The Java code for the custom xpath is also included. This can be handy if you want to change the namespaces or the hostname for the DVM Proxy.</p>
<p><strong>V. Usage</strong><br />
1. A typical XSLT transformation with the DVM Xpath looks like this:</p>
<p><a href="http://soaranch.files.wordpress.com/2011/01/dvmlookup.jpg"><img class="aligncenter size-full wp-image-205" title="DVMLookup" src="http://soaranch.files.wordpress.com/2011/01/dvmlookup.jpg?w=640&#038;h=174" alt="" width="640" height="174" /></a></p>
<p>2. Clearly, the only change is the namespace of the XPAth function. The new namespace is:</p>
<p>http://www.soa-utilities.com/osb/custom/xpath/soa.utilities.dvm.LookupTable</p>
<p>3. Each lookup call takes an average of 7 ms on a 4 GB Intel Core2 Duo@2.40 GHz running Weblogic Server and OSB. This would definitely perform a lot better in production boxes. To check for the exact lookup time, please execute the dvmLookup.jar on the installed machine. The default run tests for 100 lookups on one of the predefined DVMs.<br />
java –jar %OSB_HOME%/config/xpath-functions/dvmLookup.jar</p>
<p>Resources:</p>
<p>1. <a title="http://soalabs.googlecode.com/files/CustomXPathFunctions.zip" href="http://soalabs.googlecode.com/files/CustomXPathFunctions.zip">DVMLookup Package</a> (500 KB)</p>
<p>2.<a title="http://s-labs.googlecode.com/files/DVM_OSB_XPath.pdf" href="http://s-labs.googlecode.com/files/DVM_OSB_XPath.pdf"> PDF whitepaper </a>(200 KB)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/soaranch.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/soaranch.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/soaranch.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/soaranch.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/soaranch.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/soaranch.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/soaranch.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/soaranch.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/soaranch.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/soaranch.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/soaranch.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/soaranch.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/soaranch.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/soaranch.wordpress.com/181/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=181&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://soaranch.wordpress.com/2011/01/02/dynamic-value-mapping-in-osb-via-custom-xpaths/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af212ec63c07eac26ccb9284e3e4667a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleware</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2011/01/image001.jpg" medium="image">
			<media:title type="html">image001</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2011/01/image002.jpg" medium="image">
			<media:title type="html">image002</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2011/01/image003.jpg" medium="image">
			<media:title type="html">image003</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2011/01/image004.jpg" medium="image">
			<media:title type="html">image004</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2011/01/image005.jpg" medium="image">
			<media:title type="html">image005</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2011/01/image002.jpg" medium="image">
			<media:title type="html">image002</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2011/01/1.jpg" medium="image">
			<media:title type="html">1</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2011/01/2.jpg" medium="image">
			<media:title type="html">2</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2011/01/image006.jpg" medium="image">
			<media:title type="html">image006</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2011/01/dvmlookup.jpg" medium="image">
			<media:title type="html">DVMLookup</media:title>
		</media:content>
	</item>
		<item>
		<title>Importing SOA 11g standard XPath Functions into OSB 11g</title>
		<link>http://soaranch.wordpress.com/2010/11/01/importing-soa-11g-standard-xpath-functions-into-osb-11g/</link>
		<comments>http://soaranch.wordpress.com/2010/11/01/importing-soa-11g-standard-xpath-functions-into-osb-11g/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 21:50:17 +0000</pubDate>
		<dc:creator>Sandeep Phukan</dc:creator>
				<category><![CDATA[11g]]></category>
		<category><![CDATA[custom XPAth]]></category>
		<category><![CDATA[OSB]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[XPath]]></category>
		<category><![CDATA[XQuery]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://soaranch.wordpress.com/?p=166</guid>
		<description><![CDATA[Ok, so heres the problem. OSB 11g and SOA 11g XPath functions are not in Sync.  So, XSLTs that were developed in SOA 10g cannot be used directly in OSB 11g. One of the strong cases for this is the migration of all ESB based artifacts to OSB artifacts. One of the easiest  ways of&#160;&#8230; <a href="http://soaranch.wordpress.com/2010/11/01/importing-soa-11g-standard-xpath-functions-into-osb-11g/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=166&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ok, so heres the problem. OSB 11g and SOA 11g XPath functions are not in Sync.  So, XSLTs that were developed in SOA 10g cannot be used directly in OSB 11g. One of the strong cases for this is the migration of all ESB based artifacts to OSB artifacts.</p>
<p>One of the easiest  ways of doing  this is to take all the xpath functions that are defined in the soa-xpath-exts.jar and soa-xpath-functions-config.xml and dump em into OSB XPath config as a Custom XPath. Here are the steps:</p>
<p>1. Get the fabric-runtime.jar and the soa-xpath-exts.jar from %SOA_HOME%\soa\modules\oracle.soa.fabric_11.1.1</p>
<p>2. Get the soa-xpath-functions-config.xml from %JDEVELOPER_HOME%\jdeveloper\integration\seed\soa\configuration. This file contains a list of all the XPath functions. We wont do anything to this&#8230;.just for reference.</p>
<p>3. Now, get the osb-built-in.xml and osb-built-in.properties files from%OSB_HOME%\config\xpath-functions. Create copies of these files. We will modify these copies to include the migrated XPath Functions.</p>
<p>4. Now the task is to <strong>map </strong>the XPath functions defined in soa-xpath-functions-config.xml to the <strong>copy </strong>of the osb-built-in.xml that you just built. Almost for all the XPaths the only thing that needs to be changed is &lt;xpf:name&gt;,&lt;xpf:comment&gt;,&lt;xpf:namespaceURI&gt;,&lt;xpf:className&gt; and the &lt;xpf:method&gt;. Rest of the elements can be safely kept as is. The mentioned five elements can be directly mapped from the soa-xpath-functions-config.xml. But note that OSB XPath functions doesnt support inner classes and there are a hell lot of inner classes in the soa-xpath-functions-config.xml. So inorder to get over this, you have to somehow get the source code of the custom xpath functions, check which method of a particular class gets called and use that in the &lt;xpf:className&gt; and the &lt;xpf:method&gt;.</p>
<p>5. Make sure you know the permitted java types when you specify the &lt;xpf:method&gt; as in the document:  http://download.oracle.com/docs/cd/E14571_01/doc.1111/e15866/custom_xpath.htm#CBADFJEG. Some of the methods cannot be used !!!</p>
<p>6. Also make sure that for each XPath defined in the copy of the osb-built-in.xml you have to specify the comments in the proeprties file as well.</p>
<p>7. After you are done, dump all the jars and the OSB custom XPath files into %OSB_HOME%\config\xpath-functions.</p>
<p>This is a lot of pain.. and it would definitely take a good 8 hours!!!</p>
<p>Anywayz, if you dont want to do all this re-engineering, you alternatively use the Nirvana package below <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  This package contains support for the XPaths listed <a title="http://soalabs.googlecode.com/files/XPathFunctionsList.xls" href="http://soalabs.googlecode.com/files/XPathFunctionsList.xls" target="_blank">here</a></p>
<p>Unzip the folder and copy everything to %OSB_HOME%\config\xpath-functions . Restart Weblogic and Workshop. Follow the Installation Instructions in the reference for more details.</p>
<p><a title="SOA11g_XPath_Functions_For_OSB11g" href="http://soalabs.googlecode.com/files/CustomXPathFunctions.zip" target="_blank">XPath Nirvana is here!!!</a></p>
<p><a href="http://soaranch.files.wordpress.com/2010/11/xpathfunctions.png"><img class="aligncenter size-medium wp-image-169" title="XPathFunctions" src="http://soaranch.files.wordpress.com/2010/11/xpathfunctions.png?w=300&#038;h=287" alt="" width="300" height="287" /></a></p>
<p>These XPath functions have the same name as the standard SOA 10g functions, although the namespaces are different.</p>
<p>The usage of these functions are different for XSLT and XQuery.</p>
<ol>
<li><strong>XQuery</strong>: The XPath functions listed      in the table should be used alongwith the necessary namespaces. This means      that you can directly drag from the Expressions window.</li>
<li><strong>XSLT</strong>: For use in XSLT expressions,      the Java Method name of the custom XPath function should be used alongwith the      necessary namespaces.</li>
</ol>
<p><strong>Examples</strong>:<strong> </strong></p>
<p>Note the difference in usage for the format-date XPath in XQuery and XSLT:</p>
<p><strong>XQuery</strong>:</p>
<p>&lt;Result&gt;&lt;formatDate&gt;<strong>dat:format-date</strong>(&#8217;2028-08-31T05:30:54+05:30&#8242;,&#8217;yyyy.MM.dd G HH:mm:ss z&#8217;)&lt;/formatDate&gt;&lt;/Result&gt;</p>
<p><strong>XSLT</strong>:</p>
<p><strong>&lt;</strong><strong>xsl:stylesheet</strong> <strong>version</strong>=<em>&#8220;1.0&#8243; </em><strong>xmlns:xsl</strong>=<em>&#8220;http://www.w3.org/1999/XSL/Transform&#8221; </em><strong>xmlns:dat</strong>=<em>&#8220;http://www.soa-utilities.com/osb/custom/xpath/utilties.xpath.extensions.DateFunctions&#8221;</em><strong>&gt;&lt;</strong><strong>xsl:template</strong> <strong>match</strong>=<em>&#8220;/&#8221;</em><strong>&gt;</strong></p>
<p>&lt;Result&gt;&lt;formatDate&gt;<strong>&lt;</strong><strong>xsl:value-of</strong> <strong>select</strong>=<em>&#8220;<strong>dat:formatDate</strong>(&#8217;2028-08-31T05:30:54+05:30&#8242;,&#8217;yyyy.MM.dd G HH:mm:ss z&#8217;)&#8221;</em> <strong>/&gt;</strong>&lt;/formatDate&gt;&lt;/Result&gt;</p>
<p><strong>&lt;/</strong><strong>xsl:template</strong><strong>&gt;&lt;/</strong><strong>xsl:stylesheet</strong><strong>&gt;</strong></p>
<p>The full list of namespaces for each XPath can be found in <a title="http://soalabs.googlecode.com/files/XPathFunctionsList.xls" href="http://soalabs.googlecode.com/files/XPathFunctionsList.xls" target="_blank">here</a>.</p>
<p>Enjoy!!</p>
<p>1. <a title="http://soalabs.googlecode.com/files/CustomXPathFunctions.zip" href="http://soalabs.googlecode.com/files/CustomXPathFunctions.zip" target="_blank">Custom XPath Functions Library</a></p>
<p>2. <a title="http://soalabs.googlecode.com/files/CustomXPathFunctions.pdf" href="http://soalabs.googlecode.com/files/CustomXPathFunctions.pdf" target="_blank">Installation Manual for Custom XPath Functions Library</a></p>
<p>3. <a title="http://soalabs.googlecode.com/files/XPathFunctionsList.xls" href="http://soalabs.googlecode.com/files/XPathFunctionsList.xls" target="_blank">Full List of Supported XPath Functions</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/soaranch.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/soaranch.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/soaranch.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/soaranch.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/soaranch.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/soaranch.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/soaranch.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/soaranch.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/soaranch.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/soaranch.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/soaranch.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/soaranch.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/soaranch.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/soaranch.wordpress.com/166/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=166&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://soaranch.wordpress.com/2010/11/01/importing-soa-11g-standard-xpath-functions-into-osb-11g/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af212ec63c07eac26ccb9284e3e4667a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleware</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/11/xpathfunctions.png?w=300" medium="image">
			<media:title type="html">XPathFunctions</media:title>
		</media:content>
	</item>
		<item>
		<title>XQuery and XSLT Maps</title>
		<link>http://soaranch.wordpress.com/2010/10/16/xquery-and-xslt-maps/</link>
		<comments>http://soaranch.wordpress.com/2010/10/16/xquery-and-xslt-maps/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 22:10:48 +0000</pubDate>
		<dc:creator>Sandeep Phukan</dc:creator>
				<category><![CDATA[XQuery]]></category>

		<guid isPermaLink="false">http://soaranch.wordpress.com/?p=162</guid>
		<description><![CDATA[XSLT used to be everywhere prior to OSB. Now, everyone wants to us XQuery over XSLT for various reasons ranging from the highly controversial better performance and better Code Maintainability. Personally, I feel that XQuery is more procedure driven i.e. you-tell-what-you-want-to-do and hence easier and quicker to script than XSLT which is intuitive and more&#160;&#8230; <a href="http://soaranch.wordpress.com/2010/10/16/xquery-and-xslt-maps/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=162&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>XSLT used to be everywhere prior to OSB. Now, everyone wants to us XQuery over XSLT for various reasons ranging from the highly controversial better performance and better Code Maintainability. Personally, I feel that XQuery is more procedure driven i.e. you-tell-what-you-want-to-do and hence easier and quicker to script than XSLT which is intuitive and more like a Pattern Driven language.</p>
<p>Anyways, the scope of this article is to show some small syntactical differences between XSLT and XQuery. Not an exhaustive list by any means, but the following are the most common :</p>
<ol>
<li>&lt;xsl:for-each select=&#8221;/client:process/client:result&#8221;&gt;      &#8212;&#8212;&gt; for $result in element(client:process/client:result)</li>
<li>&lt;xsl:value-of select=&#8221;/client:process/client:result&#8221; /&gt;  &#8212;&#8212;&gt; data(/client:process/client:result)</li>
<li>&lt;xsl:if test=&#8221;/client:process/client:result gt; 10&#8243; /&gt;    &#8212;&#8212;&gt; where data(/client:process/client:result) gt 10</li>
<li>All XPaths including predicates are directly mapped</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/soaranch.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/soaranch.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/soaranch.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/soaranch.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/soaranch.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/soaranch.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/soaranch.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/soaranch.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/soaranch.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/soaranch.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/soaranch.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/soaranch.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/soaranch.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/soaranch.wordpress.com/162/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=162&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://soaranch.wordpress.com/2010/10/16/xquery-and-xslt-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af212ec63c07eac26ccb9284e3e4667a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleware</media:title>
		</media:content>
	</item>
		<item>
		<title>Reuse BPEL XSLT maps in OSB</title>
		<link>http://soaranch.wordpress.com/2010/10/16/reuse-bpel-xslt-maps-in-osb/</link>
		<comments>http://soaranch.wordpress.com/2010/10/16/reuse-bpel-xslt-maps-in-osb/#comments</comments>
		<pubDate>Sat, 16 Oct 2010 19:12:52 +0000</pubDate>
		<dc:creator>Sandeep Phukan</dc:creator>
				<category><![CDATA[11g]]></category>
		<category><![CDATA[BPEL]]></category>
		<category><![CDATA[Composite]]></category>
		<category><![CDATA[OSB]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://soaranch.wordpress.com/?p=155</guid>
		<description><![CDATA[Reusing XSLT maps from existing BPEL processes in OSB is quite easy. There is however, a small change required in the namespace of the maps. At a minimal a BPEL process generally involves transformation from a Source namespace to a Target namespace for the invoking and response variables between the Client BPEL process and the&#160;&#8230; <a href="http://soaranch.wordpress.com/2010/10/16/reuse-bpel-xslt-maps-in-osb/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=155&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Reusing XSLT maps from existing BPEL processes in OSB is quite easy. There is however, a small change required in the namespace of the maps. At a minimal a BPEL process generally involves transformation from a Source namespace to a Target namespace for the invoking and response variables between the Client BPEL process and the Target Process. An OSB Proxy is ordinarily based on a Target WSDL itself and hence there is no change of namespace from the Source to the Target.</p>
<p>Then how do we re-use the BPEL XSLTs in OSB then? The trick is to include a small change in the namespace. In the imported XSLTs change the namespaces of the Source Process’s namespaces to that of the Target Process’s namespace.</p>
<p>Just to elucidate, imagine a hypothetical Mid BPEL process that sits between a Requestor and a Provider. This BPEL process does the following transformations at the minimum:</p>
<p>1.   Transform      from Mid BPEL process input to that of the Provider input. (SetInput.xsl)</p>
<p>&lt;xsl:stylesheet version=&#8221;1.0&#8243;<br />
xmlns:<strong>client=&#8221;http://xmlns.oracle.com/migrationCompositeTest_jws/TransformCompatibilityTest/MidBPELProcess&#8221;</strong><br />
xmlns:ns0=&#8221;http://xmlns.oracle.com/migrationCompositeTest_jws/TransformCompatibilityTestProvider/TransformCompatibilityTestBPELProvider&#8221;<br />
exclude-result-prefixes=&#8221;client ns0&#8243;&gt;<br />
&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;ns0:element2&gt;<br />
&lt;xsl:value-of select=&#8221;/client:process/client:element2&#8243;/&gt;<br />
&lt;/ns0:element2&gt;<br />
&lt;/ns0:process&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</p>
<p>2.   Transform      from Provider output to that of the Mid BPEL process output. (SetOutput.xsl)</p>
<p>&lt;xsl:stylesheet version=&#8221;1.0&#8243;  xmlns:client=&#8221;http://xmlns.oracle.com/migrationCompositeTest_jws/TransformCompatibilityTestProvider/TransformCompatibilityTestBPELProvider&#8221;<br />
xmlns:<strong>ns0=&#8221;http://xmlns.oracle.com/migrationCompositeTest_jws/TransformCompatibilityTest/MidBPELProcess&#8221;</strong><br />
exclude-result-prefixes=&#8221;client ns0&#8243;&gt;<br />
&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;<strong>ns0</strong>:processResponse&gt;<br />
&lt;<strong>ns</strong>0:element2&gt;<br />
&lt;xsl:value-of select=&#8221;/client:processResponse/client:element2&#8243;/&gt;<br />
&lt;/<strong>ns0</strong>:element2&gt;<br />
&lt;/<strong>ns0</strong>:processResponse&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</p>
<p>So, when reusing in OSB, do the following:</p>
<p>1.   In      SetInput.xsl, change the namespace of the Source Namespace to that of the      Target.</p>
<p>&lt;xsl:stylesheet version=&#8221;1.0&#8243;<br />
xmlns:<strong>client=&#8221;http://xmlns.oracle.com/migrationCompositeTest_jws/TransformCompatibilityTestProvider/TransformCompatibilityTestBPELProvider&#8221;</strong><br />
xmlns:ns0=&#8221;http://xmlns.oracle.com/migrationCompositeTest_jws/TransformCompatibilityTestProvider/TransformCompatibilityTestBPELProvider&#8221;<br />
exclude-result-prefixes=&#8221;client ns0&#8243;&gt;<br />
&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;ns0:element2&gt;<br />
&lt;xsl:value-of select=&#8221;/<strong>client</strong>:process/<strong>client</strong>:element2&#8243;/&gt;<br />
&lt;/ns0:element2&gt;<br />
&lt;/ns0:process&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</p>
<p>2.   In SetOutput.xsl,      change the namespace of the Target Namespace that of the Source Namespace.</p>
<p>&lt;xsl:stylesheet version=&#8221;1.0&#8243;                xmlns:client=&#8221;http://xmlns.oracle.com/migrationCompositeTest_jws/TransformCompatibilityTestProvider/TransformCompatibilityTestBPELProvider&#8221;       <strong>xmlns:ns0=&#8221;http://xmlns.oracle.com/migrationCompositeTest_jws/TransformCompatibilityTestProvider/TransformCompatibilityTestBPELProvider&#8221;</strong><br />
exclude-result-prefixes=&#8221;client ns0&#8243;&gt;<br />
&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;<strong>ns0</strong>:processResponse&gt;<br />
&lt;<strong>ns0</strong>:element2&gt;<br />
&lt;xsl:value-of select=&#8221;/client:processResponse/client:element2&#8243;/&gt;<br />
&lt;/<strong>ns0</strong>:element2&gt;<br />
&lt;/<strong>ns0</strong>:processResponse&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</p>
<p>Note: The maps have been simplified.</p>
<p>That’s about it! Maps can now be resued in OSB.</p>
<p>A pdf version of this tutorial is right <a title="ReuseBPELXSLTsInOSB.pdf" href="http://soaranch.files.wordpress.com/2010/10/xsltreusefrombpel.pdf">here&#8230;</a></p>
<div id="_mcePaste" class="mcePaste" style="position:absolute;left:-10000px;top:659px;width:1px;height:1px;overflow:hidden;">&lt;xsl:stylesheet version=&#8221;1.0&#8243;<br />
xmlns:client=&#8221;http://xmlns.oracle.com/migrationCompositeTest_jws/TransformCompatibilityTestProvider/TransformCompatibilityTestBPELProvider&#8221;<br />
xmlns:ns0=&#8221;http://xmlns.oracle.com/migrationCompositeTest_jws/TransformCompatibilityTestProvider/TransformCompatibilityTestBPELProvider&#8221;<br />
exclude-result-prefixes=&#8221;client ns0&#8243;&gt;<br />
&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;ns0:element2&gt;<br />
&lt;xsl:value-of select=&#8221;/client:process/client:element2&#8243;/&gt;<br />
&lt;/ns0:element2&gt;<br />
&lt;/ns0:process&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/soaranch.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/soaranch.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/soaranch.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/soaranch.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/soaranch.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/soaranch.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/soaranch.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/soaranch.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/soaranch.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/soaranch.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/soaranch.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/soaranch.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/soaranch.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/soaranch.wordpress.com/155/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=155&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://soaranch.wordpress.com/2010/10/16/reuse-bpel-xslt-maps-in-osb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af212ec63c07eac26ccb9284e3e4667a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleware</media:title>
		</media:content>
	</item>
		<item>
		<title>Global and Local Transactions in Oracle SOA 11g Composites</title>
		<link>http://soaranch.wordpress.com/2010/10/08/global-and-local-transactions-in-oracle-soa-11g-composites/</link>
		<comments>http://soaranch.wordpress.com/2010/10/08/global-and-local-transactions-in-oracle-soa-11g-composites/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 19:19:25 +0000</pubDate>
		<dc:creator>Sandeep Phukan</dc:creator>
				<category><![CDATA[11g]]></category>
		<category><![CDATA[BPEL]]></category>
		<category><![CDATA[Composite]]></category>
		<category><![CDATA[OSB]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://soaranch.wordpress.com/?p=122</guid>
		<description><![CDATA[We will simulate a global transaction via a xaDataSource between a BPEL Composite and OSB that interact via native transports (SB and SOA-DIRECT) and define transaction boundaries. Global Transaction is governed by the following parameters viz. the message exchange pattern, the datasource and the composite properties for the particular components viz. bpel.config. Behaviour: In a&#160;&#8230; <a href="http://soaranch.wordpress.com/2010/10/08/global-and-local-transactions-in-oracle-soa-11g-composites/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=122&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We will simulate a global transaction via a xaDataSource between a BPEL Composite and OSB that interact via native transports (SB and SOA-DIRECT) and define transaction boundaries. Global Transaction is governed by the following parameters viz. the message exchange pattern, the datasource and the composite properties for the particular components viz. bpel.config.</p>
<p><strong>Behaviour</strong>: In a single global transaction, any fault within the Composite will result in a complete rollback of all transactions. However, if there are boundaries then in the event of a fault within the global transaction, local transactions will be committed while the global transaction is rollbacked. If fault happens in the partnerlink and it is not handled then the local transaction is rollbacked and a FabricInvocationExceptions is thrown back to the parent BPEL process. If fault happens in the partnerlink and it is handled then the local transaction is committed.</p>
<p><strong>How to create local transactions or boundaries</strong>:</p>
<p>The boundaries are defined in the composite.xml of the component properties of the called process. The exact properties are dependant on the Message Exchange Pattern of the called Component<a href="#_ftn1">[1]</a>:</p>
<p>1.    If MEP is Sync Request Response, then transaction=requiresNew</p>
<p>2.    If MEP is Async Request Response, then transaction=RequiresNew, oneWayDeliveryPolicy=sync</p>
<p>3.    If MEP is One Way, then transaction=RequiresNew, oneWayDeliveryPolicy=sync</p>
<p>Note 1.1: The transaction parameters are only defined for BPEL Components. So, if you do want to create local transactions, you would have to embed adapters in bpel processes. I do not understand why this limitation should be there.</p>
<p><strong>Steps:</strong></p>
<ol>
<li>Create      a Thin XA Datasource that supports &#8216;Two-Phase Commit&#8217; global transaction      and a connection pool. We will require the JNDI of this pool for the      project.</li>
<li>Create      two OSB Business Services for inserting and updating a table in the      datasource configured in Step 1. These are based on the JCA transport      which is transactional in nature. A link<a href="#_ftn2">[2]</a> is provided in resources for the same.</li>
<li>Create      Proxy Services for these Business Services based on SB-transport which is      also transactional.</li>
<li>Create      a composite with two BPEL processes viz. GlobalTransactionBPELRequestor      which makes inserts into a table NAME_ID via OSB Proxy      Service and LocalTransaction_BPEL_Insert2 which inserts into a table NAME_ID2 again via OSB Proxy Service. In addition, GlobalTransactionBPELRequestor      also invokes the LocalTransaction_BPEL_Insert2 and then throws an Assert      Fault based on the input.</li>
</ol>
<div>
<p><strong>LocalTransaction_BPEL_Insert2 </strong>snapshot<strong>:</strong></p>
</div>
<div><a href="http://soaranch.files.wordpress.com/2010/10/image0011.jpg"><img class="aligncenter size-full wp-image-123" title="image001" src="http://soaranch.files.wordpress.com/2010/10/image0011.jpg?w=640&#038;h=315" alt="" width="640" height="315" /></a></div>
<div>
<p>The input for the LocalTransaction_BPEL_Insert2 is:</p>
</div>
<div><a href="http://soaranch.files.wordpress.com/2010/10/image0021.jpg"><img class="aligncenter size-full wp-image-124" title="image002" src="http://soaranch.files.wordpress.com/2010/10/image0021.jpg?w=640" alt=""   /></a><strong>GlobalTransactionBPELRequestor</strong> snapshot:&nbsp;</p>
</div>
<div><a href="http://soaranch.files.wordpress.com/2010/10/image0031.jpg"><img class="aligncenter size-full wp-image-125" title="image003" src="http://soaranch.files.wordpress.com/2010/10/image0031.jpg?w=640&#038;h=546" alt="" width="640" height="546" /></a>The input for the GlobalTransactionBPELRequestor looks like:&nbsp;</p>
</div>
<div><a href="http://soaranch.files.wordpress.com/2010/10/image0041.jpg"><img class="aligncenter size-full wp-image-126" title="image004" src="http://soaranch.files.wordpress.com/2010/10/image0041.jpg?w=640" alt=""   /></a></div>
<div>
<p>Name and ID will go into the NAME_ID table which the GenerateFault (values Yes or No ) will decide on whether to throw the fault or not within the switch activity.</p>
<p>Here, the process inserts data into NAME_ID table via the Invoke_InsertDB invoke to an OSB Proxy. After this, the process makes an Async one way call to the second bpel process via Invoke_BPEL_Insert2. After this, based on the GenerateFault value of YES or NO, a deliberate Assert Fault is thrown.</p>
<p>The database tables, the Assert Fault and the inputs have been created merely to create this simulation. Knock yourself out with any other options you can think of.</p>
<p>5.   Now,      we wire these components together in the Composite:</p>
</div>
<div><a href="http://soaranch.files.wordpress.com/2010/10/image0051.jpg"><img class="aligncenter size-full wp-image-127" title="image005" src="http://soaranch.files.wordpress.com/2010/10/image0051.jpg?w=640&#038;h=346" alt="" width="640" height="346" /></a>&nbsp;</p>
<p>6.   As per      the earlier discussion, we will now insert the following custom properties      inside the component property of the called BPEL process viz. LocalTransaction_BPEL_Insert2.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image0061.jpg"><img class="aligncenter size-full wp-image-128" title="image006" src="http://soaranch.files.wordpress.com/2010/10/image0061.jpg?w=640&#038;h=133" alt="" width="640" height="133" /></a></p>
<p>This ensures that the LocalTransaction_BPEL_Insert2 invoke will result in a separate local transaction.</p>
<p>7.  Now,      deploy the components and test the GlobalTransactionBPELRequestor with the      following inputs</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image0071.jpg"><img class="aligncenter size-full wp-image-129" title="image007" src="http://soaranch.files.wordpress.com/2010/10/image0071.jpg?w=640" alt=""   /></a></p>
<p>8.  The      Trace in shows that the test completes successfully  and the entries for the name and id show      up in both the tables:</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image0081.jpg"><img class="aligncenter size-full wp-image-130" title="image008" src="http://soaranch.files.wordpress.com/2010/10/image0081.jpg?w=640&#038;h=181" alt="" width="640" height="181" /></a></p>
<p>9.  Now,      test the same process with the following inputs:</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image0091.jpg"><img class="aligncenter size-full wp-image-131" title="image009" src="http://soaranch.files.wordpress.com/2010/10/image0091.jpg?w=640" alt=""   /></a></p>
</div>
<div>
<p>This means, insert name “GLOBAL TRANSACTION TEST” and ID 2 into the tables NAME_ID and NAME_ID2 and throw a fault in the Parent BPEL process i.e. GlobalTransactionBPELRequestor.</p>
<p>10.   The      trace shows that the LocalTransaction_BPEL_Insert2 process completes      without fault while the GlobalTransactionBPELRequestor faults as expected.      The table NAME_ID does not have the new entry now ( as this is part of the      global transaction that has been rollbacked ) while the table NAME_ID2 has      the entry ( as this is the local transaction that commits without any      fault )</p>
<p>11.   You      can also remove the transactional parameters we set earlier in the      composite.xml of the LocalTransaction_BPEL_Insert2 and deploy and test      with the inputs we used in step 9. The em trace will show that the fault      has happened at the end as expected and the entire global transaction is      rolled back.</p>
<p>This tutorial shows how we can create sets of local transactions in a single global transaction and thereby have better control over what we want to achieve.</p>
<p>PDF Version right <a title="SOA11g_TransactionControl.pdf" href="http://soaranch.files.wordpress.com/2010/10/soa11g_transactionscontrol.pdf" target="_self">here</a></p>
</div>
<div>
<hr size="1" />
<div>
<p><a href="#_ftnref1">[1]</a> http://blogs.oracle.com/soabpm/2009/08/soa_suite_11g_-_transactions_b.html</p>
</div>
<div>
<p><a href="#_ftnref2">[2]</a> http://blogs.oracle.com/middleware/2010/05/using_jca_adapter_with_osb_11113.html</p>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/soaranch.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/soaranch.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/soaranch.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/soaranch.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/soaranch.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/soaranch.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/soaranch.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/soaranch.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/soaranch.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/soaranch.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/soaranch.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/soaranch.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/soaranch.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/soaranch.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=122&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://soaranch.wordpress.com/2010/10/08/global-and-local-transactions-in-oracle-soa-11g-composites/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af212ec63c07eac26ccb9284e3e4667a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleware</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image0011.jpg" medium="image">
			<media:title type="html">image001</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image0021.jpg" medium="image">
			<media:title type="html">image002</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image0031.jpg" medium="image">
			<media:title type="html">image003</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image0041.jpg" medium="image">
			<media:title type="html">image004</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image0051.jpg" medium="image">
			<media:title type="html">image005</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image0061.jpg" medium="image">
			<media:title type="html">image006</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image0071.jpg" medium="image">
			<media:title type="html">image007</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image0081.jpg" medium="image">
			<media:title type="html">image008</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image0091.jpg" medium="image">
			<media:title type="html">image009</media:title>
		</media:content>
	</item>
		<item>
		<title>OSB 11g Asynchronous Request Response with 11gR1 SOA Composite</title>
		<link>http://soaranch.wordpress.com/2010/10/02/osb-11g-asynchronous-request-response/</link>
		<comments>http://soaranch.wordpress.com/2010/10/02/osb-11g-asynchronous-request-response/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 20:43:58 +0000</pubDate>
		<dc:creator>Sandeep Phukan</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[OSB]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://soaranch.wordpress.com/?p=87</guid>
		<description><![CDATA[SOA 11gR1 now provides the soa-direct transport which makes it possible to use the RMI based transactional Weblogic T3 Protocol to communicate between OSB and SCA. I am not quite sure how much this is different from the sb transport already available with the earlier versions, but the current SOA 11gR1 version insists that the&#160;&#8230; <a href="http://soaranch.wordpress.com/2010/10/02/osb-11g-asynchronous-request-response/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=87&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>SOA 11gR1 now provides the soa-direct transport which makes it possible to use the RMI based transactional Weblogic T3 Protocol to communicate between OSB and SCA. I am not quite sure how much this is different from the sb transport already available with the earlier versions, but the current SOA 11gR1 version insists that the recommended twisted approach is to use a combination of both soa-direct and sb for the Asynchronous Request Response pattern.</p>
<p>The Request from OSB to SCA is sent via soa-direct transport while the callback from SCA to OSB happens via the sb transport. In essence, the flow comprises two one-way OSB flows: one for the request and the other for the response.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image001.jpg"><img class="aligncenter size-full wp-image-89" title="OSB Asynchronous Req Res MEP" src="http://soaranch.files.wordpress.com/2010/10/image001.jpg?w=640" alt=""   /></a></p>
<p>I fail to understand why a combination of sb and soa-direct transports are required.</p>
<p>Let’s go about creating it then. In our sample use case, we will use OSB to mediate between an Asynchronous Composite (C<sub>req</sub>) and an Asynchronous Provider (C<sub>prov</sub>). The requestor composite sends a Name, ID pair to the provider which responds back with a ‘Hello ‘+Name+’ Your ID is ‘+ID message. The OSB mediation comprises four artifacts a Requestor Proxy (P1), a Requestor Business Service (B1), a Callback Proxy (P2) and finally a Callback Business Service (B2).</p>
<p>Note that unlike BPEL, OSB has no OOTB support for Asynchronous Request Response Correlation and hence, this is achieved explicitly by using the WS-Addressing SOAP Header elements viz. ReplyTo and ReferenceParameters. I am assuming that you are already familiar with these WS-Addressing parameters.</p>
<p>The sequence of tasks to be performed for this Sample is:</p>
<ol>
<li>Create      the Asynchronous Composite Provider (C<sub>prov</sub>).</li>
<li>Create      the Requestor Business Service (B1).</li>
<li>Create      the Callback Business Service (B2).</li>
<li>Create      the Callback Proxy Service (P2)</li>
<li>Create      the Requestor Proxy Service (P1)</li>
<li>Create      the Asynchronous Composite Provider (C<sub>req</sub>).</li>
</ol>
<p>If you really don’t want to create the samples, and are more worried about the actual settings, this is the core of things happening:</p>
<ol>
<li>The      Composite Requestor is based on a BPEL process that uses content based      correlation.</li>
<li>P1      receives the callback address of the Composite Requestor and stores the      same in the WS-Addressing ReferenceParameters so that it gets echoed back      by the Composite Provider during the Callback as a SOAP element. Also it      specifies the URI of P1 to which the Provider Composite sends the      callback.</li>
<li>Requestor      Business Service B1 is configured as an Asynchronous Client without any      Callback Address as this gets set in Step 1.</li>
<li>The      Callback Proxy P2 receives the address of Composite Requestor in the SOAP      Header and sets this in the URI of the routing options.</li>
<li>Callback      Business Service B2 is configured as an Asynchronous Callback Service and      based on the URI set in Step 3, makes the callback to the Composite      Requestor.</li>
</ol>
<p>1.  Create the Asynchronous Composite Provider (C<sub>prov</sub>):  This Composite consists of an Async BPEL Process and a Direct Binding adapter based exposed service.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image002.jpg"><img class="aligncenter size-full wp-image-91" title="Asynchronous Composite Provider " src="http://soaranch.files.wordpress.com/2010/10/image002.jpg?w=640" alt=""   /></a></p>
<p>The AsyncBPELProvider process receives input based on the following schema and returns a result together with the ID for correlation.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image003.jpg"><img class="aligncenter size-full wp-image-92" title="schema " src="http://soaranch.files.wordpress.com/2010/10/image003.jpg?w=640" alt=""   /></a></p>
<p>2. The      Requestor Business Service B1 consumes the WSDL of the Asynchronous      Composite Provider at the Direct Service <strong>Request </strong>Binding Port SOAP      1.1.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image004.jpg"><img class="aligncenter size-full wp-image-94" title="image004" src="http://soaranch.files.wordpress.com/2010/10/image004.jpg?w=640" alt=""   /></a></p>
<p>In the SOA Direct Configuration page, we set this service as an Asynchronous Client Service. We will not set the Callback service as this will be set by the Requestor Proxy Service later and make sure the WS-Addressing Version is http://www.w3.org/2005/08/addressing.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image005.jpg"><img class="aligncenter size-full wp-image-95" title="image005" src="http://soaranch.files.wordpress.com/2010/10/image005.jpg?w=640" alt=""   /></a></p>
<p>3. Next,      we create the Callback Business Service. This will also be based on the      Provider Composite WSDL we created earlier. The operation is now Direct      Service <strong>Callback</strong> Binding Port SOAP 1.1.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image006.jpg"><img class="aligncenter size-full wp-image-97" title="image006" src="http://soaranch.files.wordpress.com/2010/10/image006.jpg?w=640" alt=""   /></a></p>
<p>In the SOA DIRECT Service Configuration select the role as Service Callback.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image007.jpg"><img class="aligncenter size-full wp-image-98" title="image007" src="http://soaranch.files.wordpress.com/2010/10/image007.jpg?w=640" alt=""   /></a></p>
<p>Note that this inserts a default Endpoint URI in the transport setup. Don’t bother about this URI. We will override this via the Callback Proxy Service later.</p>
<p>4. Now,      lets create the Callback Proxy Service. This service is again based on the      Composite Provider’s WSDL like in the previous step. However, now we      select the sb transport in the transport configuration. Note that this      service will receive the client callback port in the SOAP Header as the      chunk $header/osb:Callback/osb:Address/text(). This will be inserted by      the Requestor Proxy as a Reference Parameter thus making the Callback      Composite include it in the callback SOAP Header. We will develop this later.      For now, this address is simply copied into the OSB Routing Options inside      the Routing node for the Callback Business Service. Optionally we also      remove the osb:Callback element from the SOAP Header.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image008.jpg"><img class="aligncenter size-full wp-image-99" title="image008" src="http://soaranch.files.wordpress.com/2010/10/image008.jpg?w=640" alt=""   /></a>The Outbound of the Callback Proxy Service looks something like this:<br />
&lt;con:endpoint name=&#8221;BusinessService$AsyncOSB2SOA$CallbackBusinessService&#8221; xmlns:con=&#8221;http://www.bea.com/wli/sb/context&#8221;&gt;<br />
&lt;con:service&gt;<br />
&lt;con:operation&gt;processResponse&lt;/con:operation&gt;<br />
&lt;/con:service&gt;<br />
&lt;con:transport&gt;<br />
<strong>&lt;con:uri&gt;t3://localhost:7001/default/AsyncCompositeRequestor!1.0*soa_9562061b-fb6e-4118-8441-0c08e14f626a/DirectReference#AsyncBPELRequestor/DirectReference&lt;/con:uri&gt;</strong><br />
&lt;con:mode&gt;request&lt;/con:mode&gt;<br />
&lt;con:qualityOfService&gt;exactly-once&lt;/con:qualityOfService&gt;<br />
&lt;con:request xsi:type=&#8221;soa:SOARequestMetaDataXML&#8221; xmlns:soa=&#8221;http://www.bea.com/wli/sb/transports/soa&#8221; xmlns:xsi=&#8221;http://www.w3.org/2001/XMLSchema-instance&#8221;&gt;<br />
&lt;tran:headers xsi:type=&#8221;soa:SOARequestHeadersXML&#8221; xmlns:tran=&#8221;http://www.bea.com/wli/sb/transports&#8221;&gt;<br />
&lt;tran:user-header name=&#8221;SOAPAction&#8221; value=&#8221;&amp;quot;processResponse&amp;quot;&#8221;/&gt;<br />
&lt;/tran:headers&gt;<br />
&lt;tran:encoding xmlns:tran=&#8221;http://www.bea.com/wli/sb/transports&#8221;&gt;utf-8&lt;/tran:encoding&gt;<br />
&lt;/con:request&gt;<br />
&lt;/con:transport&gt;<br />
&lt;con:security&gt;<br />
&lt;con:doOutboundWss&gt;false&lt;/con:doOutboundWss&gt;<br />
&lt;/con:security&gt;<br />
&lt;/con:endpoint&gt;</p>
<p>The xml chunk in bold is the actual Composite Requestor’s Callback address returned as a SOAP Header by the Composite Provider.</p>
<p>5. Next,      we will develop the Requestor Proxy Service. This Proxy is based on the      same WSDL of the Async Composite Provider we have used before. The binding      selected is Direct Service Request Binding SOAP 1.1.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image009.jpg"><img class="aligncenter size-full wp-image-101" title="image009" src="http://soaranch.files.wordpress.com/2010/10/image009.jpg?w=640" alt=""   /></a></p>
<p>Also we select sb as the transport for this Proxy. In the message flow there are a couple of things this service does. First, it copies the Client’s callback Address and inserts it in the WS-Addressing ReferenceParameters. Then it sets the WS-Addressing ReplyTo address with the sb transport address of the Callback Proxy Service we created in Step 4.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image010.jpg"><img class="aligncenter size-large wp-image-103" title="image010" src="http://soaranch.files.wordpress.com/2010/10/image010.jpg?w=308&#038;h=1024" alt="" width="308" height="1024" /></a>The resulting SOAP Header should look something like this:</p>
<p>&lt;soap-env:Header xmlns:soap-env=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;wsa:ReplyTo xmlns:wsa=&#8221;http://www.w3.org/2005/08/addressing&#8221;&gt;<br />
<strong>&lt;wsa:Address&gt;sb://7WX83BS.nsn-intra.net:7001/CallbackProxyService&lt;/wsa:Address&gt;</strong><br />
&lt;wsa:ReferenceParameters&gt;<br />
&lt;osoa:callback osoa:connection-factory=&#8221;oracle.soa.api.JNDIDirectConnectionFactory&#8221; xmlns:osoa=&#8221;http://xmlns.oracle.com/soa/direct&#8221;&gt;<br />
&lt;osoa:property osoa:name=&#8221;java.naming.provider.url&#8221; osoa:value=&#8221;t3://localhost:7001&#8243;/&gt;<br />
&lt;osoa:property osoa:name=&#8221;java.naming.factory.initial&#8221; osoa:value=&#8221;weblogic.jndi.WLInitialContextFactory&#8221;/&gt;<br />
&lt;osoa:property osoa:name=&#8221;oracle.soa.api.invocation.direct.bean&#8221; osoa:value=&#8221;SOADirectInvokerBean#oracle.integration.platform.blocks.direct.Invoker&#8221;/&gt;<br />
&lt;/osoa:callback&gt;<br />
&lt;instra:tracking.ecid xmlns:instra=&#8221;http://xmlns.oracle.com/sca/tracking/1.0&#8243;&gt;0000IhiCI8lFw000jzwkno1Cdje_000585&lt;/instra:tracking.ecid&gt;<br />
&lt;instra:tracking.parentComponentInstanceId xmlns:instra=&#8221;http://xmlns.oracle.com/sca/tracking/1.0&#8243;&gt;bpel:660005&lt;/instra:tracking.parentComponentInstanceId&gt;<br />
<strong>&lt;osb:Callback xmlns:osb=&#8221;http://www.osbLabs.soaDirect&#8221;&gt;<br />
&lt;osb:Address&gt;t3://localhost:7001/default/AsyncCompositeRequestor!1.0*soa_9562061b-fb6e-4118-8441-0c08e14f626a/DirectReference#AsyncBPELRequestor/DirectReference&lt;/osb:Address&gt;<br />
&lt;/osb:Callback&gt;</strong><br />
&lt;/wsa:ReferenceParameters&gt;<br />
&lt;/wsa:ReplyTo&gt;<br />
&lt;/soap-env:Header&gt;</p>
<p>The changed chunks are in bold. Note that the element refered by wsa:Address points to the URI of the Callback Proxy Service and the osb:Callback referes to the address of the Composite Requestor’s Callback.</p>
<p>6. Finally,      we create the Async Composite Requestor. This composite is based on an      Async BPEL Process which invokes the Requestor Proxy Service via a Direct      Reference binding. In addition, it includes a WS as an exposed service for      testing. For simplicity we have used the same message schema as employed      by the Composite Provider we created in Step 1 and the correlation is      based on the ID.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image011.jpg"><img class="aligncenter size-full wp-image-104" title="image011" src="http://soaranch.files.wordpress.com/2010/10/image011.jpg?w=640" alt=""   /></a></p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image012.jpg"><img class="aligncenter size-full wp-image-105" title="image012" src="http://soaranch.files.wordpress.com/2010/10/image012.jpg?w=640" alt=""   /></a></p>
<p>Right then, lets test this in the em console.</p>
<p>A)   In the Requestor Composite’s test , we specify the following input parameters:</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image013.jpg"><img class="aligncenter size-full wp-image-106" title="image013" src="http://soaranch.files.wordpress.com/2010/10/image013.jpg?w=640" alt=""   /></a></p>
<p>B)   The Asynchronous Composite Provider completes as expected and the Async BPEL Provider process completes.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image014.jpg"><img class="aligncenter size-full wp-image-108" title="image014" src="http://soaranch.files.wordpress.com/2010/10/image014.jpg?w=640" alt=""   /></a></p>
<p>C) The Asynchronous Composite Requestor and the related BPEL Async Component completes as expected.</p>
<p><a href="http://soaranch.files.wordpress.com/2010/10/image015.jpg"><img class="aligncenter size-full wp-image-109" title="image015" src="http://soaranch.files.wordpress.com/2010/10/image015.jpg?w=640" alt=""   /></a></p>
<p>That’s all about it. The sample <a title="Sample" href="http://www.filefactory.com/file/b3c43dg/n/OSBToCompositeAsync.zip" target="_blank">source</a> is included. Follow the sequence of deployments as followed in this tutorial.</p>
<p>The pdf version of this tutorial is right <a title="Async Native between OSB and SOA 11g" href="http://soaranch.files.wordpress.com/2010/10/asynchronousrequestresponsefromosbtosoa11g.pdf" target="_self">here&#8230;</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/soaranch.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/soaranch.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/soaranch.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/soaranch.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/soaranch.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/soaranch.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/soaranch.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/soaranch.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/soaranch.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/soaranch.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/soaranch.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/soaranch.wordpress.com/87/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/soaranch.wordpress.com/87/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/soaranch.wordpress.com/87/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=87&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://soaranch.wordpress.com/2010/10/02/osb-11g-asynchronous-request-response/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af212ec63c07eac26ccb9284e3e4667a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleware</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image001.jpg" medium="image">
			<media:title type="html">OSB Asynchronous Req Res MEP</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image002.jpg" medium="image">
			<media:title type="html">Asynchronous Composite Provider </media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image003.jpg" medium="image">
			<media:title type="html">schema </media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image004.jpg" medium="image">
			<media:title type="html">image004</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image005.jpg" medium="image">
			<media:title type="html">image005</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image006.jpg" medium="image">
			<media:title type="html">image006</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image007.jpg" medium="image">
			<media:title type="html">image007</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image008.jpg" medium="image">
			<media:title type="html">image008</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image009.jpg" medium="image">
			<media:title type="html">image009</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image010.jpg?w=308" medium="image">
			<media:title type="html">image010</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image011.jpg" medium="image">
			<media:title type="html">image011</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image012.jpg" medium="image">
			<media:title type="html">image012</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image013.jpg" medium="image">
			<media:title type="html">image013</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image014.jpg" medium="image">
			<media:title type="html">image014</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/10/image015.jpg" medium="image">
			<media:title type="html">image015</media:title>
		</media:content>
	</item>
		<item>
		<title>OSB Dynamic Routing</title>
		<link>http://soaranch.wordpress.com/2010/09/18/osb-dynamic-routing/</link>
		<comments>http://soaranch.wordpress.com/2010/09/18/osb-dynamic-routing/#comments</comments>
		<pubDate>Sat, 18 Sep 2010 23:45:23 +0000</pubDate>
		<dc:creator>Sandeep Phukan</dc:creator>
				<category><![CDATA[OSB]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://soaranch.wordpress.com/?p=69</guid>
		<description><![CDATA[OSB can do dynamic routing based on the abstract wsdl which means that any proxy or business service that is based on the same abstract wsdl can be used included in the set of dynamic routes. As for example, if there are two business services eg. MultipleOperationsViaBranching and ServiceCalloutsWithErrorHandling that are each based on the&#160;&#8230; <a href="http://soaranch.wordpress.com/2010/09/18/osb-dynamic-routing/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=69&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>OSB can do dynamic routing based on the abstract wsdl which means that any proxy or business service that is based on the <strong>same abstract wsdl</strong> can be used included in the set of dynamic routes.</p>
<p>As for example, if there are two business services eg. MultipleOperationsViaBranching and ServiceCalloutsWithErrorHandling that are each based on the same interface, we can use dynamic routing.</p>
<p>The core of this feature is built on the following XML element:</p>
<p>&lt;ctx:route&gt;<br />
&lt;ctx:<strong>service isProxy</strong>=&#8221;true|false&#8221;&gt;{<strong>$proxy</strong>|<strong>$businessService</strong>}&lt;/ctx:service&gt;<br />
&lt;!&#8211; Optional : &#8211;&gt;<br />
&lt;ctx:<strong>operation</strong>&gt;OperationName&lt;/ctx:operation&gt;<br />
&lt;/ctx:route&gt;</p>
<p>The isProxy is true or false according to whether the dynamic route is to a Proxy Service or to a business Service.<br />
I have no idea why it has to be either a proxy or a business service. There can be cases where we might actually need both.</p>
<p>Anyways, the way to go is to put the above element in the expression of a dynamic routing action inside a route node, etc.<br />
As for eg.</p>
<p>&lt;ctx:route&gt;<br />
&lt;ctx:service isProxy=&#8221;false&#8221;&gt;ServiceCalloutTest/BusinessService1&lt;/ctx:service&gt;<br />
&lt;/ctx:route&gt;</p>
<p><strong>Case1:</strong></p>
<p>The portion denoted by <strong>ServiceCalloutTest/BusinessService1</strong> is hardcoded for simplicity.<br />
The same can be achived at runtime by using XQuery expressions to evaluate the input to the ProxyService.</p>
<p>The benefit, XQuery resources are easy to maintain. And any new business or proxy service routings can be added on the fly.</p>
<p><img src="/DOCUME%7E1/phukan/LOCALS%7E1/Temp/moz-screenshot.png" alt="" /><a href="http://soaranch.files.wordpress.com/2010/09/dynamicproxyservice.png"><img class="aligncenter size-full wp-image-70" title="DynamicProxyService" src="http://soaranch.files.wordpress.com/2010/09/dynamicproxyservice.png?w=640" alt=""   /></a></p>
<p><span id="more-69"></span></p>
<p><strong>Case 2:</strong></p>
<p>Now, then, lets move to a little advanced  version. In this new Dynamic Routing example, we will use an XQuery Resource as a holder for all the Dynamic Proxy Services based on the same abstract wsdl. We will then use XQuery assigns in the Dynamic Proxy Service to find a suitable Proxy based on the input. The main benefit of this sample being that we can add additional dynamic services to the Proxy Service by a simple edit of the XQuery Resource.</p>
<p>The flow is shown below:</p>
<p><a href="http://soaranch.files.wordpress.com/2010/09/dynamicproxyservicewithxqueryresource.png"><img class="aligncenter size-full wp-image-74" title="DynamicProxyServiceWithXQueryResource" src="http://soaranch.files.wordpress.com/2010/09/dynamicproxyservicewithxqueryresource.png?w=640" alt=""   /></a></p>
<p>The XQuery Resource used as a Routing Table is as follows:</p>
<p><a href="http://soaranch.files.wordpress.com/2010/09/xqueryresource_routingtable.png"><img class="aligncenter size-full wp-image-75" title="XqueryResource_RoutingTable" src="http://soaranch.files.wordpress.com/2010/09/xqueryresource_routingtable.png?w=640" alt=""   /></a></p>
<p>The <strong>CopyRoutingTable </strong>stage copies the above XQueryResource into a variable called RoutingTable. This is achieved by just pointing the above XQueryResource file in the XQuery expression window.</p>
<p>The <strong>GetLogicalName </strong>stage then copies the Proxy Service input to the variable LogicalName.</p>
<p>Finally, the <strong>GetPhysicalService </strong>stage creates the Dynamic Routing XQuery into the variable PhysicalService via the expression:</p>
<p><a href="http://soaranch.files.wordpress.com/2010/09/xquery_dynamicrouting.png"><img class="aligncenter size-full wp-image-76" title="XQuery_DynamicRouting" src="http://soaranch.files.wordpress.com/2010/09/xquery_dynamicrouting.png?w=640" alt=""   /></a></p>
<p>The next action is a Dynamic Routing with the $PhysicalService in the Service expression.</p>
<p>The good thing about this setup is that it allows us to add or remove Dynamic Proxy Services in the XQueryResource and also change the logic of mapping the Logical to the Physical Service without having to change the Dynamic Proxy Service itself.</p>
<p><strong>Case 3:</strong></p>
<p>The above samples have not used the Operation setting for the dynamic endpoint.</p>
<p>Let us take a more concrete use case. Dynamic Endpoint definitions are maintained in an  XQuery Resource Map as before. The user can select which service he wants to invoke based on the input. In addition, the user also specifies the operation and messages to be exchanged.  The OSB Dynamic Proxy takes the input, maps to a Physical Service and invokes it.</p>
<p>The XQuery Resource for the Routing Map is now changed to:</p>
<p>&lt;Services&gt;<br />
&lt;Service&gt;<br />
&lt;logical&gt;Service1&lt;/logical&gt;<br />
&lt;physical&gt;ServiceCalloutTest/ProxyService1&lt;/physical&gt;<br />
&lt;isProxy&gt;true&lt;/isProxy&gt;<br />
&lt;/Service&gt;<br />
&lt;Service&gt;<br />
&lt;logical&gt;Service2&lt;/logical&gt;<br />
&lt;physical&gt;ServiceCalloutsWithErrorHandling/ProxyServices/ProxyService1&lt;/physical&gt;<br />
&lt;isProxy&gt;true&lt;/isProxy&gt;<br />
&lt;/Service&gt;<br />
&lt;/Services&gt;</p>
<p>The above config contains two endpoints viz. ServiceCalloutTest/ProxyService1 and ServiceCalloutsWithErrorHandling/ProxyServices/ProxyService1 each of which is based on the same abstract wsdl and exposes operations viz. getGreeting(String name) and getCurrentGreeting(). These methods are implemented differently.</p>
<p>The Dynamic Proxy service is designed to accept any WSDL with SOAP 1.1.  The input looks like below:</p>
<p>&lt;soapenv:Envelope xmlns:soapenv=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;soap:Header xmlns:soap=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;/soap:Header&gt;<br />
&lt;soapenv:Body&gt;<br />
&lt;ds:DynamicRoute xmlns:ds=&#8221;http://www.osbLabs.DynamicProxy&#8221;&gt;<br />
<strong> &lt;Service&gt;Service1&lt;/Service&gt; </strong><br />
&lt;osb:<strong>getGreeting </strong>xmlns:osb=&#8221;http://www.osbLabs.WebServices&#8221;&gt;<br />
&lt;!&#8211;Optional:&#8211;&gt;<br />
<strong>&lt;arg0&gt;Sandeep&lt;/arg0&gt;</strong><br />
&lt;/osb:getGreeting&gt;<br />
&lt;/ds:DynamicRoute&gt;<br />
&lt;/soapenv:Body&gt;<br />
&lt;/soapenv:Envelope&gt;</p>
<p>The Service element is a direct logical reference to the Service element in the XQuery Resource Routing Map.<br />
This is followed by the operation to be invoked and the relevant arguments. This makes sure operations can be invoked dynamically as well.</p>
<p>Another input with an operation getCurrentGreeting is shown below:</p>
<p>&lt;soapenv:Envelope      xmlns:soapenv=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;soap:Header      xmlns:soap=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;/soap:Header&gt;<br />
&lt;soapenv:Body&gt;<br />
&lt;ds:DynamicRoute      xmlns:ds=&#8221;http://www.osbLabs.DynamicProxy&#8221;&gt;<br />
<strong>&lt;Service&gt;Service1&lt;/Service&gt;</strong><br />
&lt;osb:<strong>getCurrentGreeting</strong> xmlns:osb=&#8221;http://www.osbLabs.WebServices&#8221;&gt;<br />
&lt;/osb:getCurrentGreeting&gt;<br />
&lt;/ds:DynamicRoute&gt;<br />
&lt;/soapenv:Body&gt;<br />
&lt;/soapenv:Envelope&gt;</p>
<p>The flow below shows the Dynamic Proxy Service:</p>
<p><a href="http://soaranch.files.wordpress.com/2010/09/dynamicwithoutwsdl3.png"><img class="aligncenter size-full wp-image-81" title="DynamicWithoutWSDL" src="http://soaranch.files.wordpress.com/2010/09/dynamicwithoutwsdl3.png?w=640" alt=""   /></a>The flow shows a series of assigns. Let me break it down bit by bit:</p>
<p><a href="http://soaranch.files.wordpress.com/2010/09/actions.png"><img class="aligncenter size-full wp-image-84" title="actions" src="http://soaranch.files.wordpress.com/2010/09/actions.png?w=640" alt=""   /></a></p>
<p><strong>Heres a sample run:</strong></p>
<p><strong>Input1:</strong></p>
<p>&lt;soapenv:Envelope xmlns:soapenv=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;soap:Header xmlns:soap=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;/soap:Header&gt;<br />
&lt;soapenv:Body&gt;<br />
&lt;ds:DynamicRoute xmlns:ds=&#8221;http://www.osbLabs.DynamicProxy&#8221;&gt;<br />
&lt;Service&gt;<strong>Service1</strong>&lt;/Service&gt;<br />
&lt;osb:<strong>getGreeting</strong> xmlns:osb=&#8221;http://www.osbLabs.WebServices&#8221;&gt;<br />
&lt;!&#8211;Optional:&#8211;&gt;<br />
<strong>&lt;arg0&gt;Sandeep&lt;/arg0&gt;</strong><br />
&lt;/osb:getGreeting&gt;<br />
&lt;/ds:DynamicRoute&gt;<br />
&lt;/soapenv:Body&gt;<br />
&lt;/soapenv:Envelope&gt;</p>
<p>Output from Service1 on operation getGreeting:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="xmlview_default" valign="top">&lt;<span class="xmlview_qname">soapenv:Envelope</span></td>
<td class="xmlview_default" valign="top"><span class="xmlview_attr_qname">xmlns:soapenv</span>=<span class="xmlview_attr_value">&#8220;http://schemas.xmlsoap.org/soap/envelope/&#8221;</span>&gt;</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding-left:28px;"></td>
<td class="xmlview_default" valign="top">&lt;<span class="xmlview_qname">soapenv:Header</span>/&gt;</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding-left:28px;"></td>
<td class="xmlview_default" valign="top">&lt;<span class="xmlview_qname">S:Body</span></td>
<td class="xmlview_default" valign="top"><span class="xmlview_attr_qname">xmlns:S</span>=<span class="xmlview_attr_value">&#8220;http://schemas.xmlsoap.org/soap/envelope/&#8221;</span>&gt;</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding-left:56px;"></td>
<td class="xmlview_default" valign="top">&lt;<span class="xmlview_qname">ns2:getGreetingResponse</span></td>
<td class="xmlview_default" valign="top"><span class="xmlview_attr_qname">xmlns:ns2</span>=<span class="xmlview_attr_value">&#8220;http://www.osbLabs.WebServices&#8221;</span>&gt;</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding-left:84px;"></td>
<td class="xmlview_default" valign="top">&lt;<span class="xmlview_qname">return</span>&gt;<strong><span class="xmlview_text">How are you Sandeep</span></strong>&lt;/<span class="xmlview_qname">return</span>&gt;</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding-left:56px;"></td>
<td class="xmlview_default" valign="top">&lt;/<span class="xmlview_qname">ns2:getGreetingResponse</span>&gt;</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding-left:28px;"></td>
<td class="xmlview_default" valign="top">&lt;/<span class="xmlview_qname">S:Body</span>&gt;</td>
</tr>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding-left:0;"></td>
<td class="xmlview_default" valign="top">&lt;/<span class="xmlview_qname">soapenv:Envelope</span>&gt;</td>
</tr>
</tbody>
</table>
<p><strong>Input2:</strong></p>
<p>&lt;soapenv:Envelope xmlns:soapenv=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;soap:Header xmlns:soap=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;/soap:Header&gt;<br />
&lt;soapenv:Body&gt;<br />
&lt;ds:DynamicRoute xmlns:ds=&#8221;http://www.osbLabs.DynamicProxy&#8221;&gt;<br />
<strong>&lt;Service&gt;Service2&lt;/Service&gt; </strong><br />
&lt;osb:<strong>getGreeting</strong> xmlns:osb=&#8221;http://www.osbLabs.WebServices&#8221;&gt;<br />
&lt;!&#8211;Optional:&#8211;&gt;<br />
&lt;arg0&gt;Sandeep&lt;/arg0&gt;<br />
&lt;/osb:getGreeting&gt;<br />
&lt;/ds:DynamicRoute&gt;<br />
&lt;/soapenv:Body&gt;<br />
&lt;/soapenv:Envelope&gt;</p>
<p>Output from Service2 on operation getGreeting:</p>
<p>&lt;soapenv:Envelope xmlns:soapenv=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;soapenv:Header/&gt;<br />
&lt;S:Body      xmlns:S=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;ns2:getGreetingResponse      xmlns:ns2=&#8221;http://www.osbLabs.WebServices&#8221;&gt;<br />
<strong>&lt;return&gt;Hola! Sandeep&lt;/return&gt;</strong><br />
&lt;/ns2:getGreetingResponse&gt;<br />
&lt;/S:Body&gt;<br />
&lt;/soapenv:Envelope&gt;</p>
<p><strong>Input 3:</strong></p>
<p>&lt;soapenv:Envelope      xmlns:soapenv=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;soap:Header      xmlns:soap=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;/soap:Header&gt;<br />
&lt;soapenv:Body&gt;<br />
&lt;ds:DynamicRoute  xmlns:ds=&#8221;http://www.osbLabs.DynamicProxy&#8221;&gt;<br />
<strong> &lt;Service&gt;Service2&lt;/Service&gt;</strong><br />
&lt;osb:<strong>getCurrentGreeting</strong> xmlns:osb=&#8221;http://www.osbLabs.WebServices&#8221;/&gt;<br />
&lt;/ds:DynamicRoute&gt;<br />
&lt;/soapenv:Body&gt;<br />
&lt;/soapenv:Envelope&gt;</p>
<p>Output from Service2 on operation getCurrentGreeting:</p>
<p>&lt;soapenv:Envelope      xmlns:soapenv=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;soapenv:Header/&gt;<br />
&lt;S:Body      xmlns:S=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;ns2:getCurrentGreetingResponse      xmlns:ns2=&#8221;http://www.osbLabs.WebServices&#8221;&gt;<br />
<strong>&lt;return&gt;</strong><strong>Hola!</strong><strong>&lt;/return&gt;</strong><br />
&lt;/ns2:getCurrentGreetingResponse&gt;<br />
&lt;/S:Body&gt;<br />
&lt;/soapenv:Envelope&gt;</p>
<p><strong>Input4:</strong></p>
<p>&lt;soapenv:Envelope      xmlns:soapenv=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;soap:Header      xmlns:soap=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;/soap:Header&gt;<br />
&lt;soapenv:Body&gt;<br />
&lt;ds:DynamicRoute  xmlns:ds=&#8221;http://www.osbLabs.DynamicProxy&#8221;&gt;<br />
<strong>&lt;Service&gt;Service1&lt;/Service&gt;</strong><br />
&lt;osb:<strong>getCurrentGreeting </strong>xmlns:osb=&#8221;http://www.osbLabs.WebServices&#8221;/&gt;<br />
&lt;/ds:DynamicRoute&gt;<br />
&lt;/soapenv:Body&gt;<br />
&lt;/soapenv:Envelope&gt;</p>
<p>Output from Service1 on operation getCurrentGreeting:</p>
<p>&lt;soapenv:Envelope      xmlns:soapenv=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;soapenv:Header/&gt;<br />
&lt;S:Body      xmlns:S=&#8221;http://schemas.xmlsoap.org/soap/envelope/&#8221;&gt;<br />
&lt;ns2:getCurrentGreetingResponse      xmlns:ns2=&#8221;http://www.osbLabs.WebServices&#8221;&gt;<br />
<strong> &lt;return&gt;How are you&lt;/return&gt;</strong><br />
&lt;/ns2:getCurrentGreetingResponse&gt;<br />
&lt;/S:Body&gt;<br />
&lt;/soapenv:Envelope&gt;</p>
<p>The above examples shows how easy it is to get OSB dynamic routing up and running quickly. This can serve as a good use case for complicated Proxy Services that does a lot of processing. When new endpoints arrive, the code is left untouched and the new service can be added directly in the XQuery resource.</p>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:1573px;width:1px;height:1px;overflow:hidden;"><img src="/DOCUME%7E1/phukan/LOCALS%7E1/Temp/moz-screenshot-1.png" alt="" /></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/soaranch.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/soaranch.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/soaranch.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/soaranch.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/soaranch.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/soaranch.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/soaranch.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/soaranch.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/soaranch.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/soaranch.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/soaranch.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/soaranch.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/soaranch.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/soaranch.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=69&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://soaranch.wordpress.com/2010/09/18/osb-dynamic-routing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af212ec63c07eac26ccb9284e3e4667a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleware</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/09/dynamicproxyservice.png" medium="image">
			<media:title type="html">DynamicProxyService</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/09/dynamicproxyservicewithxqueryresource.png" medium="image">
			<media:title type="html">DynamicProxyServiceWithXQueryResource</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/09/xqueryresource_routingtable.png" medium="image">
			<media:title type="html">XqueryResource_RoutingTable</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/09/xquery_dynamicrouting.png" medium="image">
			<media:title type="html">XQuery_DynamicRouting</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/09/dynamicwithoutwsdl3.png" medium="image">
			<media:title type="html">DynamicWithoutWSDL</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2010/09/actions.png" medium="image">
			<media:title type="html">actions</media:title>
		</media:content>
	</item>
		<item>
		<title>Sequence Diagrams to Oracle SCA</title>
		<link>http://soaranch.wordpress.com/2010/07/28/sequence-diagrams-to-oracle-sca/</link>
		<comments>http://soaranch.wordpress.com/2010/07/28/sequence-diagrams-to-oracle-sca/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 20:29:03 +0000</pubDate>
		<dc:creator>Sandeep Phukan</dc:creator>
				<category><![CDATA[Composite]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://soaranch.wordpress.com/?p=57</guid>
		<description><![CDATA[Oracle SOA 11g brings the Service Composite Architecture for the developers.  Barring the OSB, almost all other Oracle SOA Components will now have a uniform single design time presentation, resulting in easier SOA Artifacts life-cycle management and end to end visibility. However, this is still very much in the domain of an experienced SOA Developer.&#160;&#8230; <a href="http://soaranch.wordpress.com/2010/07/28/sequence-diagrams-to-oracle-sca/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=57&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Oracle SOA 11g brings the Service Composite Architecture for the developers.  Barring the OSB, almost all other Oracle SOA Components will now have a uniform single design time presentation, resulting in easier SOA Artifacts life-cycle management and end to end visibility.</p>
<p>However, this is still very much in the domain of an experienced SOA Developer. The truth is that by the time a sequence diagram for an Integration Flow is created, the architects or analysts have a very good idea of how the flow will proceed. The only thing left to the developers is to start dragging these scenarios in JDeveloper.  I believe given the full information in a Sequence Diagram, the system is in a state to be autogenerated to an intermediate SCA composite. This can substantially reduce the effort of the developers.</p>
<p>This means, instead of using the SCA composite as a base for checking integrations, the Sequence Diagrams now become the single source of truth for the SOA technical designtime. Simply put, anyone who can create a Sequence Diagram, can get an end to end SOA Integration Scenario running in seconds.</p>
<p>Lets see how this is possible. Any composite differs from others in the following ways:</p>
<p>1. Messages ( Input, Output,Fault )<br />
2. Namespaces<br />
3. Partnerlinks<br />
4. Transformation Activities for Process Variables and Messages and Lookups<br />
5. Orchestration Logic<br />
6. Fault Handling ( retry, notifications, worklists,etc)<br />
7. Runtime and Design Properties</p>
<p>All of the above can be <strong>auto-generated </strong>using information present in the Sequence Diagrams and the technical specifications for the Artifact (e.g. BPEL and BPM). 1,3,5 are obtained directly from the Sequence Diagrams. 7 can be inserted after the intermediate form is generated and the rest are all reusable fixed components.</p>
<p>The distinction between artifacts can be made by using a well defined Naming Nomenclature for the labels used in the Sequence Diagrams.</p>
<p>A preview of this automation tool will be made available shortly.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/soaranch.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/soaranch.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/soaranch.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/soaranch.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/soaranch.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/soaranch.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/soaranch.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/soaranch.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/soaranch.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/soaranch.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/soaranch.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/soaranch.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/soaranch.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/soaranch.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=57&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://soaranch.wordpress.com/2010/07/28/sequence-diagrams-to-oracle-sca/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af212ec63c07eac26ccb9284e3e4667a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleware</media:title>
		</media:content>
	</item>
		<item>
		<title>Custom XPath/XSLT Functions for Oracle App Server</title>
		<link>http://soaranch.wordpress.com/2008/09/09/custom-xpathxslt-functions-for-oracle-app-server/</link>
		<comments>http://soaranch.wordpress.com/2008/09/09/custom-xpathxslt-functions-for-oracle-app-server/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 19:09:14 +0000</pubDate>
		<dc:creator>Sandeep Phukan</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[custom XPAth]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JDeveloper]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[XPath]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://soaranch.wordpress.com/?p=35</guid>
		<description><![CDATA[Steps in creating custom XSL/XPath functions: This ones really handy&#8230; here are the steps: 1. Create a static inner class that implements IXPathFunction package customFunctions.sandeepphukan.test; import java.util.List; import com.oracle.bpel.xml.xpath.IXPathContext; import com.oracle.bpel.xml.xpath.IXPathFunction; import com.oracle.bpel.xml.xpath.XPathFunctionException; /** * A class that echoes the parameter * @author sphukan * */ public class echo { /** * XPath function */&#160;&#8230; <a href="http://soaranch.wordpress.com/2008/09/09/custom-xpathxslt-functions-for-oracle-app-server/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=35&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Steps in creating custom XSL/XPath functions:</p>
<p>This ones really handy&#8230; here are the steps:</p>
<p>1. Create a static inner class that implements IXPathFunction</p>
<p>package customFunctions.sandeepphukan.test;</p>
<p>import java.util.List;<br />
import com.oracle.bpel.xml.xpath.IXPathContext;<br />
import com.oracle.bpel.xml.xpath.IXPathFunction;<br />
import com.oracle.bpel.xml.xpath.XPathFunctionException;</p>
<p>/**<br />
* A class that echoes the parameter<br />
* @author sphukan<br />
*<br />
*/<br />
public class echo {</p>
<p>/**<br />
* XPath function<br />
*/<br />
public static class echoXPathFunction implements IXPathFunction{</p>
<p>public Object call(IXPathContext arg0, List arg1) throws XPathFunctionException {<br />
if (arg1.size()!=1){<br />
throw new XPathFunctionException(&#8220;This custom XPath function requires exactly one argument!!!&#8221;);<br />
}else{<br />
return echo((String)arg1.get(0));<br />
}</p>
<p>}</p>
<p>}</p>
<p>public static String echo(String text){<br />
return text;<br />
}</p>
<p>}</p>
<p>If you creating the java class via Eclipse then include the path %ORACLE_AS%\bpel\lib in your project.</p>
<p>2. Put the class as a jar in  %JDEV_HOME%\jdev\lib\patches<br />
3. Register the jar in the JDev User Defined Extension functions(Tools-&gt;Preferences-&gt;XSLMaps) file and restart JDev</p>
<p>&lt;extension-functions xmlns:pcui=&#8221;http://www.oracle.com/PC/ui&#8221;&gt;<br />
&lt;functions xmlns:utl=&#8221;http://www.oracle.com/XSL/Transform/java/customFunctions.sandeepphukan.test.echo&#8221;&gt;<br />
&lt;function name=&#8221;utl:echo&#8221; as=&#8221;string&#8221;&gt;<br />
&lt;param name=&#8221;text&#8221; as=&#8221;string&#8221;/&gt;<br />
&lt;/function&gt;<br />
&lt;/functions&gt;<br />
&lt;functions xmlns:ora=&#8221;http://schemas.oracle.com/xpath/extension&#8221;&gt;<br />
&lt;/functions&gt;<br />
&lt;/extension-functions&gt;</p>
<p>You should be able to see the custom Function in User Defined Extension Functions pallette:</p>
<div id="attachment_39" class="wp-caption aligncenter" style="width: 460px"><a href="http://soaranch.files.wordpress.com/2008/09/xslmapper.jpg"><img class="size-large wp-image-39" title="xslmapper" src="http://soaranch.files.wordpress.com/2008/09/xslmapper.jpg?w=450&#038;h=276" alt="XSL Mapper Custom Funtion Display" width="450" height="276" /></a><p class="wp-caption-text">XSL Mapper Custom Funtion Display</p></div>
<p>4. Edit the file %SOA_HOME%\bpel\system\config\xpath-functions.xml</p>
<p>&lt;function id=&#8221;echo&#8221; arity=&#8221;1&#8243;&gt; &lt;!&#8211;Arity is the number of mandatory arguments &#8211;&gt;<br />
&lt;comment&gt;&lt;![CDATA[This function echoes the parameter....<br />
&lt;p/&gt;<br />
The signature of the function is &lt;i&gt;utl:echo('string')&lt;/i&gt;.<br />
The arguments are:<br />
&lt;ol type="1"&gt;<br />
&lt;li&gt;string - single string parameter.<br />
&lt;/ol&gt;]]&gt;&lt;/comment&gt;<br />
&lt;classname&gt;customFunctions.sandeepphukan.test.echo$EchoFunction&lt;/classname&gt; &lt;!&#8211;Inner className &#8211;&gt;<br />
&lt;property id=&#8221;namespace-uri&#8221;&gt;<br />
&lt;value&gt;http://www.oracle.com/XSL/Transform/java/customFunctions.sandeepphukan.test.echo&lt;/value&gt;<br />
&lt;comment&gt;&lt;![CDATA[Namespace URI for this function]]&gt;&lt;/comment&gt;<br />
&lt;/property&gt;<br />
&lt;property id=&#8221;namespace-prefix&#8221;&gt;<br />
&lt;value&gt;utl&lt;/value&gt;<br />
&lt;comment&gt;&lt;![CDATA[Namespace prefix for this function]]&gt;&lt;/comment&gt;<br />
&lt;/property&gt;<br />
&lt;/function&gt;</p>
<p>5. Drop the custom classes in the location %SOA_HOME%\bpel\system\classes. Incase you are using Eclipse you should be able to find these classes under EclipseWorkspace/ProjectName/bin/<br />
6. Restart Oracle AS.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; For JDEV Expressions Builder &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
1. Copy the file %JDEV_HOME%/integration/lib/bpm-ide-common.jar to a temp directory.<br />
2. Unjar the file %tempDir%/bpm-ide-common.jar with the following command<br />
jar -xvf bpm-ide-common.jar oracle/tip/tools/ide/common/resource/PreBuiltExtensionFunctions.xml<br />
3. Now edit the infalted PreBuiltExtensionFunctions.xml file and add the entry:<br />
&lt;functions xmlns:utl=&#8221;http://www.oracle.com/XSL/Transform/java/customFunctions.sandeepphukan.test.echo&#8221;&gt;<br />
&lt;function name=&#8221;utl:echo&#8221; as=&#8221;string&#8221;&gt;<br />
&lt;param name=&#8221;text&#8221; as=&#8221;string&#8221; required=&#8221;yes&#8221;/&gt;<br />
&lt;pcui:ui&gt;<br />
&lt;pcui:mapper palettePage=&#8221;Advanced Functions&#8221;/&gt;<br />
&lt;/pcui:ui&gt;<br />
&lt;/function&gt;<br />
&lt;/functions&gt;<br />
4. Now update the jar file with the command:<br />
jar -uf bpm-ide-common.jar oracle/tip/tools/ide/common/resource/PreBuiltExtensionFunctions.xml<br />
5. Finally put the jar file back into %JDEV_HOME%/integration/lib/ directory. You might want to keep a backup of the original jar before you do this.</p>
<p>Once done, restart JDeveloper and you should be able to see your custom function:</p>
<div id="attachment_41" class="wp-caption aligncenter" style="width: 460px"><a href="http://soaranch.files.wordpress.com/2008/09/xpatch-expression-builder.jpg"><img class="size-large wp-image-41" title="xpatch-expression-builder" src="http://soaranch.files.wordpress.com/2008/09/xpatch-expression-builder.jpg?w=450&#038;h=290" alt="XPath Expressions Builder Custom Function Display" width="450" height="290" /></a><p class="wp-caption-text">XPath Expressions Builder Custom Function Display</p></div>
<p>Testing it out :</p>
<p>1. Create a BPEL process<br />
2. Use the transform activity and map input to output.<br />
3. In the XSL file design mode open the components pallette and locate your function in the User Defined Extension Functions pallette.<br />
4. Drag it and assign it.<br />
5. Deploy it and run it in the AS.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/soaranch.wordpress.com/35/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/soaranch.wordpress.com/35/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/soaranch.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/soaranch.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/soaranch.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/soaranch.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/soaranch.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/soaranch.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/soaranch.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/soaranch.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/soaranch.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/soaranch.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/soaranch.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/soaranch.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/soaranch.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/soaranch.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=35&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://soaranch.wordpress.com/2008/09/09/custom-xpathxslt-functions-for-oracle-app-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af212ec63c07eac26ccb9284e3e4667a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleware</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2008/09/xslmapper.jpg?w=450" medium="image">
			<media:title type="html">xslmapper</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2008/09/xpatch-expression-builder.jpg?w=450" medium="image">
			<media:title type="html">xpatch-expression-builder</media:title>
		</media:content>
	</item>
		<item>
		<title>Passing Parameters from BPEL to XSLT</title>
		<link>http://soaranch.wordpress.com/2008/09/08/passing-parameters-from-bpel-to-xslt/</link>
		<comments>http://soaranch.wordpress.com/2008/09/08/passing-parameters-from-bpel-to-xslt/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 11:42:40 +0000</pubDate>
		<dc:creator>Sandeep Phukan</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[BPEL XSL Parameters]]></category>
		<category><![CDATA[Oracle ESB]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[XSLT]]></category>

		<guid isPermaLink="false">http://soaranch.wordpress.com/?p=16</guid>
		<description><![CDATA[Oracle BPEL can pass parameters defined within an XSLT. This is convenient as normally the XSLT maps are not able to access variables that are defined explicitly in BPEL. Its pretty easy to do &#8230; just follow these steps: 1. The parameters that require to be passed to the XSLT should adhere to the following&#160;&#8230; <a href="http://soaranch.wordpress.com/2008/09/08/passing-parameters-from-bpel-to-xslt/">Read&#160;more</a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=16&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Oracle BPEL can pass parameters defined within an XSLT. This is convenient as normally the XSLT maps are not able to access variables that are defined explicitly in BPEL.</p>
<p>Its pretty easy to do &#8230; just follow these steps:</p>
<p>1. The parameters that require to be passed to the XSLT should adhere to the following schema:</p>
<div id="attachment_17" class="wp-caption alignnone" style="width: 460px"><a href="http://soaranch.files.wordpress.com/2008/09/1.jpg"><img class="size-full wp-image-17" title="1" src="http://soaranch.files.wordpress.com/2008/09/1.jpg?w=640" alt="Parameter Schema"   /></a><p class="wp-caption-text">Parameter Schema</p></div>
<p>I have used a minOccurs of 2 but you may not need it &#8230;</p>
<p>2. Now create a variable based on this schema . Let us call it parametersVar.</p>
<div id="attachment_21" class="wp-caption alignnone" style="width: 460px"><a href="http://soaranch.files.wordpress.com/2008/09/3.jpg"><img class="size-large wp-image-21" title="3" src="http://soaranch.files.wordpress.com/2008/09/3.jpg?w=450&#038;h=335" alt="create variable for parameter" width="450" height="335" /></a><p class="wp-caption-text">create variable for parameter</p></div>
<p>3. Now set values to this variable. In this example I have taken the values from the input. A transform activity based on the xsl setParameters.xsl sets the input. you may also choose to hardcode the values.</p>
<div id="attachment_22" class="wp-caption alignnone" style="width: 460px"><a href="http://soaranch.files.wordpress.com/2008/09/4.jpg"><img class="size-large wp-image-22" title="4" src="http://soaranch.files.wordpress.com/2008/09/4.jpg?w=450&#038;h=146" alt="populate the parameter variable" width="450" height="146" /></a><p class="wp-caption-text">populate the parameter variable</p></div>
<p>4.Now create another transform activity called callXSLT that maps the input to the output. This xslt defines two parameters viz. param1 and param2. The XSLT simply concats the two parameters and assigns to the output.</p>
<div id="attachment_23" class="wp-caption alignnone" style="width: 460px"><a href="http://soaranch.files.wordpress.com/2008/09/5.jpg"><img class="size-large wp-image-23" title="5" src="http://soaranch.files.wordpress.com/2008/09/5.jpg?w=450&#038;h=236" alt="XSLT with Parameters" width="450" height="236" /></a><p class="wp-caption-text">XSLT with Parameters</p></div>
<p>5. The BPEL process should now look like this:</p>
<div id="attachment_24" class="wp-caption alignnone" style="width: 460px"><a href="http://soaranch.files.wordpress.com/2008/09/6.jpg"><img class="size-large wp-image-24" title="6" src="http://soaranch.files.wordpress.com/2008/09/6.jpg?w=450&#038;h=394" alt="BPEL process design view" width="450" height="394" /></a><p class="wp-caption-text">BPEL process design view</p></div>
<p>6. Now open this BPEL process in source mode and edit the</p>
<p>&lt;from expression=&#8221;ora:processXSLT(&#8216;callXSLT.xsl&#8217;,bpws:getVariableData(&#8216;inputVariable&#8217;,'payload&#8217;))</p>
<p>to include the parameters as this:</p>
<p>&lt;from expression=&#8221;ora:processXSLT(&#8216;callXSLT.xsl&#8217;,bpws:getVariableData(&#8216;inputVariable&#8217;,'payload&#8217;),bpws:getVariableData(&#8216;parametersVar&#8217;))&#8221;/&gt;</p>
<p>The BPEL source should now look like this:</p>
<p>&lt;?xml version = &#8220;1.0&#8243; encoding = &#8220;UTF-8&#8243; ?&gt;<br />
&lt;!&#8211;<br />
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
Oracle JDeveloper BPEL Designer</p>
<p>Created: Mon Sep 08 13:47:27 IST 2008<br />
Author:  sphukan<br />
Purpose: Synchronous BPEL Process<br />
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&#8211;&gt;<br />
&lt;process name=&#8221;paramsFromBPELToXSLT&#8221;<br />
targetNamespace=&#8221;http://xmlns.oracle.com/paramsFromBPELToXSLT&#8221;<br />
xmlns=&#8221;http://schemas.xmlsoap.org/ws/2003/03/business-process/&#8221;<br />
xmlns:bpws=&#8221;http://schemas.xmlsoap.org/ws/2003/03/business-process/&#8221;<br />
xmlns:xp20=&#8221;http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20&#8243;<br />
xmlns:ids=&#8221;http://xmlns.oracle.com/bpel/services/IdentityService/xpath&#8221;<br />
xmlns:ldap=&#8221;http://schemas.oracle.com/xpath/extension/ldap&#8221;<br />
xmlns:xsd=&#8221;http://www.w3.org/2001/XMLSchema&#8221;<br />
xmlns:client=&#8221;http://xmlns.oracle.com/paramsFromBPELToXSLT&#8221;<br />
xmlns:ora=&#8221;http://schemas.oracle.com/xpath/extension&#8221;<br />
xmlns:xref=&#8221;http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions&#8221;<br />
xmlns:hwf=&#8221;http://xmlns.oracle.com/bpel/workflow/xpath&#8221;<br />
xmlns:aia=&#8221;http://www.oracle.com/XSL/Transform/java/oracle.apps.aia.core.xpath.AIAFunctions&#8221;<br />
xmlns:ns1=&#8221;http://schemas.oracle.com/service/bpel/common&#8221;<br />
xmlns:ehdr=&#8221;http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions&#8221;<br />
xmlns:bpelx=&#8221;http://schemas.oracle.com/bpel/extension&#8221;<br />
xmlns:orcl=&#8221;http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc&#8221;&gt;<br />
&lt;!&#8211;<br />
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
PARTNERLINKS<br />
List of services participating in this BPEL process<br />
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&#8211;&gt;<br />
&lt;partnerLinks&gt;<br />
&lt;!&#8211;<br />
The &#8216;client&#8217; role represents the requester of this service. It is<br />
used for callback. The location and correlation information associated<br />
with the client role are automatically set using WS-Addressing.<br />
&#8211;&gt;<br />
&lt;partnerLink name=&#8221;client&#8221; partnerLinkType=&#8221;client:paramsFromBPELToXSLT&#8221;<br />
myRole=&#8221;paramsFromBPELToXSLTProvider&#8221;/&gt;<br />
&lt;/partnerLinks&gt;<br />
&lt;!&#8211;<br />
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
VARIABLES<br />
List of messages and XML documents used within this BPEL process<br />
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&#8211;&gt;<br />
&lt;variables&gt;<br />
&lt;!&#8211; Reference to the message passed as input during initiation &#8211;&gt;<br />
&lt;!&#8211; Reference to the message that will be returned to the requester&#8211;&gt;<br />
&lt;variable name=&#8221;inputVariable&#8221;<br />
messageType=&#8221;client:paramsFromBPELToXSLTRequestMessage&#8221;/&gt;<br />
&lt;variable name=&#8221;outputVariable&#8221;<br />
messageType=&#8221;client:paramsFromBPELToXSLTResponseMessage&#8221;/&gt;<br />
&lt;variable name=&#8221;parametersVar&#8221; element=&#8221;ns1:parameters&#8221;/&gt;<br />
&lt;/variables&gt;<br />
&lt;!&#8211;<br />
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
ORCHESTRATION LOGIC<br />
Set of activities coordinating the flow of messages across the<br />
services integrated within this business process<br />
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
&#8211;&gt;<br />
&lt;sequence name=&#8221;main&#8221;&gt;<br />
&lt;!&#8211; Receive input from requestor. (Note: This maps to operation defined in paramsFromBPELToXSLT.wsdl) &#8211;&gt;<br />
&lt;receive name=&#8221;receiveInput&#8221; partnerLink=&#8221;client&#8221;<br />
portType=&#8221;client:paramsFromBPELToXSLT&#8221; operation=&#8221;process&#8221;<br />
variable=&#8221;inputVariable&#8221; createInstance=&#8221;yes&#8221;/&gt;<br />
&lt;!&#8211; Generate reply to synchronous request &#8211;&gt;<br />
&lt;assign name=&#8221;setParameters&#8221;&gt;<br />
&lt;bpelx:annotation&gt;<br />
&lt;bpelx:pattern&gt;transformation&lt;/bpelx:pattern&gt;<br />
&lt;/bpelx:annotation&gt;<br />
&lt;copy&gt;<br />
&lt;from expression=&#8221;ora:processXSLT(&#8216;setParameters.xsl&#8217;,bpws:getVariableData(&#8216;inputVariable&#8217;,'payload&#8217;))&#8221;/&gt;<br />
&lt;to variable=&#8221;parametersVar&#8221;/&gt;<br />
&lt;/copy&gt;<br />
&lt;/assign&gt;<br />
&lt;assign name=&#8221;callXSLT&#8221;&gt;<br />
&lt;bpelx:annotation&gt;<br />
&lt;bpelx:pattern&gt;transformation&lt;/bpelx:pattern&gt;<br />
&lt;/bpelx:annotation&gt;<br />
&lt;copy&gt;<br />
&lt;from expression=&#8221;ora:processXSLT(&#8216;callXSLT.xsl&#8217;,bpws:getVariableData(&#8216;inputVariable&#8217;,'payload&#8217;),bpws:getVariableData(&#8216;parametersVar&#8217;))&#8221;/&gt;<br />
&lt;to variable=&#8221;outputVariable&#8221; part=&#8221;payload&#8221;/&gt;<br />
&lt;/copy&gt;<br />
&lt;/assign&gt;<br />
&lt;reply name=&#8221;replyOutput&#8221; partnerLink=&#8221;client&#8221;<br />
portType=&#8221;client:paramsFromBPELToXSLT&#8221; operation=&#8221;process&#8221;<br />
variable=&#8221;outputVariable&#8221;/&gt;<br />
&lt;/sequence&gt;<br />
&lt;/process&gt;</p>
<p>7. Save the file, validate and deploy the process.</p>
<p>8. Now initiate the process in Oracle AS and put the input as follows:</p>
<div id="attachment_28" class="wp-caption alignnone" style="width: 459px"><a href="http://soaranch.files.wordpress.com/2008/09/7.jpg"><img class="size-large wp-image-28" title="7" src="http://soaranch.files.wordpress.com/2008/09/7.jpg?w=449&#038;h=235" alt="Initiate the BPEL Process" width="449" height="235" /></a><p class="wp-caption-text">Initiate the BPEL Process</p></div>
<p>Notice that param1 and param2 are the parameters we defined earlier in the XSL file.</p>
<p>9. The output shows the result.</p>
<div id="attachment_29" class="wp-caption aligncenter" style="width: 420px"><a href="http://soaranch.files.wordpress.com/2008/09/8.jpg"><img class="size-full wp-image-29" title="8" src="http://soaranch.files.wordpress.com/2008/09/8.jpg?w=640" alt="BPEL Process Flow Diagram"   /></a><p class="wp-caption-text">BPEL Process Flow Diagram</p></div>
<div id="attachment_31" class="wp-caption aligncenter" style="width: 460px"><a href="http://soaranch.files.wordpress.com/2008/09/10.jpg"><img class="size-large wp-image-31" title="10" src="http://soaranch.files.wordpress.com/2008/09/10.jpg?w=450&#038;h=220" alt="Output from the setParameters operation" width="450" height="220" /></a><p class="wp-caption-text">Output from the setParameters operation</p></div>
<p>Thats all&#8230;enjoy!!!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/soaranch.wordpress.com/16/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/soaranch.wordpress.com/16/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/soaranch.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/soaranch.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/soaranch.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/soaranch.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/soaranch.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/soaranch.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/soaranch.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/soaranch.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/soaranch.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/soaranch.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/soaranch.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/soaranch.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/soaranch.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/soaranch.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=soaranch.wordpress.com&amp;blog=4725494&amp;post=16&amp;subd=soaranch&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://soaranch.wordpress.com/2008/09/08/passing-parameters-from-bpel-to-xslt/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/af212ec63c07eac26ccb9284e3e4667a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">middleware</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2008/09/1.jpg" medium="image">
			<media:title type="html">1</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2008/09/3.jpg?w=450" medium="image">
			<media:title type="html">3</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2008/09/4.jpg?w=450" medium="image">
			<media:title type="html">4</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2008/09/5.jpg?w=450" medium="image">
			<media:title type="html">5</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2008/09/6.jpg?w=450" medium="image">
			<media:title type="html">6</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2008/09/7.jpg?w=449" medium="image">
			<media:title type="html">7</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2008/09/8.jpg" medium="image">
			<media:title type="html">8</media:title>
		</media:content>

		<media:content url="http://soaranch.files.wordpress.com/2008/09/10.jpg?w=450" medium="image">
			<media:title type="html">10</media:title>
		</media:content>
	</item>
	</channel>
</rss>
