<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2627158641075173556</id><updated>2012-01-26T09:04:54.251-08:00</updated><category term='deployment script'/><category term='ant'/><category term='XSL'/><category term='Oracle BPEL'/><category term='WS Security'/><category term='bpelc'/><category term='ORABPEL-10902'/><category term='SOA 11g'/><category term='Enrich XML'/><category term='SOA 10g'/><category term='Errors'/><category term='Migration'/><category term='WS-Security'/><category term='Java Embedding'/><category term='Best Practices'/><category term='SOA Suite 11g Best Practices'/><category term='Classpath'/><category term='SOAP Header'/><title type='text'>SOA: What, How &amp; Why</title><subtitle type='html'>A single place for Oracle Middleware Technologies; Get insight, solutions on  Oracle SOA Suite(BPEL,ESB, OSB), B2B, OTM, Oracle E-Business Suite.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-8086606862809994636</id><published>2011-07-31T12:19:00.000-07:00</published><updated>2011-09-01T14:19:52.658-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA Suite 11g Best Practices'/><title type='text'>SOA Suite 11g Best Practices</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Here is the consolidated list of articles on SOA Suite 11g best practices:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;Migration: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://soa-howto.blogspot.com/2011/05/soa-10g-to-11g-migration-best-practices.html"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;http://soa-howto.blogspot.com/2011/05/soa-10g-to-11g-migration-best-practices.html&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;Testing:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;a href="http://www.slideshare.net/gschmutz/best-practices-for-testing-soa-suite-11g-based-systems"&gt;&lt;span style="font-size:85%;"&gt;http://www.slideshare.net/gschmutz/best-practices-for-testing-soa-suite-11g-based-systems&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;Performance Tuning: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/articles/soa/index-095969.html?ssSourceSiteId=ocomen"&gt;&lt;span style="font-size:85%;"&gt;http://www.oracle.com/technetwork/articles/soa/index-095969.html?ssSourceSiteId=ocomen&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blog.ipnweb.com/2011/04/performance-tuning-oracle-soa-suite-11g.html"&gt;&lt;span style="font-size:85%;"&gt;http://blog.ipnweb.com/2011/04/performance-tuning-oracle-soa-suite-11g.html&lt;/span&gt;&lt;/a&gt; &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://orasoa.blogspot.com/2011/08/tuning-soa-11g-in-nutshell.html"&gt;&lt;span style="font-size:85%;"&gt;http://orasoa.blogspot.com/2011/08/tuning-soa-11g-in-nutshell.html&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;AQ Tuning:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;a href="http://orasoa.blogspot.com/2011/07/soa-suite-11g-aq-tuning-tip.html"&gt;&lt;span style="font-size:85%;"&gt;http://orasoa.blogspot.com/2011/07/soa-suite-11g-aq-tuning-tip.html&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;SOA 11g Purging Performance Improvement: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://orasoa.blogspot.com/2011/07/soa-11g-ps3ps4-significant-purging.html"&gt;&lt;span style="font-size:85%;"&gt;http://orasoa.blogspot.com/2011/07/soa-11g-ps3ps4-significant-purging.html&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-8086606862809994636?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/8086606862809994636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=8086606862809994636' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/8086606862809994636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/8086606862809994636'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2011/07/soa-11g-best-practices.html' title='SOA Suite 11g Best Practices'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-8530713465204782519</id><published>2011-06-26T19:05:00.000-07:00</published><updated>2011-06-27T20:37:19.846-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XSL'/><category scheme='http://www.blogger.com/atom/ns#' term='Enrich XML'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA 11g'/><title type='text'>How to Enrich Existing XML Using XSL in SOA 11g</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:100%;"&gt;Many times you have a requirement to enrich existing xml objects in a BPEL. I have seen developers using assign activity for that. Assign activity is appropriate if you are adding few mappings. It will be little bit difficult to use assign activity if&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:100%;"&gt;You need to map optional elements. Assign will fail at runtime if the element is not present in the payload. To prevent selection failure you need to add a Switch activity to check for element existence.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:100%;"&gt;You need to add&lt;/span&gt;&lt;span style="font-family:trebuchet ms;font-size:100%;"&gt;/append/update a collection of xml elements. It requires a While activity to iterate the collection.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:100%;"&gt;You need to add mappings for multiple elements.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;If you try to do it using Assign your BPEL will be flooded with Switch, Assign and While activities. Your BPEL process become &lt;/span&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;unmanageable &lt;/span&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;its will increase the development time as well. Generally people think the following about XSL transformations:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;XSL transformations are very complex to write.&lt;/span&gt;&lt;/li&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;They may loose some elements if they use XSL.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;So they go with Assign activity and bear all the pains I have mentioned earlier. You can pass multiple source XML objects to an XSL map in SOA 11g. See &lt;a href="http://blogs.oracle.com/soa_how_to/entry/how_to_implement_multi-source_xslt_mapping_in_11g_bpel"&gt;this post &lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;to learn how to pass multiple XML objects to the XSL map. Enriching existing XML using XSL maps is easy in SOA 11g, You just need to follow the steps given below:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;&lt;br /&gt;1. Add a Transform activity and select the same xml variable as source and target.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;2. Add additional variables as source. These variables will be passed as parameters to XSL transformation. See the image given below:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-_pLY5CuIdiA/TggKFb4q03I/AAAAAAAAAdY/QE5Xuiqb8-w/s1600/multi_source_trsnsform.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 302px; height: 274px;" src="http://2.bp.blogspot.com/-_pLY5CuIdiA/TggKFb4q03I/AAAAAAAAAdY/QE5Xuiqb8-w/s320/multi_source_trsnsform.JPG" alt="" id="BLOGGER_PHOTO_ID_5622755223273132914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Click on Apply and it will open the XSLT map.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;4. Map at least one element from each of the additional variables to the target variable. When you add mappings for additional variables, XSL designer defined parameters for additional variables in the XSL. If you want to define parameters manually you can ignore this step.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;font-size:100%;"&gt;5.&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;Go to XSL source view and remove the default template and mappings added by the map designer. You can keep XPath expressions in a separate text editor window. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;6.Copy the following template in the XSL file: &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;        &amp;lt;xsl:template&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;match&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;="@*|node()"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;xsl:copy&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;xsl:apply-templates&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;="@*|node()"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;/xsl:copy&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;        &amp;lt;/xsl:template&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;This map copies all the elements from source to the target XML. As you are enriching the existing XML, this template will make sure that you don’t loose any xml element. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;7. Now it’s the time for customization. You need to add one template per XML element you want to customize. See the following sample template:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:trebuchet ms;font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;&amp;lt;xsl:template&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;match&lt;/span&gt;=&lt;span style="color: rgb(0, 0, 153);"&gt;"sample:Line"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    &amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms; color: rgb(0, 0, 102);font-family:Trebuchet MS;font-size:100%;"  &gt;sample:&lt;/span&gt;&lt;span style="font-family:trebuchet ms;font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;Line&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; xmlns:sample&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;="&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a style="font-family: trebuchet ms;" href="http://www.oracle.com/Sample%22&amp;amp;gt"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;http://www.oracle.com/Sample"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt; &lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;&amp;lt;xsl:apply-templates&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;select&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;="@* | *"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;      &amp;lt;&lt;/span&gt;!-- ADD you custom mappings here. You can also add new elements here--&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=" color: rgb(0, 0, 102);font-family:trebuchet ms;" &gt;    &amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms; color: rgb(0, 0, 102);font-family:Trebuchet MS;font-size:100%;"  &gt;sample:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=" color: rgb(0, 0, 102);font-family:trebuchet ms;" &gt;Line&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;  &amp;lt;/xsl:template&amp;gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;Please note that if you add a template for an XML element it will be applied to that element and its children. You can add new elements, change element values in the XSL templates. Make changes to the above XSL template as per you requirement. Add proper namespace prefixes and declarations.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Trebuchet MS;font-size:100%;"&gt;&lt;br /&gt;8. Once done with the XSL, test it in JDeveloper to make sure that it is working fine.&lt;br /&gt;&lt;br /&gt;9. Deploy your composite on SOA 11g server and test it.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-8530713465204782519?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/8530713465204782519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=8530713465204782519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/8530713465204782519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/8530713465204782519'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2011/06/how-to-enrich-existing-xml-using-xsl-in.html' title='How to Enrich Existing XML Using XSL in SOA 11g'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-_pLY5CuIdiA/TggKFb4q03I/AAAAAAAAAdY/QE5Xuiqb8-w/s72-c/multi_source_trsnsform.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-2152414243450509212</id><published>2011-05-14T12:23:00.000-07:00</published><updated>2011-05-14T14:35:36.361-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA 10g'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Migration'/><category scheme='http://www.blogger.com/atom/ns#' term='SOA 11g'/><title type='text'>SOA 10g to 11g Migration Best Practices</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if !mso]&gt;&lt;object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id="ieooui"&gt;&lt;/object&gt; &lt;style&gt; st1\:*{behavior:url(#ieooui) } &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: trebuchet ms;"&gt;&lt;span style="font-size: 10pt;"&gt;Oracle SOA Suite 11g was released couple of years ago and companies are using it to develop integration solutions since then. Those who have developed their integration solutions using SOA Suite 10g they have upgraded their infrastructure and code base to SOA Suite 11g or they are planning to upgrade it to 11g.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;SOA Suite 11g has significant differences from SOA Suite 10g. In this post I am writing about the best practices for upgrading SOA 10g code base to SOA Suite 11g. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="color: rgb(0, 0, 153);"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-family:Tahoma"&gt;Pre Migration Best Practices&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Ensure that 10g Projects are Up and Running on Latest SOA 10g Release&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align:justify;mso-layout-grid-align:none; text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;Before migrating a 10g project its better to verify that the project is up and running. If your project have dependencies on the external web services than make sure that all the external web service are up and running.&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size: 10pt;"&gt;Install JDeveloper 11g:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;Download latest JDeveloper 11g release and upgrade it with SOA composite editor extension.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Install latest SOA 11g Version:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;Download and install latest SOA Suite 11g release (Latest SOA Suite 11g version now is 11.1.1.5 also named as SOA 11g PS4).&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Start with One Business Case:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;Don’t try to upgrade the complete 10g code base. Select one business case and start upgrading projects needed for the selected business case. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Configure Resources:&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;Configure all the resources you need to run your application on newly installed SOA 11g server (JMS Queues/Topics, DB Connection pools, Security Policies, Work Managers etc).&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Use Scripts to Migrate 10g Projects:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10.0pt;font-family:Tahoma"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;If you are migrating just one project than using JDeveloper migration wizard is a clever choice. If you want to migrate all of your 10g projects into 11g format than using ant-sca-upgrade.xml is a better option. You can write a shell/ant script to upgrade all 10g projects leveraging ant-sca-upgrade.xml. In the next article I will provide an ant script to migrate 10g projects to 11g.&lt;/span&gt;&lt;/p&gt;&lt;b style="color: rgb(0, 0, 153);"&gt;&lt;span style="mso-bidi-font-size:10.0pt; font-family:Tahoma"&gt;Post Migration Best Practices&lt;/span&gt;&lt;/b&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Compile Migrated Projects and Fix Compilation Errors.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;11g BPEL compiler is stricter than 10g. You might get compilation error for XPath functions or for XPath expressions. Check the compilation logs for errors and fix them. In 11g they changed namespace prefixes for some of the XPath functions, you need to correct the XPath function signature. For example ora:parsexml() is oraext:parsexml now. You can have a look on the 11g XPath functions definitions in &amp;lt;JDEVELOPER_HOME&amp;gt;/integration/seed/soa/configuration folder. This folder contains XPath function definitions for bpel, mediator, mapper etc.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Rearrange Artifacts Into Corresponding Folders.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;For a BPEL project, JDeveloper 10g keeps all the artifacts inside bpel folder. JDeveloper 11g organizes artifacts in folders. For example it keeps .xsd files in xsd folder, .wsdl files in wsdl folder and so on. When you upgrade a 10g project to 11g project neither JDeveloper Migration Wizard nor ant-sca-upgrade.xml reorganizes the project artifacts in their corresponding folders. Copy artifacts into corresponding foder. It doesn’t make any difference in the functionality but it will make your 11g projects much cleaner and organized. Don’t forget to modify the path of xsd's, xslt's, wsdl's in the files referring these artifacts.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Create JDeveloper Applications and Projects&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;When you upgrade a 10g project using ant-sca-upgrade.xml script it won’t generate .jws and .jpr files in the upgraded projects. You need to create applications and projects in JDeveloper manually. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Run 11g Adapter Configuration Wizard to Verify the Adapters&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;Run 11g adapter configuration wizard for each adapter in an upgraded project to make sure that all the adapter configurations are correct and contains all the required properties. It will also validate the adapter connections to SOA 11g environment.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Update JCA adapter Header Variables &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 10pt; font-family: Tahoma;"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;SOA 11g manages JCA adapter header variables in a different manner. JCA adapter header variables are invoke activity properties &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;now&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;. If you are using adapter header variables in SOA 10g projects you need to manually set these adapter header properties on the &lt;span style="font-weight: bold;"&gt;Properties &lt;/span&gt;tab of the &lt;span style="font-weight: bold;"&gt;Invoke activity&lt;/span&gt; dialog box. You can see all the available adapter header properties on the properties tab of the invoke activity. Recompile the modified project to ensure that&lt;span style="mso-spacerun:yes"&gt; everything is fine.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Create Configuration Plans for Deployment.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;JDeveloper 11g migration wizard or 11g migration script doesn’t upgrade any SOA 10g deployment plan and build scripts. You need to manually create configuration plans for SOA 11g projects. Configuration plans help you to customize environment specific values (i.e. hostname, port, resource locations etc). Click &lt;a href="http://download.oracle.com/docs/cd/E17904_01/integration.1111/e10224/sca_lifecycle.htm#CHDCAGEB"&gt;here&lt;/a&gt; to find out how to generate and use deployment plans.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Manage Common Artifacts Using MDS &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;In Fusion Middleware 11g oracle introduces a new way of managing application meta data using MDS (Meta Data Service). MDS is a single unified repository to store all the shared artifacts. MDS provides a unified URL to access an artifact across all the environments. No local copies and no string replacements are required. For example, to access CommonObjects.xsd you need to use the following URL across all the environments:&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;        oramds:/apps/common/xsd/CommonObjects.xsd&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;If you are accessing any file from bpel xmllib you need to change the URL to MDS URL. For example if you were accessing RuntimeFault.wsdl in 10g BPEL project using URL - http://localhost:80/orabpel/xmllib/RuntimeFault.wsdl you need to change it manually in your code to oramds:/soa/shared/bpel/RuntimeFault.wsdl. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt; &lt;/span&gt;Do the following to leverage MDS repository to efficiently manage your shared resources:&lt;/span&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 10pt; font-family: Tahoma;"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;Remove local copies of shared artifacts (XSD, WSDL, DVM, XSLT etc)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;Copy Common artifacts to local JDeveloper MDS repository. Local MDS repository location is &amp;lt;JDEVELOPER_HOME&amp;gt;/integration/seed&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;Change common artifacts URL to MDS URL in the files referring them. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 10pt; font-family: Tahoma;"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt; &lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma; mso-fareast-font-family:&amp;quot;Times New Roman&amp;quot;;mso-ansi-language:EN-US;mso-fareast-language: EN-US;mso-bidi-language:AR-SA"&gt;Deploy s&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;hared artifacts to MDS repository on SOA 11g Server.&lt;span style="mso-tab-count:1"&gt;  &lt;/span&gt;Click &lt;a href="http://biemond.blogspot.com/2009/11/soa-suite-11g-mds-deploy-and-removal.html"&gt;here&lt;/a&gt; to learn to deploy and remove artifacts on MDS repository using ant.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Group Upgraded Projects in a Single Composite Application &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;When you upgrade SOA 10g projects to SOA 11g you will have one SOA composite per upgraded project. In other words you will have as many SCA Composites as many project you have. An SCA composite is used to assemble SCA components in logical groupings. You can not leverage SCA benefits by having many fine grained composites. &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;Grouping SCA components into an SCA composite is heavily depends on the business case and requirements you have but you can use the following as reference points:&lt;/span&gt;  &lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;Evaluate the functionality provided by the SCA components and then group the related SCA components in a single SCA composite.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;Assemble a reusable component  alone in an SCA composite. Expose the component as a service using service bindings so other SCA components/composites can reuse it.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;Consider message size and complexity of the component implementation as well while assembling SCA Composite.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Create Partitions to Group Composites&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;In SOA 10g you have BPEL domains to logically organize BPEL processes and ESB System and Service Group for organizing ESB flows. In SOA 11g you need to create partitions to logically group SOA composites. Partitions are similar to the BPEL 10g domains. You can perform bulk life-cycle management operations on all SOA composites deployed on a partition. In SOA 11g you need to set the entire configuration (audit level, threading etc) at SOA infrastructure level so you can not perform any BPEL Engine specific configuration tasks on partitions. Click &lt;a href="http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10226/soacompapp_mang.htm#BABBDIID"&gt;here&lt;/a&gt; for more details on creating and managing partitions.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Deploy SOA Projects to Server and Test&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;Deploy SOA composites and test them to verify that the upgraded code is working as expected. &lt;/span&gt;&lt;/p&gt;&lt;b style="mso-bidi-font-weight:normal"&gt;&lt;span style="font-size:10.0pt;font-family: Tahoma"&gt;Tune SOA 11g Infrastructure&lt;/span&gt;&lt;/b&gt;  &lt;p class="MsoNormal" style="font-family: trebuchet ms; text-align: justify;"&gt;&lt;span style="font-size: 10pt;"&gt;After verifying that the migrated and modified code is working as expected you can start performance tuning SOA 11g infrastructure. Click &lt;a href="http://download.oracle.com/docs/cd/E21764_01/integration.1111/e10226/bp_config.htm#CEGFJJIF"&gt;here&lt;/a&gt; for details about BPEL Engine properties. I will write on SOA 11g Performance tuning best practices in my next posts. &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;  &lt;/span&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="font-family: trebuchet ms; text-align: justify;"&gt;&lt;span style="font-size: 10pt;"&gt;SOA 10g to 11g migration requires lot more to do than simply executing migration script/wizard. You need to carefully plan your upgrade strategy. You can use these best practices as a reference. In next series of blog posts I will write about best practices of upgrading other SOA 10g projects (ESB, BAM, Business Rules etc).&lt;/span&gt;&lt;/p&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin:0in;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p style="font-weight: bold; color: rgb(0, 0, 153);" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-size:10.0pt; font-family:Tahoma"&gt;References:&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;a href="http://www.oracle.com/technetwork/developer-tools/jdev/metadataservices-fmw-11gr1-130345.pdf"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;Oracle MDS White Paper&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;a href="http://download.oracle.com/otndocs/products/soa/e10224.pdf"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;SOA Suite 11g Developer Guide &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;a href="http://download.oracle.com/docs/cd/E12839_01/upgrade.1111/e10127/upgrade_soa_apps.htm#CHDCHCEB"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;SOA Suite 11g Migration Guide&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://download.oracle.com/docs/cd/E12839_01/integration.1111/e10224/sca_lifecycle.htm"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;SOA Suite 11g Composite Deployment Guide&lt;/span&gt;&lt;/a&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:10.0pt;font-family:Tahoma"&gt;&lt;span style="mso-spacerun:yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-2152414243450509212?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/2152414243450509212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=2152414243450509212' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/2152414243450509212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/2152414243450509212'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2011/05/soa-10g-to-11g-migration-best-practices.html' title='SOA 10g to 11g Migration Best Practices'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-7971251393534002209</id><published>2009-09-11T10:12:00.000-07:00</published><updated>2009-09-15T22:58:26.144-07:00</updated><title type='text'>How to Remove All Empty Nodes from XML Payload</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CDHARME%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Empty nodes in an XML payload increases payload size and may be the reason for XML parsing errors. You can add conditional logic to handle empty nodes in transformations but it’s not feasible for big XML payloads. Adding if/switch conditions for transforming big XML payloads is time consuming and error prone too. It requires a throughout testing to verify whether all the conditional logic is applied correctly or not.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify; font-family: trebuchet ms;"&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CDHARME%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p  style="text-align: justify;font-family:trebuchet ms;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;For big XML payloads you can use a separate XSLT transformation to handle all the empty nodes.&lt;span style=""&gt;  &lt;/span&gt;It will save your time to add conditional logic to handle empty nodes in every transformation. It incurs a little performance overhead but save lot of time and efforts to add/debug/test/re-test condition logic for empty nodes.&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: trebuchet ms;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: justify; font-family: trebuchet ms;" class="MsoNormal"&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CDHARME%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;/p&gt;&lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;See the script given underneath; it can handle all empty nodes in an XML payload:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;xsl:template&lt;/span&gt; &lt;span style="color: rgb(255, 102, 102);"&gt;match&lt;/span&gt;=&lt;span style="color: rgb(102, 51, 255);"&gt;"node()"&lt;/span&gt;&gt;&lt;br /&gt;	&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;xsl:if&lt;/span&gt; &lt;span style="color: rgb(255, 102, 102);"&gt;test&lt;/span&gt;=&lt;span style="color: rgb(102, 51, 255);"&gt;"count(descendant::text()[string-length(normalize-space(.))&gt;0]|@*)"&lt;/span&gt;&gt;&lt;br /&gt;		&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;xsl:copy&lt;/span&gt;&gt;&lt;br /&gt;			&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;xsl:apply-templates&lt;/span&gt; &lt;span style="color: rgb(255, 102, 102);"&gt;select&lt;/span&gt;=&lt;span style="color: rgb(102, 51, 255);"&gt;"@*|node()"&lt;/span&gt;/&gt;&lt;br /&gt;		&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;/xsl:copy&lt;/span&gt;&gt;&lt;br /&gt;	&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;/xsl:if&lt;/span&gt;&gt;&lt;br /&gt;&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;/xsl:template&lt;/span&gt;&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;xsl:template&lt;/span&gt; &lt;span style="color: rgb(255, 102, 102);"&gt;match&lt;/span&gt;=&lt;span style="color: rgb(102, 51, 255);"&gt;"@*"&lt;/span&gt;&gt;&lt;br /&gt;	&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;xsl:copy/&lt;/span&gt;&gt;&lt;br /&gt;&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;/xsl:template&lt;/span&gt;&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;xsl:template&lt;/span&gt; &lt;span style="color: rgb(255, 102, 102);"&gt;match&lt;/span&gt;=&lt;span style="color: rgb(102, 51, 255);"&gt;"text()"&lt;/span&gt;&gt;&lt;br /&gt;	&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;xsl:value-of select&lt;/span&gt;=&lt;span style="color: rgb(102, 51, 255);"&gt;"normalize-space(.)"&lt;/span&gt;/&gt;&lt;br /&gt;&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;/xsl:template&lt;/span&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CDHARME%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0in; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.25in 1.0in 1.25in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:12311; 	mso-list-type:hybrid; 	mso-list-template-ids:762583190 67698697 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;} @list l0:level1 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:.25in; 	mso-level-number-position:left; 	margin-left:.25in; 	text-indent:-.25in; 	mso-ansi-font-size:18.0pt; 	font-family:Wingdings; 	mso-ansi-font-weight:normal;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin:0in; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Steps to use this script in BPEL:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:18;"&gt;&lt;span style=""&gt;&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-size:7;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Drag and drop a Transform activity and select the XML payload, from which you want to remove empty nodes. Select same XML document for source and target.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:18;"&gt;&lt;span style=""&gt;&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-size:7;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Create an empty transformation file and go to the source view.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:18;"&gt;&lt;span style=""&gt;&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-size:7;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:18;"&gt;&lt;span style=""&gt;&lt;span style="font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; font-size-adjust: none; font-stretch: normal;font-size:7;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;/span&gt;Replace the XSLT fragment given below with the XSLT script given above:&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in; font-family: verdana;"&gt;&lt;!--[if !supportLists]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in; font-family: verdana;"&gt;&lt;!--[endif]--&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in; font-family: verdana;"&gt;&lt;!--[if !supportLists]--&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in; font-family: verdana;"&gt;&lt;!--[endif]--&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in; font-family: verdana;"&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-indent: 0.25in;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="text-indent: 0.25in; font-family: trebuchet ms;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;&lt;span style="color: rgb(0, 0, 153);"&gt;xsl:template&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;match&lt;/span&gt;=&lt;span style="color: rgb(102, 51, 255);"&gt;"/"&lt;/span&gt;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-indent: 0.25in;font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: trebuchet ms;"&gt;/xsl:template&lt;/span&gt;&lt;span style="font-family: trebuchet ms;"&gt;&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in; font-family: verdana;"&gt;&lt;!--[if !supportLists]--&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Now you all set, save and deploy your BPEL process, XSLT map and do a sanity test.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal" style="margin-left: 0.25in; text-indent: -0.25in; font-family: verdana;"&gt;&lt;!--[endif]--&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-7971251393534002209?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/7971251393534002209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=7971251393534002209' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/7971251393534002209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/7971251393534002209'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2009/09/how-to-remove-empty-nodes-from-xml.html' title='How to Remove All Empty Nodes from XML Payload'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-747885384616481716</id><published>2009-05-07T19:55:00.000-07:00</published><updated>2009-05-07T21:52:07.697-07:00</updated><title type='text'>How to Use SQL Query having IN Clause With DB Adapter</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;When you &lt;/span&gt;&lt;span style="font-size:85%;"&gt;execute a syntactically correct SQL query having IN clause from SQL prompt, it works as expected.&lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style="font-family:trebuchet ms;"&gt;Let’s assume you have a table employee with the structure given below and the table is populated with few records.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;Name &lt;span style=""&gt;                           &lt;/span&gt;                        Null&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;                             &lt;/span&gt;                    Type&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;------------------------------------------------------------------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;EMP_ID&lt;span style=""&gt;             &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;                NOT NULL &lt;span style=""&gt;                    &lt;/span&gt;     VARCHAR2(10)&lt;span style=""&gt;     &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;EMP_DEPT&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style=""&gt;                       &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;                                    VARCHAR2(30)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;EMP_SALARY&lt;span style=""&gt;                     &lt;/span&gt;&lt;span style=""&gt;                    &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;                              NUMBER(8,2)&lt;span style=""&gt;                 &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;EMP_DESIGNATION&lt;span style=""&gt;                     &lt;/span&gt;&lt;span style=""&gt;                       &lt;/span&gt;                  VARCHAR2(30)&lt;span style=""&gt;        &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;EMP_FNAME&lt;span style=""&gt;           &lt;/span&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;                        &lt;/span&gt;                               VARCHAR2(30)&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;EMP_FNAME&lt;span style=""&gt;                          &lt;/span&gt;&lt;span style=""&gt;                            &lt;/span&gt;                              VARCHAR2(30)&lt;span style=""&gt;     &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;EMP_ADDREDSS&lt;span style=""&gt;                       &lt;/span&gt;&lt;span style=""&gt;                          &lt;/span&gt;                        VARCHAR2(60)&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;You type and execute the query given below at SQL prompt and it returns the data expected.&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-family:trebuchet ms;"&gt; &lt;/span&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style="font-family: courier new;font-family:courier new;" &gt;SELECT EMP_ID, EMP_DEPT, EMP_SALARY, EMP_DESIGNATION, EMP_FNAME, EMP_FNAME&lt;/span&gt;&lt;o:p style="font-family: courier new;"&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-family:courier new;" &gt;FROM EMPLOYEE&lt;/span&gt;&lt;o:p style="font-family: courier new;"&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-family:courier new;" &gt;WHERE EMP_DEPT &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-family:courier new;" &gt;IN ('SALES','FINANCE','TECHSERVICES','INFRACTURE')&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style="font-family: trebuchet ms;font-family:trebuchet ms;" &gt;If you use the above query with Oracle DB adapter in Oracle BPEL/ESB it works as expected. &lt;/span&gt;&lt;o:p style="font-family: trebuchet ms;"&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style="font-family: trebuchet ms;font-family:trebuchet ms;" &gt;Problem starts when you decide to pass the list of values for in query dynamically. You need to change the above query as the one given below:&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=";font-family:courier new;" &gt;SELECT EMP_ID, EMP_DEPT, EMP_SALARY, EMP_DESIGNATION, EMP_FNAME, EMP_FNAME&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;FROM EMPLOYEE WHERE EMP_DEPT&lt;br /&gt;IN (?)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="line-height: 115%; font-family: trebuchet ms;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;When you populate the input payload with value list for IN clause and execute the above query with DB adapter, DB adapter wont return anything. DB adapter wraps the parameter value by ' (apostrophe), so even if you pass a comma separated value list, the list would be treated as a single value by the DB adapter and the adapter returns nothing.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:10;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;You need to write a SQL query like the one given below if you want to use IN clause in SQL query and pass the value list dynamically:&lt;/span&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;                      &lt;p class="MsoNormal"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;span style=";font-family:courier new;" &gt;&lt;span style="color: rgb(51, 255, 51);"&gt;SELECT EMP_ID,EMP_DEPT, EMP_SALARY, EMP_DESIGNATION, EMP_FNAME, EMP_LNAME&lt;/span&gt;&lt;o:p style="color: rgb(51, 255, 51);"&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;FROM EMPLOYEE&lt;/span&gt;&lt;o:p style="color: rgb(51, 255, 51);"&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;WHERE EMP_DEPT&lt;/span&gt; IN (WITH VALUE_LIST AS&lt;/span&gt;&lt;o:p style="color: rgb(255, 0, 0);"&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  (SELECT ? val&lt;/span&gt;&lt;o:p style="color: rgb(255, 0, 0);"&gt;&lt;/o:p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; FROM dual)&lt;/span&gt;&lt;o:p style="color: rgb(255, 0, 0);"&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;   SELECT SUBSTR(val, (decode(LEVEL, 1, 0, instr(val, ':', 1, LEVEL -1)) + 1),               (decode(instr(val, ':', 1, LEVEL) -1,    -1, LENGTH(val),                     instr(val,    ':',    1,    LEVEL) -1)) -(decode(LEVEL, 1, 0,                   instr(val,    ':',    1,    LEVEL -1)) + 1) + 1) a&lt;/span&gt;&lt;o:p style="color: rgb(255, 0, 0);"&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    FROM VALUE_LIST CONNECT BY LEVEL &lt;=&lt;/span&gt;&lt;o:p style="color: rgb(255, 0, 0);"&gt;&lt;/o:p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        (SELECT(LENGTH(val) -LENGTH(REPLACE(val,    ':',    NULL)))&lt;/span&gt;&lt;o:p style="color: rgb(255, 0, 0);"&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;         FROM VALUE_LIST)&lt;/span&gt;&lt;o:p style="color: rgb(255, 0, 0);"&gt;&lt;/o:p&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; + 1)&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="line-height: 115%;font-size:10;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;See the portion of this query highlighted red; you don't need to change it. You need to customize the portion marked green as per your requirement.   &lt;br /&gt;&lt;br /&gt;While configuring DB adapter you need to the following steps:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;Select "Execute Custom SQL" as Operation Type and click on Next.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Customize the above SQL and paste it in Custom SQL text box and click on Finish.&lt;/span&gt;   &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;In this SQL, value list for IN clause should be delimited with a &lt;span style="font-weight: bold;"&gt;:&lt;/span&gt; symbol, If you want to use any other symbol as a delimiter you need to replace &lt;span style="font-weight: bold;"&gt;:&lt;/span&gt; with the symbol you want to use. &lt;br /&gt;&lt;br /&gt;Before invoking the DB adapter, you need to create IN value list dynamically. Use XSL transformation to generate the dynamic value list and pass it to the DB adapter.&lt;br /&gt;&lt;br /&gt;While generating the value list you don’t need to wrap character data with ' (apostrophe).  To query all the employees from SALES, TECHSERVICES, INFRASTRUCTURE, FINANCE departments you need to create an IN clause value list as SALES:TECHSERVICES:INFRASTRUCTURE:FINANCE. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Limitations of DB adapter with this query:  &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;If you use SELECT * rather than giving the field list with SELECT, DB adapter configuration adapter won't be able to generate a correct XSD for DB adapter request.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;If you create a very big value list for IN query (greater than 4000 characters) than you need to break value list and invoke this query multiple times, otherwise you will get &lt;span style="font-weight: bold;"&gt;ORA-01704: string literal too long&lt;/span&gt; error. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Alternative Approach:  &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You can write a PL/SQL stored procedure to implement the same functionality, only issue with PL/SQL is that you need to move the PL/SQL code whenever you move from one system to other i.e. development to system test to UAT to Production environments.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="line-height: 115%;font-family:&amp;quot;;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-747885384616481716?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/747885384616481716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=747885384616481716' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/747885384616481716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/747885384616481716'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2009/05/how-to-use-sql-query-having-in-clause.html' title='How to Use SQL Query having IN Clause With DB Adapter'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-1490643175842915558</id><published>2008-09-01T19:03:00.000-07:00</published><updated>2010-02-22T19:59:57.789-08:00</updated><title type='text'>How to pass Security Credentials from BPEL to ESB to a Web Service</title><content type='html'>&lt;div style="text-align: justify; font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;I have seen people facing problems to pass security credentials from an ESB routing service to a WS-Security compliant Web Service. Passing security credentials from ESB routing service is possible but it's tricky. You need to play with the XSLT transformation to add WS-Security tokens in SOAP header of a Web Service request.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;&lt;br /&gt;Oracle ESB is having four extension function for SOAP header manipulation: &lt;br /&gt;&lt;br /&gt;1. String getRequestHeader(String xpathExpression,String namespaceDecl)&lt;br /&gt;2. void setOutboundHeader(String xpathExpression,String value, String namespaceDecl)&lt;br /&gt;3. String getInboundResponseHeader(String xpathExpression,String namespaceDecl)&lt;br /&gt;4. void setResponseHeader(String xpathExpression,String value, String namespaceDecl)&lt;br /&gt;&lt;br /&gt;here,&lt;br /&gt;xpathExpression - XPath expression to get/set&lt;br /&gt;value - value to be set for the xpathExpression&lt;br /&gt;namespaceDecl - namespace declarations in the form ‘prefix=namespace;’&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify; font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;You need to add the four expressions given below in the XSLT map before invoking a WS-Security compliant Web Service. First two expressions extract user name and password from the incoming SOAP header and the last two expressions add security credentials in the outbound SOAP header.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;&lt;xsl:variable style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;xsl:variable&lt;/span&gt; name&lt;/xsl:variable&gt;&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153); font-family: trebuchet ms;"&gt;userName&lt;/span&gt;"&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-family:trebuchet ms;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;select&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;ehdr:getRequestHeader('/soap:Header/wsse:Security/wsse:UsernameToken/wsse:Username','wsse=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd; soap=http://schemas.xmlsoap.org/soap/envelope/;')&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-family:trebuchet ms;font-size:85%;"  &gt;  &lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-family:trebuchet ms;font-size:85%;"  &gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;xsl:variable&gt;&lt;/xsl:variable&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;xsl:variable &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-family:trebuchet ms;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;password&lt;/span&gt;"&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-family:trebuchet ms;font-size:85%;"  &gt;&lt;span style="color: rgb(255, 0, 0);"&gt;select&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;ehdr:getRequestHeader('/soap:Header/wsse:Security/wsse:UsernameToken/wsse:Password','wsse=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd; soap=http://schemas.xmlsoap.org/soap/envelope/;')&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;xsl:variable &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-family:trebuchet ms;font-size:85%;"  &gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;xsl:variable&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;setUsername&lt;/span&gt;"&lt;/xsl:variable&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;select&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;ehdr:setOutboundHeader('/soap:Header/wsse:Security/wsse:UsernameToken/wsse:Username',$userName,'wsse=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd;')&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;xsl:variable&gt;&lt;/xsl:variable&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;xsl:variable &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;font-family:trebuchet ms;font-size:85%;"  &gt;&lt;span style="font-family: trebuchet ms;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;setPassword&lt;/span&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;select&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;ehdr:setOutboundHeader('/soap:Header/wsse:Security/wsse:UsernameToken/wsse:Password',$password,'wsse=http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd;')&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify; font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;See my previous posts &lt;a href="http://soa-howto.blogspot.com/2008/09/how-to-set-security-credentials.html"&gt;How to set security credentials dynamically in Oracle BPEL&lt;/a&gt; and&lt;a href="http://soa-howto.blogspot.com/2008/04/invoking-ws-security-compliant-web.html"&gt; Invoking WS-Security compliant Web Services from Oracle BPEL&lt;/a&gt; to learn how to send security credentials from a BPEL process. You can download sample BPEL and ESB projects from &lt;a href="http://sites.google.com/site/soahowto/Home/BPEL2AxisViaESB.zip?attredirects=0"&gt;here&lt;/a&gt;. You can use these projects for your reference.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-1490643175842915558?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/1490643175842915558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=1490643175842915558' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/1490643175842915558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/1490643175842915558'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/09/how-to-pass-security-credentials-from.html' title='How to pass Security Credentials from BPEL to ESB to a Web Service'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-8220227610313473668</id><published>2008-09-01T10:22:00.000-07:00</published><updated>2008-09-01T16:01:04.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='WS-Security'/><title type='text'>How to set security credentials dynamically in Oracle BPEL</title><content type='html'>&lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Few months ago I have written a post on &lt;a href="http://soa-howto.blogspot.com/2008/04/invoking-ws-security-compliant-web.html"&gt;invoking WS-Security compliant services,&lt;/a&gt; In Oracle BPEL you can either propagate the security credentials coming from the caller process or you can hard-code the tokens in partner link properties.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;If you want to invoke a WS-Security compliant web service and want to pass user supplied security tokens, Oracle BPEL does not let you set the security credential dynamically. You need to manually create a UserNameToken and then you need to pass the token as a SOAP header.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Follow the steps given below to change and pass security credentials dynamically:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;Import &lt;a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd&lt;/span&gt;&lt;/a&gt; as it is having definitions for WS-Security tokens.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Create 3 variable as given below: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;variable&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;securityContext&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;element&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;ns2:Security&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;   &amp;lt;variable&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;userNameToken&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;element&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;ns2:UsernameToken&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;variable&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;pswd&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;element&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;ns2:Password&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Assign incoming security credentials to these variables:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre  style="font-family:trebuchet ms;"&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;assign&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;AssignSecurityCredentials&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;       &amp;lt;copy&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;         &amp;lt;from&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;variable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;inputVariable&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;part&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;payload&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;           query&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;/client:SampleRequest/client:pswd&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;       &amp;lt;to&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;variable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;pswd&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;query&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;/wsse:Password&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;     &lt;span style="color: rgb(0, 0, 102);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; &amp;lt;/copy&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;       &amp;lt;copy&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;  &amp;lt;from &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;variable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;inputVariable&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;part&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;payload&lt;/span&gt;"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;              &lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;query&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;/client:SampleRequest/client:user&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;  &lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;  &amp;lt;to &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;variable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;userNameToken&lt;/span&gt;"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;              query&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;/wsse:UsernameToken/wsse:Username&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;  &amp;lt;/copy&gt;     &lt;/span&gt;&lt;o:p style="color: rgb(0, 0, 102);"&gt;&lt;/o:p&gt;  &lt;/span&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;       &amp;lt;bpelx:insertAfter&gt;&lt;/span&gt;  &lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;  &amp;lt;bpelx:from&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;variable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;pswd&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;query&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;/wsse:Password&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;  &amp;lt;bpelx:to&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;variable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;userNameToken&lt;/span&gt;"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;            &lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;query&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;/wsse:UsernameToken/wsse:Username&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;  &lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; &amp;lt;/bpelx:insertAfter&gt;&lt;/span&gt;&lt;o:p style="color: rgb(0, 0, 102);"&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;    &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;  &amp;lt;bpelx:append&lt;/span&gt;&gt;&lt;o:p&gt;&lt;/o:p&gt;  &lt;/span&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;bpelx:from&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;variable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;userNameToken&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;query&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;/wsse:UsernameToken&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&amp;lt;bpelx:to&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;variable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;securityContext&lt;/span&gt;"&lt;span style="color: rgb(255, 0, 0);"&gt; query&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;/wsse:Security&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;  &amp;lt;/bpelx:append&gt;&lt;/span&gt;&lt;o:p style="color: rgb(0, 0, 102);"&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;  &amp;lt;/assign&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Pass the security credentials to the calling service like the expression given below:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre  style="font-family:trebuchet ms;"&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;  &amp;lt;invoke&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;name&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;InvokeAxisService&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;partnerLink&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;PartnerLinkAxisService&lt;/span&gt;"&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;     &lt;span style="color: rgb(255, 0, 0);"&gt;portType&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;ns1:sample03PortType&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;operation&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;echo&lt;/span&gt;"&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; inputVariable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;Invoke_1_echo_InputVariable&lt;/span&gt;"&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;     outputVariable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;Invoke_1_echo_OutputVariable&lt;/span&gt;"&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;     bpelx:inputHeaderVariable&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 153);"&gt;securityContext&lt;/span&gt;"&lt;span style="color: rgb(0, 0, 102);"&gt;/&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/pre&gt;&lt;ul  style="font-family:trebuchet ms;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;Complete you BPEL process by adding required functionalities then deploy and test it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-8220227610313473668?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/8220227610313473668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=8220227610313473668' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/8220227610313473668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/8220227610313473668'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/09/how-to-set-security-credentials.html' title='How to set security credentials dynamically in Oracle BPEL'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-1480787099351584597</id><published>2008-07-19T09:16:00.000-07:00</published><updated>2008-07-19T10:51:34.379-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Embedding'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='bpelc'/><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><category scheme='http://www.blogger.com/atom/ns#' term='deployment script'/><title type='text'>How to deploy Java Classes with BPEL Process</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;While implementing a business process using BPEL, sometimes it is required to use Java to implement a functionality required by a business process. You can embed your Java code in BPEL process using Java embedding activity provided by Oracle BPEL. If your Java code is of few lines you can paste it inside the Java embedding editor and you can manage it but if you are planning to implement a functionality which requires lines of code, it is better to create java classes inside your BPEL Process Project. You can leverage JDeveloper’s Java editor to write and manage Java code.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;You can import Java classes in the BPEL process using &amp;lt;bpelx:exec import....&gt;. If you deploy the BPEL process from JDeveloper it compiles the Java code and bundle required classes and libraries inside the BPEL suitcase. You can use JDeveloper to deploy your processes on the development server. To deploy a business processes on Test/Performance/Production servers its better to use deployment scripts, because its not wise to modify endpoint URL and other connectivity information manually for each server in your BPEL process project and deploy it. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Using deployment scripts you can &lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Customize WSDL/XSL/XSD end-point locations.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Customize JNDI address of Data source/JMS Queue or Topics.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Checkout latest code from SVN/CVS/VSS repositories.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Deploy BPEL/ESB/Java on the development/test/performance/production environments.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;JDeveloper generates an ant build script for each BPEL process project, it uses ant script to build and deploy business process. If your BPEL process is using java classes and you would deploy it from JDeveloper the process will be deployed successfully. All the Java classes and required libraries will be bundled in BPEL-INF folder of the BPEL suitcase. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;If you try to execute the same script from the command prompt it will throw an exception like the one given below:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;ORABPEL-00017&lt;br /&gt;Java compilation failed.&lt;br /&gt;Failed to compile file(s) "HelloWorldProcess.bpel".&lt;br /&gt;Exception reported is: HelloWorldProcess.bpel:3: Class build.test.HelloWorld not found in import.import build.test.HelloWorld; &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;If you see the deployment script it does not have an ant task to compile java code. It works in JDeveloper because JDevloper compile the java classes first and then executes this script so the bpelc task is able to find the required Java classes. To make this script work from command prompt you need to do the following: &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;• Add a task to compile the java classes. &lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;target name="compileJava" description="Compile Java files"&gt;&lt;br /&gt; &amp;lt;echo&gt;&lt;br /&gt;--------------------------------------------------------------&lt;br /&gt;Compiling java files&lt;br /&gt;--------------------------------------------------------------&lt;br /&gt;&amp;lt;/echo&gt;&lt;br /&gt;  &amp;lt;javac destdir="${process.dir}/output" encoding="UTF-8" source="1.5" target="1.5"&gt;&lt;br /&gt;    &amp;lt;src path="${src}"/&gt;&lt;br /&gt;  &amp;lt;/javac&gt;&lt;br /&gt;  &amp;lt;mkdir dir="${process.dir}/lib"/&gt;&lt;br /&gt;  &amp;lt;jar destfile="${process.dir}/lib/${bpel.classes.jar}"&gt;&lt;br /&gt;    &amp;lt;fileset dir="${process.dir}/output"/&gt;&lt;br /&gt;  &amp;lt;/jar&gt;&lt;br /&gt;&amp;lt;/target&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;• Modify target "compile" and add dependency for target "compileJava".&lt;/span&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;target name="compile" depends="compileJava"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;• Modify the bpelc task to add classpath for the compiled java classes so bpelc will be able to find the required classes. &lt;/span&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;bpelc input="${process.dir}/bpel/bpel.xml" out="${process.dir}/output"&lt;br /&gt;rev="${rev}" home="${bpel.home}" classpath="${env.classpath};${process.dir}\output"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;• As some libraries are business process specific, you want to keep them inside the BPEL suitcase rather then adding them to shared libraries or copying to &amp;lt;ORASOA_HOME&gt;/j2ee/home/applib folder. If you copy the libraries to applib folder or add to shared libraries by modifying server.xml you need to bounce the SOA server. To copy the BPEL process specific dependency jars and the classes in the BPEL-INF folder of BPEL suitecase, you need to add &lt;strong&gt;&amp;lt;lib&gt;&lt;/strong&gt; tag in the bpelc task:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;bpelc input="${process.dir}/bpel/bpel.xml" out="${process.dir}/output"&lt;br /&gt;   rev="${rev}" home="${bpel.home}" classpath="${env.classpath};${process.dir}\output"&gt;&lt;br /&gt;  &amp;lt;lib dir="${process.dir}/lib" includes="bpelclasses.jar"/&gt;&lt;br /&gt;  &amp;lt;lib dir="${bpel.lib}" includes="**/*.jar"/&gt;&lt;br /&gt;&amp;lt;/bpelc&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;Save the build script and execute it from command prompt, don’t forget to set username/password for SOA suite and all other environment related properties in build.properties.&lt;/span&gt; &lt;/p&gt;&lt;pre&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-1480787099351584597?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/1480787099351584597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=1480787099351584597' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/1480787099351584597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/1480787099351584597'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/07/how-to-deploy-java-classes-with-bpel.html' title='How to deploy Java Classes with BPEL Process'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-1235480213700769680</id><published>2008-06-01T07:38:00.000-07:00</published><updated>2008-06-01T08:13:27.762-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='Errors'/><title type='text'>ORABPEL-09500</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Sometime it is required to do file input/output operations from a BPEL process. You can use file adapter to read/write files, but it’s not a wise choice always. Oracle BPEL having three XPath extension functions ora:readFile, ora:readBinaryFromFile and ora:writeBinaryFIle for file input/output operations. You can read/write files using these extension functions. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;    &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Syntax of these functions is simple and JDeveloper expression builder helps you to add the functions in your BPEL process. You can read files packaged inside BPEL process suite case or from the file system. &lt;span style=""&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;While accessing files from the file system using absolute path, you might get the following error:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;ORABPEL-09500&lt;/b&gt; XPath expression failed to execute. Error while processing xpath expression, the expression is "ora:readFile(bpws:getVariableData('inputVariable','payload','/client:TestProcessRequest/client:input'))", the reason is FOTY0001: type error. Please verify the xpath query. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;The error message is wrong and deceptive. Although the error message is showing that the XPath expression is incorrect but it’s not the reason behind this fault. Reason behind this error is that the BPEL process manager is unable to access file(s) from the given path and it is showing wrong error message. It may be a bug in Oracle BPEL Process Manager. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;To get rid of this issue you need to check the path of the file you want to read or write. Make sure that you are giving the correct path and the file is available at the given location (if you are reading the file). After checking and correcting the file path you need to prefix the file path with “&lt;b style=""&gt;file:&lt;/b&gt;”. Next step is to save, deploy and test the BPEL process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-1235480213700769680?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/1235480213700769680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=1235480213700769680' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/1235480213700769680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/1235480213700769680'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/06/orabpel-09500.html' title='ORABPEL-09500'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-2478901969727715134</id><published>2008-05-11T11:33:00.000-07:00</published><updated>2008-05-12T18:17:16.262-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='SOAP Header'/><title type='text'>How to Manipulate SOAP Headers in BPEL</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;Now Web Services are the De facto standard to implement SOA for any organization. Web Services are self contained, self descriptive and open standard based.  Everyone who is implementing web services needs to follow the same standards. &lt;/span&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;W3C, OASIS, and WS-I standardizes &lt;/span&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;these open standards. These standard can be applied to a new service as well as an existing service and it is the beauty of these standards. WS-* standards are based on the SOAP headers so you don't need to touch the web service implementation. To support these standards the BPEL specification implementation should have inbuilt capabilities to manipulate SOAP headers.&lt;/span&gt;&lt;/div&gt;  &lt;p  style="margin-bottom: 0in;font-family:trebuchet ms;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;If we talk about Oracle BPEL Process Manager (Oracle's implementation of BPEL specification) it is having SOAP header manipulation capabilities through BPEL extensions. You can send or receive SOAP headers from a BPEL process using bpelx:inputHeaderVariable, bpelx:headerVariable extensions.&lt;/span&gt;&lt;/p&gt;  &lt;p  style="margin-bottom: 0in;font-family:trebuchet ms;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;To send SOAP headers from the BPEL process you need to use bpelx:inputHeaderVariable extension in the &lt;b&gt;invoke&lt;/b&gt; activity, just give a comma separated list of all the variables you want to send in the SOAP header. To receive SOAP headers you need to use bpelx:headerVariable extension in the &lt;b&gt;receive&lt;/b&gt; activity. Once you add these extensions in the receive or invoke activity your part is over and the BPEL Process Manager will add your variables to SOAP header if you are invoking a web service or extract SOAP headers if you are using &lt;b&gt;receive&lt;/b&gt; activity and assign SOAP headers to the specified variables.  &lt;/span&gt;&lt;/p&gt;  &lt;p  style="margin-bottom: 0in;font-family:trebuchet ms;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;Sending or receiving SOAP headers from Oracle BPEL is very simple, you need to create messages inside WSDL, variables in BPEL process and then need to use bpelx:inputHeaderVariable and bpelx:headerVariable extensions. See the following to understand how to add &lt;span style="font-weight: bold;"&gt;bpelx:inputHeaderVariable&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;bpelx:headerVariable&lt;/span&gt; into the invoke, receive, &lt;/span&gt;&lt;span style="font-size:85%;"&gt;onMessage and reply &lt;/span&gt;&lt;span style="font-size:85%;"&gt;activities respectively:&lt;/span&gt;&lt;/p&gt;   &lt;p  style="margin-bottom: 0in;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;receive&lt;/span&gt; name="receiveInput" partnerLink="client" portType="client:TestProcess"&lt;br /&gt;operation="process" variable="inputVariable" createInstance="yes" &lt;span style="font-weight: bold;"&gt;bpelx:headerVariable&lt;/span&gt;="yourVariable1, yourVariable2"/&gt;&lt;/span&gt;&lt;/p&gt;     &lt;p  style="margin-bottom: 0in;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;invoke&lt;/span&gt; name="Invoke_1" partnerLink="NestedSchemaTest"&lt;br /&gt;portType="ns1:NestedSchemaTest" operation="process"&lt;br /&gt;inputVariable="Invoke_1_process_InputVariable" outputVariable="Invoke_1_process_OutputVariable" &lt;span style="font-weight: bold;"&gt;bpelx:inputHeaderVariable&lt;/span&gt;="yourVariable1, yourVariable2 .." &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;bpelx:outputHeaderVariable&lt;/span&gt;="yourVariable1, yourVariable2 ..."&lt;/span&gt;&lt;span style="font-size:85%;"&gt;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin-bottom: 0in;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span&gt;If you are invoking an asynchronous process then don't use &lt;span style="font-weight: bold;"&gt;bpelx:outputHeaderVariable&lt;/span&gt; extension.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin-bottom: 0in;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;onMessage bpelx:headerVariable&lt;/span&gt;="variable_1 variable_2 ..." /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;reply&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;bpelx:headerVariable&lt;/span&gt;="&lt;/span&gt;&lt;span style="font-size:85%;"&gt;variable_1 variable_2...&lt;/span&gt;&lt;span style="font-size:85%;"&gt;" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="margin-bottom: 0in; text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Deploy your BPEL process and use TCP protocol monitor or obtunnel to see the SOAP headers in the SOAP envelop. Don't forget to set the  "optSoapShortcut" property to "false" otherwise you wont be able to see the SOAP headers in obtunnel or TCP monitor. From oracle 10.1.3.1 this property is not available on the BPEL control so you need to add it  in the &lt;span style="font-weight: bold;"&gt;&amp;lt;BPEL Home&gt;/domains/&amp;lt;domain&gt;/config/domain.xml &lt;/span&gt;as given below:&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin-bottom: 0in; text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;pre&gt;&amp;lt;property id="optSoapShortcut"&gt;&lt;br /&gt;   &amp;lt;name&gt;Optimize SOAP invocations.&amp;lt;/name&gt;&lt;br /&gt;   &amp;lt;value&gt;false&amp;lt;/value&gt;&lt;br /&gt;   &amp;lt;comment&gt;&amp;lt;/comment&gt;&lt;br /&gt;&amp;lt;/property&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="margin-bottom: 0in; text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span id="__firefox-findbar-search-id" style="padding: 0pt; background-color: yellow; display: inline;font-size:inherit;color:black;"  &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-2478901969727715134?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/2478901969727715134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=2478901969727715134' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/2478901969727715134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/2478901969727715134'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/05/how-to-manipulate-soap-headers-in-bpel.html' title='How to Manipulate SOAP Headers in BPEL'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-1059532979866268352</id><published>2008-05-09T21:38:00.000-07:00</published><updated>2008-05-10T08:05:54.770-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Embedding'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='Classpath'/><title type='text'>How to Make Libraries Available to BPEL Process</title><content type='html'>&lt;p style="margin-bottom: 0in; font-family: trebuchet ms;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;I have seen many integration developers struggling with the classpath settings in Oracle SOA Suite. If you don't know the right place to store libraries or the configuration files where you can add required  libraries, you can easily waste hours or even days to make libraries available to your BPEL process.&lt;br /&gt;&lt;br /&gt;While developing Oracle BPEL Process you need to add the required libraries in Jdeveloper. To add a library in Jdeveloper right click on the BPEL Process project and select “Project Properties” from the context menu. Click on Libraries in the Project Properties tree. From Libraries page you can add a predefined library or you can add jars or folders in the classpath.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; font-family: trebuchet ms;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;If you want to use standalone ant scripts to compile and build your BPEL process flow you need to set classpath in ant build scripts. You need to add libraries in the &lt;b&gt;bpelc&lt;/b&gt; task. Add  your libraries as given below, add a pathelement for each library:&lt;/span&gt;&lt;/p&gt; &lt;pre style="text-align: justify; font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;classpath&gt;&lt;br /&gt; &amp;lt;pathelement location="Library you want to add into classpath"/&gt;&lt;br /&gt;&amp;lt;/classpath&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p style="margin-bottom: 0in; font-family: trebuchet ms;" align="justify"&gt;  &lt;span style="font-size:85%;"&gt;If you want to use common jars in multiple projects, add the files into classpath of obsetenv.bat or obsetenv.sh based on the platform you are using to run ant build scripts. Edit the obsetenv file and add the libraries in the MY_CLASSPATH variable. e.g.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; font-family: trebuchet ms;" align="left"&gt;&lt;span style="font-size:85%;"&gt;set MY_CLASSPATH=%Existing Libraries%;&amp;lt;new libraries&gt;&lt;br /&gt;&lt;br /&gt;If you are using Java embedding activity in your BPEL process and this activity is referring classes and jars those are not part of the BPEL suite case ,  you need to add those libraries in the classpath of  BPEL Process compiler. BPEL Process Manager generates Java files and compile them at the deployment time so it is required to set all the referenced libraries in BPEL compilers classpath.  &lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;You can add the referenced libraries in BPEL Process compiler's classpath by modifying the domain.xml or from the BPEL Process Manager's Console. I am mentioning both procedures, you can use any of them.&lt;/span&gt;&lt;/p&gt; &lt;ul style="font-family: trebuchet ms;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Edit Domain Configuration file-&lt;/b&gt;&lt;/span&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Edit &amp;lt;Oracle SOA Home&gt;/bpel/domains/&amp;lt;Domain   Name&gt;/config/domain.xml    &lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul style="font-family: trebuchet ms;"&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Add referenced libraries the file as given below:&lt;br /&gt;       &amp;lt;property id="bpelcClasspath"&gt;&lt;br /&gt;          &amp;lt;name&gt;BPEL process   compiler classpath&amp;lt;/name&gt;&lt;br /&gt;          &amp;lt;value&gt;list of jars separated by ; or :   based on the platform you are using&amp;lt;/value&gt;&lt;br /&gt;       &amp;lt;/property&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Restart Oracle BPEL Server.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;ul style="font-family: trebuchet ms;"&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;Use BPEL Process Manager Console&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Open BPEL Process Manager Console and click on “Manage   BPEL Domain”. Go to  Configuration tab.&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Enter all the referenced libraries(including path of the   libraries); in the value field of &lt;b&gt;bpelcClasspath&lt;/b&gt; property..&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Click on Apply button.&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;   &lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;Restart Oracle BPEL Process Manager..&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;After deployment you will definitely want to test   the BPEL process. You need to add the required libraries into Oracle Application Server's classpath, so the referenced libraries   would be available for your BPEL process at runtime. Follow the   steps given below to add libraries into Oracle Application Server's   classpath:    &lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;Open &amp;lt;Oracle  Home&gt;/j2ee/home/config/application.xml and find a shared library  named &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span lang="en-US"&gt;&lt;b&gt;oracle.bpel.common&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;Add &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span lang="en-US"&gt;&amp;lt;code-source  path="Your library path"/&gt; for each required jar file.  You can create a separate library and import it inside the  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span lang="en-US"&gt;&lt;b&gt;oracle.bpel.common&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span lang="en-US"&gt;  shared library.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;span lang="en-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-1059532979866268352?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/1059532979866268352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=1059532979866268352' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/1059532979866268352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/1059532979866268352'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/05/how-to-make-libraries-available-to-bpel.html' title='How to Make Libraries Available to BPEL Process'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-7600547198748669</id><published>2008-05-07T18:58:00.000-07:00</published><updated>2008-05-08T17:41:52.880-07:00</updated><title type='text'>Insert New Line Character in BPEL Payload</title><content type='html'>&lt;p  style="margin-bottom: 0in;font-family:trebuchet ms;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;Today my colleague has an interesting requirement. He need to interact with a legacy application which accepts input in CSV format. In the input first row should contain operation name, second row should contain all the column names and the next row is the data row. He was using Oracle BPEL to integrate  legacy application with new application infrastructure. He was having data in a canonical business object and want to generate the required input CSV format.  &lt;/span&gt;&lt;/p&gt;  &lt;p  style="margin-bottom: 0in;font-family:trebuchet ms;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;The major challenge for him was to transform the business object into the input CSV which is having three rows. As he was a Java developer in the past, he tried using &lt;span style=""&gt;\&lt;/span&gt;&lt;b&gt;n&lt;/b&gt; to insert new line character with no luck. Then he tried &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;b&gt;&amp;amp;#13;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt; &lt;/b&gt; which is the correct one to insert a new line character in an XML payload but when he executed the BPEL flow, &lt;b&gt;&amp;amp;amp;#13; &lt;/b&gt;&lt;span style=""&gt;was inserted rather than the line break. &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in; font-family: trebuchet ms;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;The trick to insert the new line character in XML payload from Oracle BPEL is to append&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-weight: bold;"&gt;&amp;amp;#13;&lt;/span&gt; in the from expression of assign activity, then check your .bpel file it would have &lt;/span&gt;&lt;b&gt;&amp;amp;amp;#13;&lt;/b&gt;&lt;span style=""&gt; rather than &lt;span style="font-weight: bold;"&gt;&amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;#13; &lt;/b&gt;&lt;span style=""&gt; because Jdeveloper replaces &lt;span style="font-weight: bold;"&gt;&amp;amp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;span style=""&gt; with its equivalent escape character &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&amp;amp;amp;&lt;/span&gt;&lt;span style=""&gt;.&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;span style=""&gt;You need to replace &amp;amp;&lt;/span&gt;&lt;b&gt;amp;&lt;/b&gt;&lt;span style=""&gt; with &lt;/span&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;span style=""&gt; so it would become the correct new line character&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&amp;amp;#13;&lt;/span&gt;&lt;span style=""&gt;. &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-7600547198748669?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/7600547198748669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=7600547198748669' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/7600547198748669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/7600547198748669'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/05/insert-new-line-character-in-bpel.html' title='Insert New Line Character in BPEL Payload'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-168427363180989470</id><published>2008-04-30T21:06:00.000-07:00</published><updated>2008-04-30T21:54:48.964-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='ORABPEL-10902'/><title type='text'>How to change Input/Output Variable for a BPEL Process</title><content type='html'>&lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;When you create a BPEL process project it asks for input and output XSD elements, you can choose your input and output elements over there.  Once you are finish with the project creation you can start designing BPEL flow using the IDE. It is the ideal scenario where you have your input and output XML schema's defined before starting development of BPEL process and these schema's won't require any modifications in the future.  But in the real life scenarios it rarely happens. Any change in requirements or policies impacts input and output XML schema's. Sometimes you need to change input and output schema elements for a BPEL process. &lt;/span&gt; &lt;/p&gt;  &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;Changing input or output XML schema element types is really a challenge in JDeveloper. You need to check for the impact of these changes. JDeveloper doesn't give any feature to update all the artifacts impacted by any changes in the input/output XSD elements. You need to modify all the impacted artifacts manually.&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;Every BPEL process is exposed as a web service using WSDL so you need to change the WSDL first. If you need to use input/output elements from an XSD or WSDL file, you need to import the XSD or WSDL in your BPEL process project WSDL. &lt;/span&gt; &lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;To import a WSDL use the following statement:&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt; &lt;span style="font-size:78%;"&gt;&amp;lt;import namespace="Namespace of WSDL" location="WSDL Location"/&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;To import an XSD use the following statement:&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt; &lt;span style="font-size:78%;"&gt;&amp;lt;types&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;        &lt;span style="font-size:78%;"&gt;&amp;lt;xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt; &amp;lt;xsd:import namespace="Namespace of XSD" schemaLocation="XSD Location"/&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;        &lt;span style="font-size:78%;"&gt;&amp;lt;/xsd:schema&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;   &lt;span style="font-size:78%;"&gt;&amp;lt;/types&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;Delete all the &lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;b&gt;&amp;lt;import&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;statements having unused XSD's or WSDL's. Make sure that all the imported XSD's and WSDL's doesn't have duplicate elements and you are not importing any WSDL, XSD more than one time, otherwise you will get &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;b&gt;ORABPEL-10902&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=""&gt; error while compiling the BPEL process project. &lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;Next step is to change the input/output element type. If you are importing a WSDL for input/output element you need to change the input and output message for the desired operation. e.g.&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;        &lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;&amp;lt;operation name="process"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;            &lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;&amp;lt;input message="prefix:Message Type"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;            &lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;&amp;lt;output message="prefix:Message Type"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;        &lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;&amp;lt;/operation&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;If you are importing an XSD for input/output element you need to change the element name in the message part for request and response messages.&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;    &lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;&amp;lt;message name="&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;b&gt;YourProcessName&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;RequestMessage"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;        &lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;part name="payload" element="prefix:Element Name"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;    &lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;/message&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;    &lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;message name="&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;b&gt;YourProcessName&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;ResponseMessage"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;        &lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;part name="payload" element="prefix:Element Name"/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;    &lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=""&gt;/message&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;Make sure that you are providing the correct elements and you are using the correct namespaces otherwise  you will get &lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;b&gt;ORRABPEL-10902&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt; error with the following message:&lt;/span&gt;&lt;/p&gt; &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;[Error ORABPEL-10902]: compilation failed [Description]: in "bpel.xml", XML parsing failed because "undefined part element. &lt;/span&gt; &lt;/p&gt;  &lt;p  align="justify" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;Validate your BPEL flow, compile it  and deploy it on the server.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-168427363180989470?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/168427363180989470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=168427363180989470' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/168427363180989470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/168427363180989470'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/04/how-to-change-inputoutput-variable-for.html' title='How to change Input/Output Variable for a BPEL Process'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-1999120121749143420</id><published>2008-04-27T21:03:00.000-07:00</published><updated>2008-04-27T21:06:21.601-07:00</updated><title type='text'>How to change Namespace for a BPEL Process Project:</title><content type='html'>&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;I have seen many developers faced problems while changing namespaces for a BPEL process project. When you create a project in JDeveloper it asks for the project namespace and uses the given namespace for  the project artifacts. JDeveloper does not give any option to change namespace for a BPEL process project after creating the project. You could have faced the same issue many times.  &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;To change namespace for a BPEL Process project you need to modify .wsdl, .bpel and .xsd files in your BPEL Process project manually. You need to modify the &lt;/span&gt;&lt;b&gt;targetNamespace&lt;/b&gt;&lt;span style=""&gt; in .wsdl, .bpel, .xsd files from old to the new one.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-1999120121749143420?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/1999120121749143420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=1999120121749143420' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/1999120121749143420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/1999120121749143420'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/04/how-to-change-namespace-for-bpel.html' title='How to change Namespace for a BPEL Process Project:'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-4550648343526647926</id><published>2008-04-26T11:12:00.000-07:00</published><updated>2008-04-26T11:29:01.412-07:00</updated><title type='text'>Bug In Oracle BPEL Process Manager Console</title><content type='html'>&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Last week one of my colleague was developing a synchronous BPEL process. He was using a nested XML schema to create input variable for the BPEL process. After completion of development he deployed the BPEL process on Oracle BPEL Process Manager 10.1.3.3. While testing he got a time out exception, he thought process is doing heavy processing so it might take longer to complete the execution so he increased the time out for synchronous process by setting a larger value for “&lt;/span&gt;&lt;/span&gt;&lt;code&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;syncMaxWaitTime&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;” property. He tried so many times with no luck. Then he checked the flow on BPEL console and he found the assign activity is having SelectionFailure error so he started checking BPEL process . He checked XSD's and the XPATH expressions used in assign activity. He was wondering why he is getting SelectionFailure even though everything is correct in the BPEL process and XSD's.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;After investing ample of time he has got frustrated and started looking for someone who has already faced the same issue and lucky enough to get rid of this issue. &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;The reason behind this issue is the wrong input XML that was generated by Oracle BPEL Process Manager. The namespace prefixes are not correct in the input XML so it was not able to find the values from input XML document.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Following input XML is generated by the BPEL Process Manager Console, see the namespace prefixes given in bold, these namespace prefixes are wrong :&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;&amp;lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;br /&gt;    &amp;lt;soap:Body xmlns:ns1="http://xmlns.oracle.com/schemas/employee"&gt;&lt;br /&gt;        &amp;lt;ns1:Employee&gt;&lt;br /&gt;            &amp;lt;ns1:PersonalDetails&gt;&lt;br /&gt;                &amp;lt;ns1:Name&gt;Vijay&amp;lt;/ns1:Name&gt;&lt;br /&gt;                &amp;lt;ns1:Age&gt;30&amp;lt;/ns1:Age&gt;&lt;br /&gt;            &amp;lt;/ns1:PersonalDetails&gt;&lt;br /&gt;            &amp;lt;&lt;span style="font-weight: bold;"&gt;ns1:&lt;/span&gt;Address xmlns:ns2="http://xmlns.oracle.com/schemas/common"&gt;&lt;br /&gt;                &amp;lt;ns2:Address1&gt;2800 S Ashland&amp;lt;/ns2:Address1&gt;&lt;br /&gt;                &amp;lt;ns2:Address2&gt;GeenBay&amp;lt;/ns2:Address2&gt;&lt;br /&gt;            &amp;lt;/&lt;span style="font-weight: bold;"&gt;ns1&lt;/span&gt;:Address&gt;&lt;br /&gt;            &amp;lt;&lt;span style="font-weight: bold;"&gt;ns1:&lt;/span&gt;Department xmlns:ns3="http://xmlns.oracle.com/schemas/common"&gt;&lt;br /&gt;                &amp;lt;ns3:Name&gt;IT&amp;lt;/ns3:Name&gt;&lt;br /&gt;                &amp;lt;ns3:DeptType&gt;Development&amp;lt;/ns3:DeptType&gt;&lt;br /&gt;            &amp;lt;&lt;span style="font-weight: bold;"&gt;/ns1:&lt;/span&gt;Department&gt;&lt;br /&gt;        &amp;lt;/ns1:Employee&gt;&lt;br /&gt;    &amp;lt;/soap:Body&gt;&lt;br /&gt;&amp;lt;/soap:Envelope&gt;&lt;br /&gt;&lt;br /&gt;So correcting the namespace prefixes solved the problem. See the modified XML schema given below.&lt;br /&gt;&lt;br /&gt;&amp;lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;br /&gt;    &amp;lt;soap:Body xmlns:ns1="http://xmlns.oracle.com/schemas/employee"&gt;&lt;br /&gt;        &amp;lt;ns1:Employee&gt;&lt;br /&gt;            &amp;lt;ns1:PersonalDetails&gt;&lt;br /&gt;                &amp;lt;ns1:Name&gt;Dan&amp;lt;/ns1:Name&gt;&lt;br /&gt;                &amp;lt;ns1:Age&gt;30&amp;lt;/ns1:Age&gt;&lt;br /&gt;            &amp;lt;/ns1:PersonalDetails&gt;&lt;br /&gt;            &amp;lt;&lt;span style="font-weight: bold;"&gt;ns2&lt;/span&gt;:Address xmlns:ns2="http://xmlns.oracle.com/schemas/common"&gt;&lt;br /&gt;                &amp;lt;ns2:Address1&gt;2800 S Ashland&amp;lt;/ns2:Address1&gt;&lt;br /&gt;                &amp;lt;ns2:Address2&gt;GeenBay&amp;lt;/ns2:Address2&gt;&lt;br /&gt;            &amp;lt;&lt;span style="font-weight: bold;"&gt;/ns2:&lt;/span&gt;Address&gt;&lt;br /&gt;            &amp;lt;&lt;span style="font-weight: bold;"&gt;ns3:&lt;/span&gt;Department xmlns:ns3="http://xmlns.oracle.com/schemas/common"&gt;&lt;br /&gt;                &amp;lt;ns3:Name&gt;IT&amp;lt;/ns3:Name&gt;&lt;br /&gt;                &amp;lt;ns3:DeptType&gt;Development&amp;lt;/ns3:DeptType&gt;&lt;br /&gt;            &amp;lt;&lt;span style="font-weight: bold;"&gt;/ns3:&lt;/span&gt;Department&gt;&lt;br /&gt;        &amp;lt;/ns1:Employee&gt;&lt;br /&gt;    &amp;lt;/soap:Body&gt;&lt;br /&gt;&amp;lt;/soap:Envelope&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: trebuchet ms;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-4550648343526647926?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/4550648343526647926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=4550648343526647926' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/4550648343526647926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/4550648343526647926'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/04/bug-in-oracle-bpel-process-manager.html' title='Bug In Oracle BPEL Process Manager Console'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-9202658852935495510</id><published>2008-04-09T17:28:00.000-07:00</published><updated>2008-04-10T05:24:03.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle BPEL'/><category scheme='http://www.blogger.com/atom/ns#' term='WS Security'/><title type='text'>Invoking WS-Security compliant Web Services from Oracle BPEL</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;In last post I have discussed my experience on invoking Web Services using SSL from Oracle BPEL. SSL is a transport level security mechanism; it offers authentication, confidentiality and message integrity. It is one of the proven technologies to secure web applications.  Various organizations leverage SSL to protect their web applications.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p style="margin-bottom: 0in; text-align: justify;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;SOA applications are loosely coupled and composed with multiple services. SOA applications are discoverable from public registries. So securing SOA application is not only securing the transport layer. For a Business Process it might be required to invoke multiple intermediary services. Transport Layer Security can only guarantees security when data is on wires. SOA application security requires a mix of Transport Layer Security and Application-Level Security.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Nowadays many organizations are using Web Services to implement SOA. In Web Services world a lot of specifications are existed to address SOA security needs:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;WS-Security.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;WS-Addressing.  &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;WS-ReliableMessaging.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;WS-Policy.  &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;WS-SecurityPolicy.  &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;SAML.  &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;WS-Trust.  &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;WS-SecureConversation.  &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;WSFederation&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;In future posts I would discuss all the above mentioned standards in detail.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;WS-Security specification provides extensions to the SOAP envelope header used to implement integrity and confidentiality of a message and authenticating the sender. WS-Security specifies how to associate a security token with a SOAP message. WS-Security specification is designed to be extensible. It doesn’t require any specific type of security token.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Oracle SOA Suite supports WS-Security specification. We can handle most of the complex SOA security scenarios using Oracle BPEL Process Manager and Oracle Web Service Manager.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;“&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;User Name Token”&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt; is a very common scenario to authenticate the web service consumer. It provides a standards-based way to send user credentials so that web services deployed on different platforms can share user credentials. It utilizes a message-based security approach moving credentials outside of the actual operation into SOAP headers without modifying the Web Service contract,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Let’s assume a WS-Security compliant Web Service is deployed on Axis2 and this method contains a method named getPrice(). To interact with this web service, you need to send SOAP messages containing valid WS-security credentials. We can convert any unsecured web service to a secured web service. No need to modify any web service to make it secure. The WS security specification plays with the soap headers rather than modifying the business logic or adding the authentication and authorization logic inside any service. It is the beauty of the WS-Security specification. &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;To pass security credentials from a BPEL process to another BPEL Process or any other web service it is required to set the following properties on the partner link which is used to invoke a WS Security compliant web service:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;" align="justify"&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;wsseHeaders&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt; Creates a WS-Security &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;username&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt; token. The following values are supported:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;propagate&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;  — If the process has been invoked securely, these credentials are  also used for the outbound direction&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;credentials&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;  — Passes credentials from the BPEL deployment  descriptor(bpel.xml).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;wsseUsername &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;The username for the token. It is a required property.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;wssePassword&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt; The password for the token. It is an optional property.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Now you are ready to create a BPEL process in JDeveloper. Follow the given steps to create a BPEL Process:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Create  a new BPEL process project named “InvokeWSSecurityCompliantService“  with the Synchronous BPEL Process.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_S-psFUUeqfU/R_1gwldPWTI/AAAAAAAAABc/QOto3cLMnmM/s1600-h/prj.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_S-psFUUeqfU/R_1gwldPWTI/AAAAAAAAABc/QOto3cLMnmM/s320/prj.JPG" alt="" id="BLOGGER_PHOTO_ID_5187408733605419314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Click  on next and accept all the defaults and finish the wizard.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Right  click on the services area and choose “Create Partner Link” from  the context menu.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Name  this partner link “WSSecurityCompliantServicePL”. &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Browse  the WSDL file from the file system. JDeveloper would ask to make a  local copy of the external WSDL file and ask to add partner link in  the WSDL. Click on “Yes” on both the dialog boxes. &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_S-psFUUeqfU/R_1he1dPWUI/AAAAAAAAABk/lvFcJno0PII/s1600-h/createPL.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_S-psFUUeqfU/R_1he1dPWUI/AAAAAAAAABk/lvFcJno0PII/s320/createPL.JPG" alt="" id="BLOGGER_PHOTO_ID_5187409528174369090" border="0" /&gt;&lt;/a&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Select  Partner Link Type, Partner Role and click on the “Property” tab  to provide WS security credentials.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Click  on “Create” and select “wsseHeaders” from the drop down  list.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_S-psFUUeqfU/R_1imFdPWVI/AAAAAAAAABs/xymJz2skmyU/s1600-h/wsseheader.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_S-psFUUeqfU/R_1imFdPWVI/AAAAAAAAABs/xymJz2skmyU/s320/wsseheader.JPG" alt="" id="BLOGGER_PHOTO_ID_5187410752240048466" border="0" /&gt;&lt;/a&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;You  can use either “credentials” or “propagate” based on the  requirement. If this BPEL process would be invoked by another  process which is passing security credentials then you can use  “propagate” to tell BPEL process manager to pass the incoming  credentials to the service you are calling. You can use  “credentials” as the property value to instruct BPEL Process  Manager to read credentials from the deployment  descriptor(bpel.xml).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Create  two new properties “wsseUsername” and “wssePassword” by  following the same approach.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_S-psFUUeqfU/R_1kG1dPWWI/AAAAAAAAAB0/4GPM4q_zuaY/s1600-h/credentials.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_S-psFUUeqfU/R_1kG1dPWWI/AAAAAAAAAB0/4GPM4q_zuaY/s320/credentials.JPG" alt="" id="BLOGGER_PHOTO_ID_5187412414392392034" border="0" /&gt;&lt;/a&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Add  “invoke” activity, name it as “InvokeSecuredWS” and link it  with the partner link. Select the operation “getPrice” and  create input and output variables.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_S-psFUUeqfU/R_1lL1dPWXI/AAAAAAAAAB8/O5jbfRzTI5I/s1600-h/invoke.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_S-psFUUeqfU/R_1lL1dPWXI/AAAAAAAAAB8/O5jbfRzTI5I/s320/invoke.JPG" alt="" id="BLOGGER_PHOTO_ID_5187413599803365746" border="0" /&gt;&lt;/a&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Add  2 assign activities to assign and transform the input and out  variables. Final BPEL process will look like the following image:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_S-psFUUeqfU/R_1ls1dPWYI/AAAAAAAAACE/luaLAXEUGgA/s1600-h/wscompliantbpel"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_S-psFUUeqfU/R_1ls1dPWYI/AAAAAAAAACE/luaLAXEUGgA/s320/wscompliantbpel" alt="" id="BLOGGER_PHOTO_ID_5187414166739048834" border="0" /&gt;&lt;/a&gt; &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;To  deploy the BPEL process project on Oracle BPEL Process manager right  click on the BPEL Process Project. From the context menu select  “Deploy”, choose the appropriate integration server connection  from the Deploy menu and select the appropriate domain. &lt;/span&gt;&lt;/span&gt;  &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Test  the BPEL process from the BPEL Console or from any client.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p style="margin-bottom: 0in;" align="justify"&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Now you are able to invoke WS-Security compliant web services. In next post I would throw some light on BEPL deployment descriptors configuration and preference properties. These properties play a crucial role in customizing BPEL processes as per our requirements.  &lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-9202658852935495510?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/9202658852935495510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=9202658852935495510' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/9202658852935495510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/9202658852935495510'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/04/invoking-ws-security-compliant-web.html' title='Invoking WS-Security compliant Web Services from Oracle BPEL'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_S-psFUUeqfU/R_1gwldPWTI/AAAAAAAAABc/QOto3cLMnmM/s72-c/prj.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-4318200019820378604</id><published>2008-01-23T05:05:00.000-08:00</published><updated>2008-01-23T07:17:59.713-08:00</updated><title type='text'>Invoking Secured Services (https) from Oracle BPEL</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;Security is one of the main concerns for IT from its initial&lt;/span&gt;&lt;span style="font-size:85%;"&gt; stages. Nowadays IT is more matured and more aligned with business so securing IT is securing the overall business. When we think about SOA we can apply security at variou&lt;/span&gt;&lt;span style="font-size:85%;"&gt;s levels. This is the first post in SOA security series; in this post I would share my experience on invoking Web Services using SSL from Oracle B&lt;/span&gt;&lt;span style="font-size:85%;"&gt;PEL. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;The Web Services are deployed on Axis2. Follow these steps to enable SSL in tomcat:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;Create a certificate keystore using the following commands:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;On Windows:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="text-align: justify; text-indent: 0.5in;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;On Unix:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;!--[if !supportLists]--&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Provide the required details and set the password to "changeit".&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;Uncomment the "SSL HTTP/1.1 Connector" entry in &amp;lt;TOMCAT_HOME&amp;gt;/conf/server.xml and make changes if necessary.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;These configurations are well enough for enabling SSL using JKS, see the following for more information on adding third party certificates:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html"&gt;&lt;span style="text-decoration: none; color: rgb(0, 0, 0);"&gt;http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Oracle BPEL Process Manager has problems to consume a web service when the WSDL has two bindings one for http over soap and the other for https over soap, so you need to expose the web service on Axis2 for https over soap only.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Open &amp;lt;AXIS_HOME&amp;gt;\samples\quickstart \resources\META-INF\services.xml and add the following xml fragment inside &amp;lt;service &amp;gt; tag to expose the web service on https transport only:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;transports&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&amp;lt;transport&amp;gt;https&amp;lt;/transport&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;/transports&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Generate a web service for &amp;lt;AXIS_HOME&amp;gt;\ samples\quickstart from the Axis2 distributable by executing the ant script given in &amp;lt;AXIS_HOME&amp;gt;\samples\quickstart folder. The generated web service would go inside the &amp;lt;AXIS_HOME&amp;gt;\samples\quickstart\build folder as “StockQuoteService.aar”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Deploy the generated web service to Axis2 either manually copying to the &amp;lt;TOMCAT_HOME&amp;gt;\webapps\axis2\WEB-INF\services folder or using the axis2 admin console.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Now service is available on HTTPS so we can move forward to create an Oracle BPEL process project to invoke the service using SSL.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;To invoke the service exposed on HTTPS you need to import the server certificate in Oracle BPEL Process Manager and Oracle JDeveloper. Follow these steps to import the SSL certificate in Oracle BPEL Process Manager and Oracle JDeveloper&lt;a name="sthref113"&gt;&lt;/a&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Open the endpoint URL of the service to invoke in internet explorer&lt;span style=""&gt;  &lt;/span&gt;After connecting to the server, a pop-up window displays the security alert and asks whether you trust this certificate or not?&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;Click on “&lt;/span&gt;&lt;span style="font-size:85%;"&gt;yes”&lt;/span&gt;&lt;span style="font-size:85%;"&gt; to accept the certificate.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;!--[if !supportLists]--&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Wait for the page to load completely. Once the page gets loaded double click on the lock displays in the status bar in the bottom right corner of the browser window.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;A new popup window titled “Certificate” would be displayed click on the details tab and press “&lt;b style=""&gt;copy the file&lt;/b&gt;” button to save the certificate in a file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;When you press the “&lt;b style=""&gt;Copy to File&lt;/b&gt;” button a wizard would guide to save the certificate. Select “&lt;b style=""&gt;Base-64 encoded&lt;span style=""&gt;  &lt;/span&gt;X.509(.cer)&lt;/b&gt;” for certificate format.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Give the file location and file name to store the certificate e.g. Cert.cer. Click on next and finish the wizard by pressing the “&lt;b style=""&gt;Finish&lt;/b&gt;” button&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Use the saved file to import the server certificate to the trust store of Oracle BPEL Process Manager and Oracle JDeveloper. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;Copy the server certificate into the following folders:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;ORACLE_SOA_HOME&amp;gt;\jdk\jre\lib\security folder&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;JDEVELOPER_JRE_HOME&amp;gt;\jdk\jre\lib\security&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=""&gt;Note:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; To know the JRE home for JDeveloper go to “Tools” menu and select “Project Properties” a new window would be opened. Click on Libraries to see the JRE home.&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Use the following command to import the certificate into Oracle BPEL Process Manager :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;ORACLE_SOA_HOME&amp;gt;\jdk\bin\keytool -import -v –file &amp;lt;CERTIFICATE_LOCATION&amp;gt;\Cert.cer -keypass &amp;lt;KEYSTORE_PASSWORD&amp;gt; -keystore &amp;lt;ORACLE_SOA_HOME&amp;gt;\jdk\jre\lib\security\cacerts -alias &amp;lt;Any Alias&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;pre  style="margin-left: 0.25in; text-align: justify; text-indent: -0.25in;font-family:trebuchet ms;"&gt;&lt;!--[if !supportLists]--&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;You need to import the same certificate in the JRE of the JDEveloper. Use the following command to import the certificate into the JRE used by the Oracle JDeveloper:&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="margin-left: 0.75in; text-indent: -0.25in;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;JDEVELOPER_JRE_HOME&amp;gt;\jdk\bin\keytool -import -v -file &amp;lt;CERTIFICATE_LOCATION&amp;gt;\Cert.cer -keypass &amp;lt;KEYSTORE_PASSWORD&amp;gt; -keystore &amp;lt;JDEVELOPER_JRE_HOME&amp;gt;\jdk\jre\lib\security\cacerts -alias &amp;lt;Any Alias&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;Restart Oracle SOA Suite and Oracle JDeveloper.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Now you are ready to create a BPEL process in JDeveloper. Follow the given steps to create a BPEL Process:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;Create a new BPEL process project named “InvokeServiceOnHTTPS“ with the Synchronous BPEL Process.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;p class="MsoNormal" face="trebuchet ms" style="margin-left: 0.25in; text-indent: -0.25in;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_S-psFUUeqfU/R5c_YdeHCpI/AAAAAAAAABI/lYIkU_JGKwI/s1600-h/bpel_prj.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_S-psFUUeqfU/R5c_YdeHCpI/AAAAAAAAABI/lYIkU_JGKwI/s320/bpel_prj.jpg" alt="" id="BLOGGER_PHOTO_ID_5158661587636521618" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Click on next and accept all the defaults and finish the wizard.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Right click on the services area and choose “Create Partner Link” from the context menu.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;span style="font-size:85%;"&gt;Name this partner link “SecuredServicePL”. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Browse the WSDL file from the file system. JDeveloper would ask to make a local copy of the external WSDL file and ask to add partner link in the WSDL. Click on “Yes” on both the dialog boxes. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:trebuchet ms;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_S-psFUUeqfU/R5c90NeHCmI/AAAAAAAAAAw/Y_E3HFdOaoI/s1600-h/bpel_pl_add_pl.jpg"&gt;&lt;img style="cursor: pointer; width: 399px; height: 232px;" src="http://bp0.blogger.com/_S-psFUUeqfU/R5c90NeHCmI/AAAAAAAAAAw/Y_E3HFdOaoI/s320/bpel_pl_add_pl.jpg" alt="" id="BLOGGER_PHOTO_ID_5158659865354635874" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Select Partner Link Type and Partner Role and click on “OK” button.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Add “invoke” activity named “InvokeSecuredWS” and link it with the partner link. Select the operation “getPrice” and create input and output variables.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style="text-align: justify; font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" face="trebuchet ms" style="text-align: justify;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_S-psFUUeqfU/R5c-mteHCnI/AAAAAAAAAA4/0QpINFkMkeE/s1600-h/bpel_invoke.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_S-psFUUeqfU/R5c-mteHCnI/AAAAAAAAAA4/0QpINFkMkeE/s320/bpel_invoke.jpg" alt="" id="BLOGGER_PHOTO_ID_5158660732938029682" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Add 2 assign activities to assign the input and out variables. Final BPEL process will look like the following image:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal" style="font-family: trebuchet ms;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_S-psFUUeqfU/R5c-2NeHCoI/AAAAAAAAABA/43hiAe5A_94/s1600-h/bpel_final.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_S-psFUUeqfU/R5c-2NeHCoI/AAAAAAAAABA/43hiAe5A_94/s320/bpel_final.jpg" alt="" id="BLOGGER_PHOTO_ID_5158660999226002050" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;To deploy the BPEL process project on Oracle BPEL Process manager right click on the BPEL Process Project. From the context menu select “Deploy”, choose the appropriate integration server connection from the Deploy menu and select the appropriate domain. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p class="MsoNormal"  style="margin-left: 0.25in; text-align: justify; text-indent: -0.25in;font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;!--[if !supportLists]--&gt;&lt;span style="font-size:85%;"&gt;Test the BPEL process from the BPEL Console or from any client.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p  class="MsoNormal" style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" face="trebuchet ms" style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;Now you are able to invoke web services exposed over https from Oracle BPEL Process Manager. In next post I would throw some light on how to invoke WS-Security-Compliant Web Services from Oracle BPEL Process Manager.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-4318200019820378604?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/4318200019820378604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=4318200019820378604' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/4318200019820378604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/4318200019820378604'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2008/01/invoking-secured-services.html' title='Invoking Secured Services (https) from Oracle BPEL'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_S-psFUUeqfU/R5c_YdeHCpI/AAAAAAAAABI/lYIkU_JGKwI/s72-c/bpel_prj.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2627158641075173556.post-6197602640121608718</id><published>2007-12-26T03:27:00.000-08:00</published><updated>2007-12-26T04:20:12.634-08:00</updated><title type='text'>BPEL: Future Directions</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;People have written tons of articles for BPEL, but I think it is good to write about the future directions of BPEL. Business Process Execution Language as the name suggests provide guidelines to orchestrate the business processes. BPEL 2.0 is the current specification but most of the SOA suits implements BPEL 1.1 specification. To make you aware about the changes from BPEL 1.1 to BPEL 2.0 I would like to compare these two specifications.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: trebuchet ms;"&gt;BPEL 1.1 vs. BPEL 2.0&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;BPEL 1.1 having a basic set of activities and lacking many features to build real life applications. BPEL 1.1 specification does not have inbuilt support for human task, sub processes, strong data manipulation, ACID transactions, modularization and reuse. The vendors providing implementation for BPEL specification implemented their own extensions for the missing features. The problem starts here, usage of vendor proprietary extensions it is very hard to manage portability and interoperability.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;In BPEL 2.0 spec the specification team did a great job to improve the BPEL. They introduced the following changes:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Improved data access.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Improved data manipulation.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Improve fault catching model.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Added &amp;lt;terminationHandler&amp;gt; to scopes. Termination handlers provide the ability for scopes to control the forced termination to some extent. It is akin to the shutdown hooks of Java. We can create custom termination handlers or can rely on the default termination handler that would be implemented by the BPEL engines.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;New activities:&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;rethrow&amp;gt; &lt;/span&gt;- is used to throw the fault again that was originally caught by the immediately enclosing fault handler.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;forEach&amp;gt;&lt;/span&gt; - Iterates its child scope activity exactly N+1 times where N equals the &amp;lt;finalCounterValue&amp;gt; minus the &amp;lt;startCounterValue&amp;gt;. It can be executed in sequential or parallel manner. If the attribute parallel="yes", then the N+1 instances of the enclosed &amp;lt;scope&amp;gt; activity SHOULD occur in parallel.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;repeatUntil&amp;gt;&lt;/span&gt; - Iterates child activities until the specified &amp;lt;condition&amp;gt; becomes true. The &amp;lt;condition&amp;gt; is tested after the child activity completes. It is used to execute the child activity at least once. It is akin to do while loop of Java.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;extensionActivity&amp;gt;&lt;/span&gt; - Used to introduce a new activity type to extend BPEL.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt;validate&amp;gt;&lt;/span&gt; - It is used to validate the values of variables against their associated XML and WSDL data definition.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Syntactical changes, such as,&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;From &amp;lt;switch&amp;gt; to &amp;lt;if&amp;gt;-&amp;lt;elseif&amp;gt;-&amp;lt;else&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;From &amp;lt;terminate&amp;gt; to &amp;lt;exit&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Differentiate different cases of &amp;lt;compensate&amp;gt; by calling them &amp;lt;compensate&amp;gt; and &amp;lt;compensateScope&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;See the following for what’s new in WS-BPEL 2.0&lt;br /&gt;&lt;a href="http://www.oasis-open.org/committees/download.php/20266/whats_new_in_bpel_2.0.ppt"&gt;http://www.oasis-open.org/committees/download.php/20266/whats_new_in_bpel_2.0.ppt&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Expectations from posterity:&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;Although BPEL 2.0 specification is more matured than BPEL 1.1, but it does not address all the issues BPEL 1.1 specification had. The new specification is not backward compatible so it requires migration of all the artifacts developed using BPEL 1.1 specification. Changes in syntax, data manipulation, compensation handling and new message access style, would make the migration a little bit hard and time consuming.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;I feel in the next BPEL release the specification team should consider the following:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Human Task&lt;/span&gt; - BPEL specification should have human workflow features. We cannot say the specification complete without the support of human workflows.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Modularization and Reuse -&lt;/span&gt; BPEL specification should have support for modularization and reuse. Developers should be able to create process fragment and can use as and when required. These process fragments should be manageable, any changes in these fragment should not require changes at all the places these fragment have been used.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Certification for the BPEL engines - &lt;/span&gt;The specification authority should certify the BPEL engines for BPEL specification compliance.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Backward compatibility&lt;/span&gt; - Specification team should give a second thought to issues incurred due to syntactical changes and should define a policy for the BPEL engine vendors to support the old BPEL specifications.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2627158641075173556-6197602640121608718?l=soa-howto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://soa-howto.blogspot.com/feeds/6197602640121608718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2627158641075173556&amp;postID=6197602640121608718' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/6197602640121608718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2627158641075173556/posts/default/6197602640121608718'/><link rel='alternate' type='text/html' href='http://soa-howto.blogspot.com/2007/12/bpel-future-directions.html' title='BPEL: Future Directions'/><author><name>Dharmendra</name><uri>http://www.blogger.com/profile/10820121550721912427</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-3i0ZgkfqtD8/Tfquf8QXlpI/AAAAAAAAAco/5aeSv3Z2zy0/s220/dd_photo_1.JPG'/></author><thr:total>4</thr:total></entry></feed>
