<?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-2931801055574939054</id><updated>2012-02-09T13:52:55.856-08:00</updated><category term='embedded Java'/><category term='Switch'/><category term='BPEL'/><category term='boolean'/><title type='text'>SOA / BPM on Oracle Fusion Middleware</title><subtitle type='html'>SOA / BPM on Oracle Fusion Middleware</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default?start-index=101&amp;max-results=100'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>141</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-2628238551830779471</id><published>2012-02-07T02:03:00.000-08:00</published><updated>2012-02-08T02:29:05.620-08:00</updated><title type='text'>Do more with SOA Integration: Best of Packt</title><content type='html'>Just back in freezing Germany after the warmth of the Caribbean - lucky for me that the guys from Packt publishing have released the above, enough to warm the cockles of your heart!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-0FNCZcc57To/TzD3n4p4stI/AAAAAAAAC6U/z7OZvcE7DAg/s1600/1.GIF"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 306px; height: 400px;" src="http://2.bp.blogspot.com/-0FNCZcc57To/TzD3n4p4stI/AAAAAAAAC6U/z7OZvcE7DAg/s400/1.GIF" alt="" id="BLOGGER_PHOTO_ID_5706332992473445074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.packtpub.com/soa-integration-automation-business-processes-books-best-of-packt/book"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Link 2 Book on PacktPub&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is a compendium from industry experts including Oracle's own Harish Gaur, Tom Laszewski, Antony Reynolds, Jason Williamson, Markus Zirn. There are also contributions from Oracle Aces such as Guido Schmutz and Matt Wright.&lt;br /&gt;&lt;br /&gt;Chapter 1 covers the basic principles of integration architecture, including a section on Patterns for service-oriented integration.&lt;br /&gt;&lt;br /&gt;Chapter 2 goes into detail on Integration Architecture, Principles, and Patterns. This includes a very interesting section on Integration Infrastructure.&lt;br /&gt;&lt;br /&gt;The next chapter covers the base technologies - JCA, SCA, JBI, SDO. It concludes with a section covering Process Modeling - EPC, BPMN and BPEL.&lt;br /&gt;&lt;br /&gt;Chapter 4 is a gem, covering as it does - Best Practices for Using XML for Integration. Lots of useful tips here.&lt;br /&gt;&lt;br /&gt;The next chapter deals with leveraging BPEL to integrate with other EAI solutions. The case study covers integration with TIBCO BusinessWorks and webMethods. &lt;br /&gt;&lt;br /&gt;Chapter 6 covers integration with the 2 leading ERP systems - Oracle Apps and PeopleSoft.&lt;br /&gt;&lt;br /&gt;Chapter 7 introduces us to the concept of JBI service engines and the raison d'être for NMR(Normalized Message Router). It then goes on to discuss the offering that comes with the NetBeans Enterprise Pack. To quote - "The NetBeans Enterprise Pack provides a version of the Sun Java System Application Server 9.0 which includes several Service Engines from the Open ESB project." The following chapter covers the binding components within the NetBeans environment. Among those discussed are File BC, SMTP BC, SOAP BC, JDBC BC, JMS BC, FTP BC.&lt;br /&gt;&lt;br /&gt;Chpater 9 is titled SOA and Web Services Approach for Integration. It begins by discussing how to design Service-Oriented Architectures and then moves on to the heuristics of designing Web Services. The differences between B2B and EAI Web Services are discussed which leads on nicely to the concluding section on Interoperable WSDL.&lt;br /&gt;&lt;br /&gt;Chapter 10 discusses ESB architecture, positioning it succinctly as the &lt;span style="font-weight: bold;"&gt;middleware for middleware&lt;/span&gt; technologies. It also focuses heavily on the key requirements of scalability, reliability and security.&lt;br /&gt;&lt;br /&gt;Chapter 11 is titled - Loosely Coupling Services - and explores how service virtualization through the Oracle Service Bus (OSB) can be leveraged to ensure more loosely coupled services.&lt;br /&gt;&lt;br /&gt;Chapter 12 covers - Integrating BPEL with BPMN using BPM Suite. the focus is on Oracle SOA Suite and how one can implement an SCA composite that includes both BPEL and BPM. Human interaction via BPM, back end service integration via BPEL.&lt;br /&gt;&lt;br /&gt;The penultimate chapter, 13, covers - SOA Integration—Functional View, Implementation, and Architecture. Here SOA is discussed in the context of modernization - Legacy SOA Integration. To quote - "SOA Integration is a combined data federation and remote method invocation approach to solve EII/EAI in a Legacy Modernization project." So for those of you concerned with this space, this chapter is a must!&lt;br /&gt;&lt;br /&gt;The final chapter - SOA Integration—Scenario in Detail, covers an implementation of the concepts from the previous chapter. To quote "We are now going to show an example in detail for—Web Enablement. We will use JSP, JDBC, the Oracle Legacy Adapter, Oracle Application Server, Java EE Connector API, and XA transaction processing to show a two-phase commit across an Oracle database and VSAM on the mainframe." A great real-world example of SOA in action.&lt;br /&gt;&lt;br /&gt;All in all, a great read from those who really know what they are talking about!&lt;br /&gt;&lt;br /&gt;Take a bow guys!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-2628238551830779471?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/2628238551830779471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=2628238551830779471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2628238551830779471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2628238551830779471'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2012/02/do-more-with-soa-integration-best-of.html' title='Do more with SOA Integration: Best of Packt'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-0FNCZcc57To/TzD3n4p4stI/AAAAAAAAC6U/z7OZvcE7DAg/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-1899300724505067977</id><published>2012-01-17T16:44:00.000-08:00</published><updated>2012-01-17T16:48:46.549-08:00</updated><title type='text'>Belated 2012 greetings from South Beach Miami</title><content type='html'>This is the first post for 2012 and it is coming to you from my vacation domicile in South Beach, Miami.&lt;br /&gt;2012 will be a great year with lots happening in the SOA/BPM space, also expect news on the Oracle Enterprise Gateway front.&lt;br /&gt;&lt;br /&gt;I am going back to the R&amp;R, coming back refreshed with more tech posts in early February.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-1899300724505067977?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/1899300724505067977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=1899300724505067977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1899300724505067977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1899300724505067977'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2012/01/belated-2012-greetings-from-south-beach.html' title='Belated 2012 greetings from South Beach Miami'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8727382163946141103</id><published>2011-12-22T06:37:00.000-08:00</published><updated>2011-12-22T07:05:24.732-08:00</updated><title type='text'>Invoking BPM processes via Java</title><content type='html'>Simple scenario -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Q_30WjcgyWc/TvNBCPRsIaI/AAAAAAAAC1k/qoI1yxCi6Wo/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 121px;" src="http://2.bp.blogspot.com/-Q_30WjcgyWc/TvNBCPRsIaI/AAAAAAAAC1k/qoI1yxCi6Wo/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688962261015339426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Client will do a sync invoke the expressOrderProcess and get back an acknowledgement.&lt;br /&gt;&lt;br /&gt;Steps -&lt;br /&gt;&lt;br /&gt;1. Define conversation/interface for ProcessExpressOrder and Acknowledge&lt;br /&gt;This will generate the wsdl and the required artifacts therein.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-X0v0pEbhHIQ/TvNCcKfUC-I/AAAAAAAAC2I/EYTonfkKVoU/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 286px;" src="http://2.bp.blogspot.com/-X0v0pEbhHIQ/TvNCcKfUC-I/AAAAAAAAC2I/EYTonfkKVoU/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688963805918530530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Create an EJB Service Interface based on the WSDL&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-QsqwxTOGOqk/TvNB2PI2CEI/AAAAAAAAC1w/7mGaWV89CuM/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 136px;" src="http://4.bp.blogspot.com/-QsqwxTOGOqk/TvNB2PI2CEI/AAAAAAAAC1w/7mGaWV89CuM/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688963154331437122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Deploy and check that you can see the EJB in the JNDI tree&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Y7jgKbZ2u4o/TvNCHlOQIcI/AAAAAAAAC18/KddqkzS6tnY/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 128px;" src="http://4.bp.blogspot.com/-Y7jgKbZ2u4o/TvNCHlOQIcI/AAAAAAAAC18/KddqkzS6tnY/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688963452317475266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Create the Java client&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-xn7VGrBIYY8/TvNFQGqZrAI/AAAAAAAAC2U/WuAjPAhYHnA/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 156px;" src="http://3.bp.blogspot.com/-xn7VGrBIYY8/TvNFQGqZrAI/AAAAAAAAC2U/WuAjPAhYHnA/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688966897267747842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Full doc at&lt;br /&gt;&lt;br /&gt;https://docs.google.com/open?id=0B7YrnfO7h717ZDhmYjk0ODMtZTg5NS00NGRjLWFiOWEtYTM5NDhhNDMwNGU0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8727382163946141103?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8727382163946141103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8727382163946141103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8727382163946141103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8727382163946141103'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/12/invoking-bpm-processes-via-java.html' title='Invoking BPM processes via Java'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Q_30WjcgyWc/TvNBCPRsIaI/AAAAAAAAC1k/qoI1yxCi6Wo/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-2367398073909281238</id><published>2011-12-21T23:17:00.000-08:00</published><updated>2011-12-21T23:34:14.635-08:00</updated><title type='text'>BPM 11g Feature Pack - Collaboration Diagrams</title><content type='html'>Collaboration diagrams allows us to see the flow of messages between participants.&lt;br /&gt;The participants are represented by pools and swimlanes. Each pool is essentially a &lt;br /&gt;standalone process.&lt;br /&gt;&lt;br /&gt;Here is a simple example with 2 pools -&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-Nl0xc2IBbHw/TvLc0C2Ot0I/AAAAAAAAC1E/c-U66eCKOMc/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 181px;" src="http://3.bp.blogspot.com/-Nl0xc2IBbHw/TvLc0C2Ot0I/AAAAAAAAC1E/c-U66eCKOMc/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688852065997993794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-bq8LAFI_n0g/TvLcz7_lbuI/AAAAAAAAC00/BLQCwQP91H4/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 299px;" src="http://1.bp.blogspot.com/-bq8LAFI_n0g/TvLcz7_lbuI/AAAAAAAAC00/BLQCwQP91H4/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688852064158183138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now all you need to do is click on the Collaboration Diagram tab...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-pDALDNtTz8c/TvLdY1WtjzI/AAAAAAAAC1Y/XQ2YxJP44RQ/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 303px; height: 400px;" src="http://1.bp.blogspot.com/-pDALDNtTz8c/TvLdY1WtjzI/AAAAAAAAC1Y/XQ2YxJP44RQ/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688852698031296306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-0TG9jrdmqaQ/TvLdYuO0JLI/AAAAAAAAC1M/ryx0t_dm12Y/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 348px;" src="http://3.bp.blogspot.com/-0TG9jrdmqaQ/TvLdYuO0JLI/AAAAAAAAC1M/ryx0t_dm12Y/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688852696119125170" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-2367398073909281238?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/2367398073909281238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=2367398073909281238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2367398073909281238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2367398073909281238'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/12/bpm-11g-feature-pack-collaboration.html' title='BPM 11g Feature Pack - Collaboration Diagrams'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Nl0xc2IBbHw/TvLc0C2Ot0I/AAAAAAAAC1E/c-U66eCKOMc/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8130169584438360563</id><published>2011-12-21T00:22:00.000-08:00</published><updated>2011-12-21T00:32:38.221-08:00</updated><title type='text'>BPM 11g Feature Pack - Activity Guides</title><content type='html'>A great feature available OOTB with feature pack. &lt;br /&gt;&lt;br /&gt;Here is my sample BPM process -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-kfNIRaDjShA/TvGXtaeNqZI/AAAAAAAAC0c/_XzaF-1LEds/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://2.bp.blogspot.com/-kfNIRaDjShA/TvGXtaeNqZI/AAAAAAAAC0c/_XzaF-1LEds/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688494610801600914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the activity guide UI -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-_nTQVCNXPlU/TvGYfXEBL_I/AAAAAAAAC0o/rNSARQ-Gvh4/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 249px;" src="http://2.bp.blogspot.com/-_nTQVCNXPlU/TvGYfXEBL_I/AAAAAAAAC0o/rNSARQ-Gvh4/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5688495468879884274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Full lab doc at -&lt;br /&gt;&lt;br /&gt;https://docs.google.com/open?id=0B7YrnfO7h717NTc5NDMwZTMtOTNiZS00NjJiLTkxYTEtZDc1YjlhNTI1OGIz&lt;br /&gt;&lt;br /&gt;JDev Project -&lt;br /&gt;&lt;br /&gt;https://docs.google.com/open?id=0B7YrnfO7h717YjJkZTc2YTYtNTg3MS00OTQ1LTllN2QtZmU1YzQ0OTMwMDJh&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8130169584438360563?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8130169584438360563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8130169584438360563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8130169584438360563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8130169584438360563'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/12/bpm-11g-feature-pack-activity-guides.html' title='BPM 11g Feature Pack - Activity Guides'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-kfNIRaDjShA/TvGXtaeNqZI/AAAAAAAAC0c/_XzaF-1LEds/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-5397009684432257565</id><published>2011-12-19T01:36:00.000-08:00</published><updated>2011-12-19T09:05:47.135-08:00</updated><title type='text'>SOA/BPM APIs - Manipulating Composites and purging instances</title><content type='html'>With the release of the BPM 11g Feature Pack, I've started revisiting the whole API space. There are many blog entries out there dealing with this area - however it is usually only one particular use case that's covered e.g. how to purge instances etc.&lt;br /&gt;&lt;br /&gt;However, there are exceptions - Rommel Pino's series of posts on the API are well worth reading, as well as anything from Mark Nelson http://redstack.wordpress.com/author/markxnelson/&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;Over the next couple of posts I want to look at the different API levels -&lt;br /&gt;&lt;br /&gt;- composite / composite instance&lt;br /&gt;- component/ component instance --&gt; BPM process &lt;br /&gt;- human task &lt;br /&gt;&lt;br /&gt;My starting point is the following simple BPM process.   &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-_J-NdZwQtC8/Tu8IHxmci3I/AAAAAAAACyg/o54atA4cLbg/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 162px;" src="http://1.bp.blogspot.com/-_J-NdZwQtC8/Tu8IHxmci3I/AAAAAAAACyg/o54atA4cLbg/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687773784058923890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-7gbcVge9L_M/Tu8IHr9ouHI/AAAAAAAACyY/sAgO9jV4wEU/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 301px;" src="http://4.bp.blogspot.com/-7gbcVge9L_M/Tu8IHr9ouHI/AAAAAAAACyY/sAgO9jV4wEU/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687773782545578098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My XSD- &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-Hpm72GCvgUc/Tu9DT6IIMnI/AAAAAAAAC0Q/NLmJxTkHBco/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 291px;" src="http://1.bp.blogspot.com/-Hpm72GCvgUc/Tu9DT6IIMnI/AAAAAAAAC0Q/NLmJxTkHBco/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687838863692149362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My test input -&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-5ewGCo38bHY/Tu9DT_ZkghI/AAAAAAAAC0E/krDX7fWxfDA/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 149px;" src="http://1.bp.blogspot.com/-5ewGCo38bHY/Tu9DT_ZkghI/AAAAAAAAC0E/krDX7fWxfDA/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687838865107485202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Notice I have created a composite sensor on the FileAdapter (Read)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Composite API&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;I going to go thru the composite API - querying composites and their components.&lt;br /&gt;I will also show a couple of approaches to purging instances.&lt;br /&gt;&lt;br /&gt;1. Purge all instances of a composite based on instance state e.g. STALE.&lt;br /&gt;This we can do at composite level.&lt;br /&gt;&lt;br /&gt;2. Purge all instances of a composite based on instance state e.g. STALE. but doing&lt;br /&gt;individual auditing for each instance. This we can do at composite instance level.&lt;br /&gt;&lt;br /&gt;3. Purge a composite instance based on a sensor value. e.g. purge instance for orderID = 3.&lt;br /&gt;  &lt;br /&gt;The following code - will query all composites and list their components -&lt;br /&gt;&lt;br /&gt;****************************************************************************&lt;br /&gt;&lt;br /&gt;       public void getAllComposites() throws Exception {&lt;br /&gt;           System.out.println("getAllComposites()");&lt;br /&gt;           Locator locator = null;&lt;br /&gt;           int purgedInstanceCount = 0;&lt;br /&gt;    &lt;br /&gt;           try {&lt;br /&gt;               locator = this.getLocator();&lt;br /&gt;               CompositeFilter compositeFilter = new CompositeFilter(); &lt;br /&gt;               CompositeInstanceFilter instanceFilter = new CompositeInstanceFilter();&lt;br /&gt;                         &lt;br /&gt;               //Get all composites from the domain based on the filter given&lt;br /&gt;               List&lt;Composite&gt; composites =&lt;br /&gt;                   locator.getComposites(compositeFilter);&lt;br /&gt;    &lt;br /&gt;               System.out.println("*** Found " + composites.size() + " Composites.");&lt;br /&gt;    &lt;br /&gt;               //Iterate through the composites.&lt;br /&gt;               Iterator compositeIter = composites.iterator();&lt;br /&gt;               while (compositeIter.hasNext()) {&lt;br /&gt;                   Composite composite = (Composite)compositeIter.next();&lt;br /&gt;                   System.out.println("Composite DN = " +composite.getCompositeDN());&lt;br /&gt;                   System.out.println("Composite State = " + composite.getState());&lt;br /&gt;                   System.out.println("Composite Instance count = " + composite.getInstanceCount());&lt;br /&gt;                   List&lt;Component&gt; components = composite.getComponents();&lt;br /&gt;                   &lt;br /&gt;                   // List Components&lt;br /&gt;                &lt;br /&gt;                   Iterator componentsIter = components.iterator();&lt;br /&gt;                   while (componentsIter.hasNext()) {&lt;br /&gt;                       Component component = (Component)componentsIter.next();&lt;br /&gt;                       System.out.println("*** Component DN = " +component.getDN());&lt;br /&gt;                       System.out.println("*** Component Name = " + component.getName());&lt;br /&gt;                       System.out.println("*** Component Type = " + component.getImplementationType());&lt;br /&gt;                       System.out.println("*** Component Total Instances = " + component.getNumberOfInstances());&lt;br /&gt;                       System.out.println("*** Component Active Instances = " + component.getNumberOfActiveInstances());&lt;br /&gt;                   &lt;br /&gt;                   }&lt;br /&gt;                   //&lt;br /&gt;            }   &lt;br /&gt;              &lt;br /&gt;           } catch (Exception e) {&lt;br /&gt;               e.printStackTrace();&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;********************************************************************&lt;br /&gt;&lt;br /&gt;My test output is as follows -&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-1_Tsfx13Y9g/Tu82HmBTPiI/AAAAAAAACyw/6G4qtEvHLkk/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 293px;" src="http://3.bp.blogspot.com/-1_Tsfx13Y9g/Tu82HmBTPiI/AAAAAAAACyw/6G4qtEvHLkk/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687824358485212706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The following code will query the composite instances and output their composite sensor values -&lt;br /&gt;&lt;br /&gt;*******************************************************************&lt;br /&gt;&lt;br /&gt;    public void getInstances(String compositeName) throws Exception {&lt;br /&gt;        System.out.println("getInstances() for composite " + compositeName);&lt;br /&gt;        Locator locator = null;&lt;br /&gt;           &lt;br /&gt;        try {&lt;br /&gt;            locator = this.getLocator();&lt;br /&gt;            CompositeFilter compositeFilter = new CompositeFilter(); &lt;br /&gt;            CompositeInstanceFilter instanceFilter = new CompositeInstanceFilter();&lt;br /&gt;        &lt;br /&gt;            instanceFilter.setCompositeDN(compositeName);&lt;br /&gt;         &lt;br /&gt;            //Get composite from the domain based on the filter given&lt;br /&gt;            List&lt;CompositeInstance&gt; compositeInstances =&lt;br /&gt;            locator.getCompositeInstances(instanceFilter); &lt;br /&gt;    &lt;br /&gt;            System.out.println("*** Found " + compositeInstances.size() + " Composite Instances.");&lt;br /&gt;    &lt;br /&gt;            //Iterate through the composites.&lt;br /&gt;            Iterator compositeIter = compositeInstances.iterator();&lt;br /&gt;            while (compositeIter.hasNext()) {&lt;br /&gt;                CompositeInstance compositeInstance = (CompositeInstance)compositeIter.next();&lt;br /&gt;                System.out.println("Composite Instance DN = " +compositeInstance.getCompositeDN());&lt;br /&gt;                System.out.println("Composite Instance State = " + compositeInstance.getState());&lt;br /&gt;                System.out.println("Looking for Composite Sensors...");&lt;br /&gt;                &lt;br /&gt;                List&lt;SensorData&gt; l_sensorData = compositeInstance.getSensorData();&lt;br /&gt;                for (int i =0; i &lt; l_sensorData.size(); i++){&lt;br /&gt;                    SensorData sensorData = l_sensorData.get(i);&lt;br /&gt;                    System.out.println("*** Sensor name " + sensorData.getSensor().getName());&lt;br /&gt;                    System.out.println("*** Sensor value " + sensorData.getData().toString());&lt;br /&gt;                }&lt;br /&gt;            }    &lt;br /&gt;            &lt;br /&gt;        }&lt;br /&gt;        catch (Exception e){&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;************************************************************************&lt;br /&gt;&lt;br /&gt;My test output -&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-zTMgKyQp-bc/Tu83UNoMfiI/AAAAAAAACy8/1S6mcLPypPM/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 395px; height: 184px;" src="http://2.bp.blogspot.com/-zTMgKyQp-bc/Tu83UNoMfiI/AAAAAAAACy8/1S6mcLPypPM/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687825674787388962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Let's now do something with the instances e.g.&lt;br /&gt;purge Stale instances.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-79LI799AghM/Tu85_Mt2piI/AAAAAAAACzI/QV8AOjyYxRw/s1600/1.GIF"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 208px; height: 115px;" src="http://4.bp.blogspot.com/-79LI799AghM/Tu85_Mt2piI/AAAAAAAACzI/QV8AOjyYxRw/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687828612300318242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Instance state can have the following values -&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here I have a couple of stale instances -&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-BtC961Gunnw/Tu888jKH9KI/AAAAAAAACzU/yPyJHfnz5Wc/s1600/1.GIF"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 182px;" src="http://3.bp.blogspot.com/-BtC961Gunnw/Tu888jKH9KI/AAAAAAAACzU/yPyJHfnz5Wc/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687831865319748770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I use the following method -&lt;br /&gt;&lt;br /&gt;***************************************************************************+&lt;br /&gt;&lt;br /&gt;      public void deleteCompositeInstances(String compositeName, int state) throws Exception {&lt;br /&gt;          System.out.println("deleteCompositeInstances() for composite " + compositeName + " with state " + state );&lt;br /&gt;          Locator locator = null;&lt;br /&gt;          String orderID = null;&lt;br /&gt;          try {&lt;br /&gt;              locator = this.getLocator();&lt;br /&gt;              CompositeInstanceFilter instanceFilter = new CompositeInstanceFilter();&lt;br /&gt;          &lt;br /&gt;              instanceFilter.setCompositeDN(compositeName);&lt;br /&gt;              instanceFilter.setState(state);&lt;br /&gt;              &lt;br /&gt;              //Get composite from the domain based on the filter given&lt;br /&gt;              List&lt;CompositeInstance&gt; compositeInstances =&lt;br /&gt;              locator.getCompositeInstances(instanceFilter); &lt;br /&gt;      &lt;br /&gt;              System.out.println("*** Found " + compositeInstances.size() + " stale composite instances.");&lt;br /&gt;             &lt;br /&gt;              //Iterate through the composites.&lt;br /&gt;              Iterator compositeIter = compositeInstances.iterator();&lt;br /&gt;              while (compositeIter.hasNext()) {&lt;br /&gt;                  CompositeInstance compositeInstance = (CompositeInstance)compositeIter.next();&lt;br /&gt;                  &lt;br /&gt;                  List&lt;SensorData&gt; l_sensorData = compositeInstance.getSensorData();&lt;br /&gt;                  for (int i =0; i &lt; l_sensorData.size(); i++){&lt;br /&gt;                      SensorData sensorData = l_sensorData.get(i);&lt;br /&gt;                      orderID = sensorData.getData().toString();&lt;br /&gt;                  }&lt;br /&gt;                  System.out.println("About to delete instance for orderID = " + orderID);&lt;br /&gt;                  compositeInstance.delete();&lt;br /&gt;                  &lt;br /&gt;              }    &lt;br /&gt;              &lt;br /&gt;          }&lt;br /&gt;          catch (Exception e){&lt;br /&gt;              e.printStackTrace();&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;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-kCtTwTivRFE/Tu89bHUk_rI/AAAAAAAACzs/wUKNhmRbXHc/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 334px; height: 57px;" src="http://2.bp.blogspot.com/-kCtTwTivRFE/Tu89bHUk_rI/AAAAAAAACzs/wUKNhmRbXHc/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687832390423346866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-jE2YTJ45AF8/Tu89a2IWgOI/AAAAAAAACzg/k2g2ppPdwxY/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 251px;" src="http://3.bp.blogspot.com/-jE2YTJ45AF8/Tu89a2IWgOI/AAAAAAAACzg/k2g2ppPdwxY/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687832385808662754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We can also purge at the composite, as opposed to the compositeInstance level&lt;br /&gt;&lt;br /&gt;************************************************************************&lt;br /&gt;&lt;br /&gt;      public void deleteCompositeInstancesNoAudit(String compositeName, int state) throws Exception {&lt;br /&gt;          System.out.println("deleteCompositeInstancesNoAudit() for composite " + compositeName + " with state " + state );&lt;br /&gt;          Locator locator = null;&lt;br /&gt;          try {&lt;br /&gt;              locator = this.getLocator();&lt;br /&gt;              CompositeFilter compositeFilter = new CompositeFilter();  &lt;br /&gt;              compositeFilter.setCompositeDN(compositeName);&lt;br /&gt;              &lt;br /&gt;              CompositeInstanceFilter instanceFilter = new CompositeInstanceFilter();&lt;br /&gt;              instanceFilter.setState(state);&lt;br /&gt;             &lt;br /&gt;              //Get composite from the domain based on the filter given&lt;br /&gt;              List&lt;Composite&gt; l_composites =&lt;br /&gt;              locator.getComposites(compositeFilter); &lt;br /&gt;              &lt;br /&gt;              //Iterate through the composites.&lt;br /&gt;              Iterator compositeIter = l_composites.iterator();&lt;br /&gt;              while (compositeIter.hasNext()) {&lt;br /&gt;                  Composite composite = (Composite)compositeIter.next();&lt;br /&gt;                  System.out.println("About to purge "+ composite.getInstances(instanceFilter).size() + " instances... ");&lt;br /&gt;                  composite.purgeInstances(instanceFilter);&lt;br /&gt;                  &lt;br /&gt;              }    &lt;br /&gt;              &lt;br /&gt;          }&lt;br /&gt;          catch (Exception e){&lt;br /&gt;              e.printStackTrace();&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;******************************************************************************&lt;br /&gt;&lt;br /&gt;The composite sensor can be used in em to find instances based on orderID.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-i9KAnBewxsE/Tu9CznJsgYI/AAAAAAAACz4/xc7gJHLfQxs/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 188px;" src="http://4.bp.blogspot.com/-i9KAnBewxsE/Tu9CznJsgYI/AAAAAAAACz4/xc7gJHLfQxs/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5687838308842635650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We can also purge instances based on the composite sensor value.&lt;br /&gt;My composite sensor is called compSensor_orderID -&lt;br /&gt;&lt;br /&gt;Here is the code -&lt;br /&gt;&lt;br /&gt;**********************************************************************&lt;br /&gt;      public void deleteCompositeInstance4OrderId(String compositeName, String orderID) throws Exception {&lt;br /&gt;          System.out.println("deleteCompositeInstance4OrderId() for composite " + compositeName + " with orderID " + orderID );&lt;br /&gt;          Locator locator = null;&lt;br /&gt;     &lt;br /&gt;          try {&lt;br /&gt;              locator = this.getLocator();&lt;br /&gt;              CompositeInstanceFilter instanceFilter = new CompositeInstanceFilter();&lt;br /&gt;          &lt;br /&gt;              instanceFilter.setCompositeDN(compositeName);&lt;br /&gt;              &lt;br /&gt;              List &lt;SensorFilter&gt; l_sensorFilter = new ArrayList &lt;SensorFilter&gt;();&lt;br /&gt;              SensorFilter sensorFilter = new SensorFilter("compSensor_orderID",Sensor.SensorDataType.STRING,Operator.EQUALS,orderID);&lt;br /&gt;              l_sensorFilter.add(sensorFilter);&lt;br /&gt;              &lt;br /&gt;              instanceFilter.setSensorFilter(l_sensorFilter);&lt;br /&gt;              &lt;br /&gt;              //Get composite from the domain based on the filter given&lt;br /&gt;              List&lt;CompositeInstance&gt; compositeInstances =&lt;br /&gt;              locator.getCompositeInstances(instanceFilter); &lt;br /&gt;      &lt;br /&gt;              System.out.println("*** Found " + compositeInstances.size() + " composite instance(s) for orderID " + orderID);&lt;br /&gt;             &lt;br /&gt;              //Iterate through the composites.&lt;br /&gt;              Iterator compositeIter = compositeInstances.iterator();&lt;br /&gt;              while (compositeIter.hasNext()) {&lt;br /&gt;                  CompositeInstance compositeInstance = (CompositeInstance)compositeIter.next();&lt;br /&gt;                  &lt;br /&gt;                  System.out.println("About to delete instance for orderID = " + orderID);&lt;br /&gt;                  compositeInstance.delete();&lt;br /&gt;                  &lt;br /&gt;              }    &lt;br /&gt;              &lt;br /&gt;          }&lt;br /&gt;          catch (Exception e){&lt;br /&gt;              e.printStackTrace();&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;**********************************************************************&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-5397009684432257565?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/5397009684432257565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=5397009684432257565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/5397009684432257565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/5397009684432257565'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/12/soabpm-apis-manipulating-composites-and.html' title='SOA/BPM APIs - Manipulating Composites and purging instances'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-_J-NdZwQtC8/Tu8IHxmci3I/AAAAAAAACyg/o54atA4cLbg/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-7440012102853681114</id><published>2011-12-14T07:46:00.000-08:00</published><updated>2011-12-14T07:54:13.450-08:00</updated><title type='text'>BPM 11g Feature Pack - Update Task</title><content type='html'>Nice feature -&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-ewwYx5oOavM/TujE5G_aQ-I/AAAAAAAACww/_fKiQk_fN0g/s1600/0.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 340px;" src="http://1.bp.blogspot.com/-ewwYx5oOavM/TujE5G_aQ-I/AAAAAAAACww/_fKiQk_fN0g/s400/0.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5686011014963413986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this scenario I have an order process that includes an event sub-process that listens for order modifications. Once a modification is received, the payload is updated and the original User Task is withdrawn/resubmitted.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-Gtkv-YbajX0/TujFaqVfiRI/AAAAAAAACw8/SvdFC4Wyf80/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 217px;" src="http://4.bp.blogspot.com/-Gtkv-YbajX0/TujFaqVfiRI/AAAAAAAACw8/SvdFC4Wyf80/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5686011591386958098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Full lab doc at &lt;br /&gt;https://docs.google.com/open?id=0B7YrnfO7h717ZjdlY2Q1YzctYjhiYi00ZTQ2LWIxZmEtODY5YTI3ZTdmZmE3&lt;br /&gt;&lt;br /&gt;JDev app at &lt;br /&gt;&lt;br /&gt;https://docs.google.com/open?id=0B7YrnfO7h717MzhjNzcyYjQtOWM1OS00MDA5LTk5N2MtYjhhOGRlY2VjNTEz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-7440012102853681114?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/7440012102853681114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=7440012102853681114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7440012102853681114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7440012102853681114'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/12/bpm-11g-feature-pack-update-task.html' title='BPM 11g Feature Pack - Update Task'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ewwYx5oOavM/TujE5G_aQ-I/AAAAAAAACww/_fKiQk_fN0g/s72-c/0.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-7707837739901468337</id><published>2011-12-14T01:40:00.001-08:00</published><updated>2011-12-14T01:55:08.054-08:00</updated><title type='text'>BPM 11g Feature Pack - Parametric Roles</title><content type='html'>In this simple example, I create a parametric role for Sales based on area and custStatus.&lt;br /&gt;&lt;br /&gt;Here is the XSD -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-aYxYy1qBDgg/TuhwII1SRdI/AAAAAAAACwY/W9upq0orqpg/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 342px;" src="http://1.bp.blogspot.com/-aYxYy1qBDgg/TuhwII1SRdI/AAAAAAAACwY/W9upq0orqpg/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5685917814667494866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My sales force is jcooper, mtwain, cdickens and wfaulk.&lt;br /&gt;Responsibilities are as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-3PCZ6g_f6Cg/TuhwcV2uVaI/AAAAAAAACwk/NClzBE6Kn2w/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 80px;" src="http://2.bp.blogspot.com/-3PCZ6g_f6Cg/TuhwcV2uVaI/AAAAAAAACwk/NClzBE6Kn2w/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5685918161760572834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The broad steps are as follows -&lt;br /&gt;&lt;br /&gt;1. Create 2 org units in BPM workspace - EMEA SALES and APAC SALES&lt;br /&gt;2. Add users appropriately&lt;br /&gt;3. Create Extended user properties for area and status&lt;br /&gt;4. Map the properties to the users e.g. jcooper property area will be set to EMEA.&lt;br /&gt;5. Create a parametric role that leverages the properties.&lt;br /&gt;&lt;br /&gt;6. Create your BPM app&lt;br /&gt;7. Add a User Task - Set participant list to parametric roles and configure&lt;br /&gt;8. Deploy and test&lt;br /&gt;&lt;br /&gt;Full description at -&lt;br /&gt;&lt;br /&gt;https://docs.google.com/open?id=0B7YrnfO7h717M2U1MTlmMmEtZjI3Mi00ZTNhLWFhNTQtYzkyZjc5OGI5Y2I4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-7707837739901468337?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/7707837739901468337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=7707837739901468337' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7707837739901468337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7707837739901468337'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/12/bpm-11g-feature-pack-parametric-roles.html' title='BPM 11g Feature Pack - Parametric Roles'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-aYxYy1qBDgg/TuhwII1SRdI/AAAAAAAACwY/W9upq0orqpg/s72-c/1.GIF' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-4848154401772328344</id><published>2011-12-05T00:35:00.000-08:00</published><updated>2011-12-05T00:58:59.187-08:00</updated><title type='text'>Oracle Enterprise Gateway (OEG) - changing the default Alert subject</title><content type='html'>Merci beaucoup Isabelle for the pointer!&lt;br /&gt;&lt;br /&gt;Here is an example email output from a lab I created.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-gMouZIXYT-s/TtyC1GAgSyI/AAAAAAAACvE/U-mzWNEqhk0/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 118px;" src="http://3.bp.blogspot.com/-gMouZIXYT-s/TtyC1GAgSyI/AAAAAAAACvE/U-mzWNEqhk0/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5682560678492130082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now you notice that the subject defaults to &lt;span style="font-weight:bold;"&gt;Alert from Vordel&lt;/span&gt;. You will probably want to change this. To do this we need to add a new Subject to the default Alert configuration.&lt;br /&gt;&lt;br /&gt;Start &lt;span style="font-weight:bold;"&gt;esexplorer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-129YM1hUz18/TtyDHScD7MI/AAAAAAAACvQ/Z75hYysFz4U/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 191px;" src="http://3.bp.blogspot.com/-129YM1hUz18/TtyDHScD7MI/AAAAAAAACvQ/Z75hYysFz4U/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5682560991066582210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-a6YfVJP7Mtk/TtyDdivFc-I/AAAAAAAACvo/Id8y6huxhro/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 181px;" src="http://2.bp.blogspot.com/-a6YfVJP7Mtk/TtyDdivFc-I/AAAAAAAACvo/Id8y6huxhro/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5682561373398463458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Point to your OEG configuration file&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-84afuRGQMPk/TtyDdc4PV_I/AAAAAAAACvc/u5ULZNa5DbM/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 216px;" src="http://3.bp.blogspot.com/-84afuRGQMPk/TtyDdc4PV_I/AAAAAAAACvc/u5ULZNa5DbM/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5682561371826247666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Select the Default Alert Configuration – then the SysAlert you already created.&lt;br /&gt;Right-click --&gt; Create a Subject&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-nntOZNL1Lqs/TtyDxwKyd4I/AAAAAAAACv0/U7qjdMKxUTg/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 152px;" src="http://4.bp.blogspot.com/-nntOZNL1Lqs/TtyDxwKyd4I/AAAAAAAACv0/U7qjdMKxUTg/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5682561720601704322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Set to a value of your choice &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-eV4noxRIDOc/TtyD96-l_5I/AAAAAAAACwA/7TOe6ywiDXw/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 206px;" src="http://3.bp.blogspot.com/-eV4noxRIDOc/TtyD96-l_5I/AAAAAAAACwA/7TOe6ywiDXw/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5682561929661775762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Start your email server e.g. James&lt;br /&gt;Start the gateway&lt;br /&gt;Test&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-olKr3ic4YQU/TtyEKnre3fI/AAAAAAAACwM/WPHToMLDOQU/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 157px;" src="http://3.bp.blogspot.com/-olKr3ic4YQU/TtyEKnre3fI/AAAAAAAACwM/WPHToMLDOQU/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5682562147819642354" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-4848154401772328344?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/4848154401772328344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=4848154401772328344' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/4848154401772328344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/4848154401772328344'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/12/oracle-enterprise-gateway-oeg-changing.html' title='Oracle Enterprise Gateway (OEG) - changing the default Alert subject'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-gMouZIXYT-s/TtyC1GAgSyI/AAAAAAAACvE/U-mzWNEqhk0/s72-c/1.GIF' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-2822618293354203231</id><published>2011-11-24T00:31:00.000-08:00</published><updated>2011-11-25T00:05:15.228-08:00</updated><title type='text'>BPM 11g feature pack - Notification Task</title><content type='html'>Nice feature -&lt;br /&gt;&lt;br /&gt;In this simple scenario I receive an order containing, among other data, the customer's email address.&lt;br /&gt;First thing I do is send an email confirming receipt of the order.&lt;br /&gt;&lt;br /&gt;As usual I'm using JAMES as my email server -&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 - Create some users on JAMES &lt;/strong&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-NJ1GRI9PtOk/Ts4CMYAHMKI/AAAAAAAACsY/B3p1jZVWHlg/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 358px;" src="http://1.bp.blogspot.com/-NJ1GRI9PtOk/Ts4CMYAHMKI/AAAAAAAACsY/B3p1jZVWHlg/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678478591785382050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2- Configure the EMAIL properties on the SOA Server &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Set Workflow Notification Properties:&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-5IGpVKFA75Y/Ts4CsOg5s5I/AAAAAAAACss/yDFIRYdYiis/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 314px; height: 400px;" src="http://2.bp.blogspot.com/-5IGpVKFA75Y/Ts4CsOg5s5I/AAAAAAAACss/yDFIRYdYiis/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678479138994369426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-bmYItnz7lFY/Ts4Cr5Ht3yI/AAAAAAAACsk/1LUfCt_M9nM/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 261px;" src="http://1.bp.blogspot.com/-bmYItnz7lFY/Ts4Cr5Ht3yI/AAAAAAAACsk/1LUfCt_M9nM/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678479133251591970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Set usermessaging-email-driver properties&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-WAt6YAm1QCA/Ts4EWP-TV5I/AAAAAAAACt4/awoqIdX-bPA/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 379px; height: 400px;" src="http://4.bp.blogspot.com/-WAt6YAm1QCA/Ts4EWP-TV5I/AAAAAAAACt4/awoqIdX-bPA/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678480960452253586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-eAjXH3dZNV4/Ts4EMGT8W_I/AAAAAAAACts/r2C5lTSpFyg/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 281px;" src="http://1.bp.blogspot.com/-eAjXH3dZNV4/Ts4EMGT8W_I/AAAAAAAACts/r2C5lTSpFyg/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678480786059975666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-AvXL6PnmDB4/Ts4ELFAhBqI/AAAAAAAACtk/u928qqezpqs/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 195px;" src="http://2.bp.blogspot.com/-AvXL6PnmDB4/Ts4ELFAhBqI/AAAAAAAACtk/u928qqezpqs/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678480768530187938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-N-yJJrOpacw/Ts4EK5Y0aNI/AAAAAAAACtU/t6VKkArTNaA/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 150px;" src="http://4.bp.blogspot.com/-N-yJJrOpacw/Ts4EK5Y0aNI/AAAAAAAACtU/t6VKkArTNaA/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678480765410896082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-kq6RRe1mokk/Ts4EKH9eIOI/AAAAAAAACtM/Aw-NFwnBqbM/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 178px;" src="http://3.bp.blogspot.com/-kq6RRe1mokk/Ts4EKH9eIOI/AAAAAAAACtM/Aw-NFwnBqbM/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678480752142852322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-LBTafEXUB-o/Ts4EJ11kl9I/AAAAAAAACs8/YVXWiG-K2Fk/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 163px;" src="http://4.bp.blogspot.com/-LBTafEXUB-o/Ts4EJ11kl9I/AAAAAAAACs8/YVXWiG-K2Fk/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678480747277883346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 3 Create a simple BPM App &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ioN6A5KejTc/Ts4FdKBFL6I/AAAAAAAACuI/2jbsBlxbmzU/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 349px;" src="http://2.bp.blogspot.com/-ioN6A5KejTc/Ts4FdKBFL6I/AAAAAAAACuI/2jbsBlxbmzU/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678482178624008098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I use the File Adapter to read in the orders.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-8i9msiPqilA/Ts4F-bpe3WI/AAAAAAAACuU/C9Xb80Npk84/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 100px;" src="http://4.bp.blogspot.com/-8i9msiPqilA/Ts4F-bpe3WI/AAAAAAAACuU/C9Xb80Npk84/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678482750292548962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My XSD / input XML is as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-A0GFRcG4nTk/Ts4IYdtvw8I/AAAAAAAACus/psMQhp7ea18/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 213px;" src="http://1.bp.blogspot.com/-A0GFRcG4nTk/Ts4IYdtvw8I/AAAAAAAACus/psMQhp7ea18/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678485396547158978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 4. Deploy and Test&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-NeHvjw-_9vE/Ts4IwvyMiwI/AAAAAAAACu4/8Zd9CVlXgDI/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 94px;" src="http://3.bp.blogspot.com/-NeHvjw-_9vE/Ts4IwvyMiwI/AAAAAAAACu4/8Zd9CVlXgDI/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5678485813714520834" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-2822618293354203231?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/2822618293354203231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=2822618293354203231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2822618293354203231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2822618293354203231'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/11/bpm-11g-feature-pack-notification-task.html' title='BPM 11g feature pack - Notification Task'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-NJ1GRI9PtOk/Ts4CMYAHMKI/AAAAAAAACsY/B3p1jZVWHlg/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-6958395112318334361</id><published>2011-11-20T23:48:00.000-08:00</published><updated>2011-11-20T23:52:59.551-08:00</updated><title type='text'>Oracle Weblogic 12c launch</title><content type='html'>December 1st -&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hear, with your fellow IT managers, architects, and developers, how the new release of Oracle WebLogic Server is:&lt;br /&gt;&lt;br /&gt;    Designed to help you seamlessly move into the public or private cloud with an open, standards-based platform&lt;br /&gt;    Built to drive higher value for your current infrastructure and significantly reduce development time and cost&lt;br /&gt;    Optimized to run your solutions for Java Platform, Enterprise Edition (Java EE); Oracle Fusion Middleware; and Oracle Fusion Applications&lt;br /&gt;    Enhanced with transformational platforms and technologies such as Java EE 6, Oracle’s Active GridLink for RAC, Oracle Traffic Director, and Oracle Virtual Assembly Builder &lt;br /&gt;&lt;br /&gt;Simply register at -&lt;br /&gt;https://event.on24.com/eventRegistration/EventLobbyServlet?target=registration.jsp&amp;eventid=375727&amp;sessionid=1&amp;key=108E7A597FD93F05D40355E5A6A5F60C&amp;partnerref=Oracle_Internal_Email_Lists&amp;sourcepage=register&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-6958395112318334361?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/6958395112318334361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=6958395112318334361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6958395112318334361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6958395112318334361'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/11/oracle-weblogic-12c-launch.html' title='Oracle Weblogic 12c launch'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-6485143682509086960</id><published>2011-11-18T04:25:00.000-08:00</published><updated>2011-11-18T04:30:22.603-08:00</updated><title type='text'>Oracle SOA Suite HealthCare Integration</title><content type='html'>Officially released last month and well worth looking into for integration projects in the health care space. So if your customer is looking at HL7 over MLLP - then look no further.&lt;br /&gt;&lt;br /&gt;http://www.oracle.com/technetwork/middleware/healthcare/overview/index.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-6485143682509086960?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/6485143682509086960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=6485143682509086960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6485143682509086960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6485143682509086960'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/11/oracle-soa-suite-healthcare-integration.html' title='Oracle SOA Suite HealthCare Integration'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-1679000243273125134</id><published>2011-10-29T03:59:00.000-07:00</published><updated>2011-10-29T04:15:35.086-07:00</updated><title type='text'>BPM 11g Feature Pack - Correlation</title><content type='html'>Simple example to show feature pack correlation at work -&lt;br /&gt;&lt;br /&gt;Scenario: we have 2 BPM processes one for processing orders and one for cancelling orders&lt;br /&gt;&lt;br /&gt;1.MyOrderProcess - does the order approvals etc. Orders arrive via the FileAdapter &lt;br /&gt; (ReadOrder – / inOrders directory).&lt;br /&gt;&lt;br /&gt;2. MyCancelOrderProcess – processes order cancellations and informs the OrderProcess. Order cancellations arrive via the FileAdapter (CancelOrder - /inCancellations directory).&lt;br /&gt;&lt;br /&gt;When a cancellation message arrives, OrderProcess is informed – order processing is terminated and an audit message is written to a file (AuditOrder/audit directory)&lt;br /&gt;&lt;br /&gt;So we need correlation between the 2 - we do this essentially the same way as we do in BPEL.&lt;br /&gt;&lt;br /&gt;We create the same correlation keys/properties in both processes - based on the orderID.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Bq6JqKNjg3U/TqvgOQD6rMI/AAAAAAAACpM/hgYOWSSgf_8/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 204px;" src="http://1.bp.blogspot.com/-Bq6JqKNjg3U/TqvgOQD6rMI/AAAAAAAACpM/hgYOWSSgf_8/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5668871091410087106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-gIT1js49jYk/TqvgOHYqMHI/AAAAAAAACpE/BYTUQW4HS2E/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 291px;" src="http://4.bp.blogspot.com/-gIT1js49jYk/TqvgOHYqMHI/AAAAAAAACpE/BYTUQW4HS2E/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5668871089081167986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-ZNe-x3KixPk/TqvgFTVij0I/AAAAAAAACo4/Ni6LteDm4no/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 174px;" src="http://1.bp.blogspot.com/-ZNe-x3KixPk/TqvgFTVij0I/AAAAAAAACo4/Ni6LteDm4no/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5668870937670487874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-NU-aOJSmbec/TqvgFJvqPzI/AAAAAAAACos/06tYPCp8BLY/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 260px; height: 281px;" src="http://4.bp.blogspot.com/-NU-aOJSmbec/TqvgFJvqPzI/AAAAAAAACos/06tYPCp8BLY/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5668870935095689010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-PO93vzT3RME/TqvgEgKD2nI/AAAAAAAACog/y442puFxjgc/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 393px; height: 400px;" src="http://3.bp.blogspot.com/-PO93vzT3RME/TqvgEgKD2nI/AAAAAAAACog/y442puFxjgc/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5668870923932129906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-VQBsTrlnhVI/TqvgEdw0J7I/AAAAAAAACoQ/SFTtaBAxWdc/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 324px;" src="http://3.bp.blogspot.com/-VQBsTrlnhVI/TqvgEdw0J7I/AAAAAAAACoQ/SFTtaBAxWdc/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5668870923289372594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-8SG8Xf2lcoE/TqvgEOsTkVI/AAAAAAAACoI/fAZ4mAquYiA/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 388px; height: 400px;" src="http://1.bp.blogspot.com/-8SG8Xf2lcoE/TqvgEOsTkVI/AAAAAAAACoI/fAZ4mAquYiA/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5668870919243927890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Full lab doc at&lt;br /&gt;&lt;br /&gt;https://docs.google.com/open?id=0B7YrnfO7h717YWIxYjFlMDEtMDQzZi00ZTJiLThmYmEtMDg2NjE2Mjc3NzI4&lt;br /&gt;&lt;br /&gt;App at -&lt;br /&gt;&lt;br /&gt;https://docs.google.com/open?id=0B7YrnfO7h717MTJiMWZhM2QtYzFlOS00MjRmLTkyZGUtNTYzODM2MzYxMzIy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-1679000243273125134?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/1679000243273125134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=1679000243273125134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1679000243273125134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1679000243273125134'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/10/bpm-11g-feature-pack-correlation.html' title='BPM 11g Feature Pack - Correlation'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-Bq6JqKNjg3U/TqvgOQD6rMI/AAAAAAAACpM/hgYOWSSgf_8/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-1720911284125652807</id><published>2011-10-25T07:11:00.000-07:00</published><updated>2011-10-25T07:22:43.308-07:00</updated><title type='text'>running 64bit virtual box image on WinXP</title><content type='html'>I had an issue with this last week during a BPM 11g workshop in the Netherlands.&lt;br /&gt;We provided a 64 bit linux image running BPM11g but we couldn't get this to start on WinXP. We got the follow error -&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Wp8gRZ6iS30/TqbFlKmbiYI/AAAAAAAACmg/pcf7j4a-FzQ/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 91px;" src="http://4.bp.blogspot.com/-Wp8gRZ6iS30/TqbFlKmbiYI/AAAAAAAACmg/pcf7j4a-FzQ/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5667434423383722370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We ensured that the BIOS virtualisation settings were ok. &lt;br /&gt;Then we read the documentation -&lt;br /&gt;http://www.virtualbox.org/manual/ch03.html#intro-64bitguests&lt;br /&gt;&lt;br /&gt;always a good thing to do...&lt;br /&gt;&lt;br /&gt;As a result we made the following changes -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-FuyLw-zzsxc/TqbFk8hvGAI/AAAAAAAACmU/OigEXEjDemo/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 340px;" src="http://3.bp.blogspot.com/-FuyLw-zzsxc/TqbFk8hvGAI/AAAAAAAACmU/OigEXEjDemo/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5667434419605936130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1. Checked the boxes on the System --&gt; acceleration tab&lt;br /&gt;2. Changed the &lt;strong&gt;OS Type&lt;/strong&gt; from Oracle to Oracle 64 bit.&lt;br /&gt;&lt;br /&gt;re-started...&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-oMgOC36JwLA/TqbFknEj2QI/AAAAAAAACmI/4bHLNsgW8pc/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 325px; height: 400px;" src="http://2.bp.blogspot.com/-oMgOC36JwLA/TqbFknEj2QI/AAAAAAAACmI/4bHLNsgW8pc/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5667434413846419714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cheers Cosmin!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-1720911284125652807?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/1720911284125652807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=1720911284125652807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1720911284125652807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1720911284125652807'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/10/running-64bit-virtual-box-image-on.html' title='running 64bit virtual box image on WinXP'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Wp8gRZ6iS30/TqbFlKmbiYI/AAAAAAAACmg/pcf7j4a-FzQ/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-2763899447472654527</id><published>2011-10-24T00:26:00.000-07:00</published><updated>2011-10-24T00:31:26.504-07:00</updated><title type='text'>BPM Workspace --&gt; issue loading ADF task flows</title><content type='html'>My colleague Flavius Sana takes the kudos for the following "guest" post. &lt;br /&gt;This issue can occur when working with BPM VM images. -&lt;br /&gt;&lt;br /&gt;Probably you encountered this problem before. In BPM Workspace when you try to open a task form you get something like this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Ng8EN4nA9A8/TqUT_EGqF4I/AAAAAAAACl8/Ht1yVGbTris/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 306px;" src="http://2.bp.blogspot.com/-Ng8EN4nA9A8/TqUT_EGqF4I/AAAAAAAACl8/Ht1yVGbTris/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5666957680269989762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The application is trying to load the task form from a different address (like localhost). You can solve the problem by creating an alias in the local hosts file and …&lt;br /&gt;Go to sqlplus and login into soainfra &lt;br /&gt;$ sqlplus dev_soainfra/&lt;your_password&gt;&lt;br /&gt;And at the SQL prompt:&lt;br /&gt;SQL&gt;update WFTASKDISPLAY set hostname='soabpm_vm.local';&lt;br /&gt;SQL&gt;commit;&lt;br /&gt;Your problems have been solved:&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-2763899447472654527?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/2763899447472654527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=2763899447472654527' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2763899447472654527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2763899447472654527'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/10/bpm-workspace-issue-loading-adf-task.html' title='BPM Workspace --&gt; issue loading ADF task flows'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Ng8EN4nA9A8/TqUT_EGqF4I/AAAAAAAACl8/Ht1yVGbTris/s72-c/1.GIF' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-5023444994708716687</id><published>2011-10-14T08:11:00.000-07:00</published><updated>2011-10-14T08:42:34.454-07:00</updated><title type='text'>OEG - Oracle Enterprise Gateway - McAfee Anti-Virus</title><content type='html'>OEG can work in concert with various anti-virus tools such as CLAM AV, McAfee and Sophos.&lt;br /&gt;&lt;br /&gt;This post details the setup for McAfee.&lt;br /&gt;&lt;br /&gt;In my example OEG and McAfee are installed on the same machine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-QNeNvTN4BlY/TphTTYm8twI/AAAAAAAACkw/nkR-QvpTzBY/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 122px;" src="http://4.bp.blogspot.com/-QNeNvTN4BlY/TphTTYm8twI/AAAAAAAACkw/nkR-QvpTzBY/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5663368123906832130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Copy the following .dat files from McAfee to OEG_Home/conf/plugin/mcafee/datv2&lt;br /&gt;- avvclean.dat&lt;br /&gt;- avvnames.dat&lt;br /&gt;- avvscan.dat&lt;br /&gt;&lt;br /&gt;You will have to create /mcafee/datv2 beforehand&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-TeQ-dPhIIfU/TphTTAKb19I/AAAAAAAACkk/-yVX_Uii184/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 272px;" src="http://2.bp.blogspot.com/-TeQ-dPhIIfU/TphTTAKb19I/AAAAAAAACkk/-yVX_Uii184/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5663368117344786386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Copy config.dat to OEG_Home/win32/lib&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-VjwuEjV-1iw/TphTSmobAaI/AAAAAAAACkY/ebNa_Cpz9KI/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 227px;" src="http://4.bp.blogspot.com/-VjwuEjV-1iw/TphTSmobAaI/AAAAAAAACkY/ebNa_Cpz9KI/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5663368110491238818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Copy mcscan32.dll to /win32/lib &lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-FsedFzlbHq0/TphTSoir6eI/AAAAAAAACkI/EIpXwuCBlRE/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 360px;" src="http://4.bp.blogspot.com/-FsedFzlbHq0/TphTSoir6eI/AAAAAAAACkI/EIpXwuCBlRE/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5663368111004051938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Restart OEG&lt;br /&gt;Create a Policy for VirusChecking –&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-BMrc2JUEC9E/TphTSbMUOwI/AAAAAAAACkA/oqlRlpQKY-I/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 133px;" src="http://4.bp.blogspot.com/-BMrc2JUEC9E/TphTSbMUOwI/AAAAAAAACkA/oqlRlpQKY-I/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5663368107420564226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add the McAfee filter – configuring as follows &lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-xfVVb0qhGy8/TphXQULrjWI/AAAAAAAAClo/KCjxZHHlVv0/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 337px; height: 400px;" src="http://3.bp.blogspot.com/-xfVVb0qhGy8/TphXQULrjWI/AAAAAAAAClo/KCjxZHHlVv0/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5663372469225622882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We are using the custom setting as we want to test with the EICAR test data -&lt;br /&gt;checking the Scan for Test Files option.&lt;br /&gt;For more on EICAR please refer to http://eicar.org/86-0-Intended-use.html&lt;br /&gt;&lt;br /&gt;Add a Reflect filter&lt;br /&gt;Add a relative path /VirusCheck&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-_4AfZ9uX4Dg/TphXQU7aX1I/AAAAAAAAClg/LSw6VlzSSaw/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 249px;" src="http://2.bp.blogspot.com/-_4AfZ9uX4Dg/TphXQU7aX1I/AAAAAAAAClg/LSw6VlzSSaw/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5663372469425823570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Deploy and Test&lt;/strong&gt;&lt;br /&gt;We will use the EICAR test file to test the ant-virus filter.&lt;br /&gt;http://eicar.org/86-0-Intended-use.html&lt;br /&gt;Create a new .txt file (e.g. virusTester.txt) and copy and paste in the EICAR data&lt;br /&gt;You may get the following message from McAfee&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-JSOCDvtymjQ/TphXP2XnFoI/AAAAAAAAClY/0ix5Tbx3KGU/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 198px;" src="http://1.bp.blogspot.com/-JSOCDvtymjQ/TphXP2XnFoI/AAAAAAAAClY/0ix5Tbx3KGU/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5663372461222598274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So just disable the McAfee on-access scan for the duration of this test.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-lLEKPGq0fZw/TphXPuq7JZI/AAAAAAAAClE/8Xsab9QcgOY/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 65px;" src="http://4.bp.blogspot.com/-lLEKPGq0fZw/TphXPuq7JZI/AAAAAAAAClE/8Xsab9QcgOY/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5663372459156120978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In Service Explorer, add this file as an attachment to your message&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-R97QCMSQfTo/TphXPriG1VI/AAAAAAAACk8/kCVZSbILYFs/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 208px;" src="http://3.bp.blogspot.com/-R97QCMSQfTo/TphXPriG1VI/AAAAAAAACk8/kCVZSbILYFs/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5663372458313831762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;Notice the test seems to have been successful, however, our attachment has been deleted.&lt;br /&gt;&lt;br /&gt;Look at the trace file –&lt;br /&gt;&lt;br /&gt;You will see -&lt;br /&gt;&lt;br /&gt;ERROR   13/Oct/2011:15:32:17.968 [168c]     message is infected with EICAR test file&lt;br /&gt;&lt;br /&gt;ERROR   13/Oct/2011:15:32:17.968 [168c]     cannot repair object, mark it for removing.&lt;br /&gt;&lt;br /&gt;INFO    13/Oct/2011:15:32:17.968 [168c]     remove infected message part 'virusTester.txt'&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Full trace -&lt;/strong&gt;&lt;br /&gt;DEBUG   13/Oct/2011:15:32:04.875 [168c] run filter [McAfee Anti-Virus] {&lt;br /&gt;DATA    13/Oct/2011:15:32:04.890 [168c]     getting class com.vordel.security.antivirus.McAfeeScanner with classLoader.loadClass()&lt;br /&gt;DATA    13/Oct/2011:15:32:04.890 [168c]     loaded class com.vordel.security.antivirus.McAfeeScanner&lt;br /&gt;DEBUG   13/Oct/2011:15:32:04.890 [168c]     registered scanner class&lt;br /&gt;DEBUG   13/Oct/2011:15:32:04.890 [168c]     data files in D:\Work\envs\OEG\Gateway\enterprisegateway\conf\plugin\mcafee\datv2&lt;br /&gt;DEBUG   13/Oct/2011:15:32:04.890 [168c]     using McAfee V2 interface&lt;br /&gt;DEBUG   13/Oct/2011:15:32:04.890 [168c]     data file: D:\Work\envs\OEG\Gateway\enterprisegateway\conf\plugin\mcafee\datv2\avvclean.dat&lt;br /&gt;DEBUG   13/Oct/2011:15:32:04.906 [168c]     data file: D:\Work\envs\OEG\Gateway\enterprisegateway\conf\plugin\mcafee\datv2\avvnames.dat&lt;br /&gt;DEBUG   13/Oct/2011:15:32:04.906 [168c]     data file: D:\Work\envs\OEG\Gateway\enterprisegateway\conf\plugin\mcafee\datv2\avvscan.dat&lt;br /&gt;DEBUG   13/Oct/2011:15:32:04.906 [168c]     engine location: D:\Work\envs\OEG\Gateway\enterprisegateway\win32\lib&lt;br /&gt;DEBUG   13/Oct/2011:15:32:08.281 [1a34] opdb commit loop: sleep for max 5000ms&lt;br /&gt;DATA    13/Oct/2011:15:32:08.671 [1368] DataSource after getConnection {numActive = 1, numIdle = 0}&lt;br /&gt;DEBUG   13/Oct/2011:15:32:13.281 [1a34] opdb commit loop: sleep for max 5000ms&lt;br /&gt;DATA    13/Oct/2011:15:32:13.687 [1368] DataSource after getConnection {numActive = 1, numIdle = 0}&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.796 [168c]     AV initialised, support level: AVU_FULLYSUPPORTED&lt;br /&gt;INFO    13/Oct/2011:15:32:17.796 [168c]     McAfee scanner initialised.&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.812 [168c]     begin processing compound body 'anonymous' (0 parts)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.812 [168c]     snd 0025: &lt;HTTP/1.1 100 Continue  &gt;&lt;br /&gt;DATA    13/Oct/2011:15:32:17.812 [168c]     rcv 746 from max of 1658: &lt;000002d9  --VORDEL-SOAPBOX-MULTIPART-BOUNDARY-0.17758321916921194 Content-Type: text/xml  &lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;&lt;br /&gt;&lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;br /&gt;&lt;soap:Body&gt;&lt;br /&gt;&lt;WL50:validateCard xmlns:WL50="http://validatecc/"&gt;&lt;br /&gt;&lt;!-- Element must appear exactly once --&gt;&lt;br /&gt;&lt;WL50:cardType&gt;AMEX&lt;/WL50:cardType&gt;&lt;br /&gt;&lt;!-- Element must appear exactly once --&gt;&lt;br /&gt;&lt;WL50:cardNr&gt;12345678&lt;/WL50:cardNr&gt;&lt;br /&gt;&lt;/WL50:validateCard&gt;&lt;br /&gt;&lt;/soap:Body&gt;&lt;br /&gt;&lt;/soap:Envelope&gt;&lt;br /&gt; --VORDEL-SOAPBOX-MULTIPART-BOUNDARY-0.17758321916921194 Content-ID: virusTester.txt Content-Type: text/plain  X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*  --VORDEL-SOAPBOX-MULTIPART-BOUNDARY-0.17758321916921194--  0  &gt;&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.828 [168c]     new buffered content factory 06C029F8&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.828 [168c]     buffered content 06C029F8, size=0/4&lt;br /&gt;DATA    13/Oct/2011:15:32:17.828 [168c]     getting class com.vordel.dwe.ContentBuffer with classLoader.loadClass()&lt;br /&gt;DATA    13/Oct/2011:15:32:17.828 [168c]     loaded class com.vordel.dwe.ContentBuffer&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.828 [168c]     [06C029F8] new chunk 06E87408 from 06E016D8 to 06E01865 (397)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.828 [168c]     new content stack 00BB6B98&lt;br /&gt;DATA    13/Oct/2011:15:32:17.828 [168c]     push source buffered onto 00BB6B98&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.828 [168c]     handle type text/xml with factory class com.vordel.mime.XMLBody$Factory&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.843 [168c]     new buffered content factory 0AB508B8&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.843 [168c]     buffered content 0AB508B8, size=0/4&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.843 [168c]     [0AB508B8] new chunk 07070EF8 from 00BFA7A8 to 00BFA7EE (70)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.843 [168c]     new content stack 00BB6BB0&lt;br /&gt;DATA    13/Oct/2011:15:32:17.843 [168c]     push source buffered onto 00BB6BB0&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.843 [168c]     handle type text/plain with factory class com.vordel.mime.Body$1&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.843 [168c]     begin processing body part 'anonymous'&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.843 [168c]     start: buffer() null&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.843 [168c]     start: use new buffer for null&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.843 [168c]     new buffered content factory 06E84B58&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.843 [168c]     buffered content 06E84B58, size=0/4&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.843 [168c]     start: copy to the new buffer for null&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.859 [168c]     new buffered content stream 0AD771D0&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.859 [168c]     [06E84B58] new chunk 06E44118 from 07060B70 to 07060CFD (397)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.859 [168c]     delete buffered content stream 0AD771D0&lt;br /&gt;DATA    13/Oct/2011:15:32:17.859 [168c]     new content stack 00BB6B80&lt;br /&gt;DATA    13/Oct/2011:15:32:17.859 [168c]     push source buffered onto 00BB6B80&lt;br /&gt;DATA    13/Oct/2011:15:32:17.859 [168c]     getting class com.vordel.security.antivirus.McAfeeScanner with classLoader.loadClass()&lt;br /&gt;DATA    13/Oct/2011:15:32:17.859 [168c]     loaded class com.vordel.security.antivirus.McAfeeScanner&lt;br /&gt;DATA    13/Oct/2011:15:32:17.859 [168c]     getting class com.vordel.dwe.NativeContentSource with classLoader.loadClass()&lt;br /&gt;DATA    13/Oct/2011:15:32:17.859 [168c]     loaded class com.vordel.dwe.NativeContentSource&lt;br /&gt;DATA    13/Oct/2011:15:32:17.859 [168c]     getting class com.vordel.security.antivirus.McAfeeScannerConfig with classLoader.loadClass()&lt;br /&gt;DATA    13/Oct/2011:15:32:17.859 [168c]     loaded class com.vordel.security.antivirus.McAfeeScannerConfig&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.859 [168c]     scanner will remove any infected objects.&lt;br /&gt;INFO    13/Oct/2011:15:32:17.859 [168c]     Custom scan&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.859 [168c]     AVP_REPAIR&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.859 [168c]     AVP_SERVER&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.859 [168c]     AVP_SCANALLFILES&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.859 [168c]     scan level 3&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.875 [168c]     decompress archives&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.875 [168c]     decompress exes&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.875 [168c]     heuristic program analysis&lt;br /&gt;DATA    13/Oct/2011:15:32:17.875 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0D0CA12C)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.875 [168c]     deferred IO request AVIORQ_PATHNAME&lt;br /&gt;DATA    13/Oct/2011:15:32:17.875 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.875 [168c]     deferred IO request AVIORQ_SIZE&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.875 [168c]     body size: 397&lt;br /&gt;DATA    13/Oct/2011:15:32:17.875 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.875 [168c]     deferred IO request AVIORQ_ALTERNATENAME&lt;br /&gt;DATA    13/Oct/2011:15:32:17.875 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.875 [168c]     deferred IO request AVIORQ_OPENREAD&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.875 [168c]     new buffered content stream 0AD771D0&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.875 [168c]     open stream for reading, size 397&lt;br /&gt;DATA    13/Oct/2011:15:32:17.875 [168c]     0D0CB958/AVM_OBJECTSTART(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.875 [168c]     0D0CB958/AVM_OBJECTSIZE(0x5,0000018D)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.875 [168c]     0D0CB958/AVM_OBJECTNAME(0x5,10C7B05C)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.890 [168c]     0D0CB958/AVM_QUERYDENYSCAN(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.890 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.890 [168c]     deferred IO request AVIORQ_SEEKSTART&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.890 [168c]     set stream position to 0 (forward).&lt;br /&gt;DATA    13/Oct/2011:15:32:17.890 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.890 [168c]     deferred IO request AVIORQ_READ&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.890 [168c]     read 397 bytes&lt;br /&gt;DATA    13/Oct/2011:15:32:17.890 [168c]     0D0CB958/AVM_QUERYQUITSCANNING(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.890 [168c]     0D0CB958/AVM_QUERYQUITSCANNING(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.890 [168c]     0D0CB958/AVM_OBJECTSUMMARY(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.890 [168c]     0D0CB958/AVM_OBJECTCLOSED(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.890 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.890 [168c]     deferred IO request AVIORQ_CLOSE&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.890 [168c]     delete buffered content stream 0AD771D0&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     close stream, size 397&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     scanner status is [NOVIRUS]&lt;br /&gt;DATA    13/Oct/2011:15:32:17.906 [168c]     pop source of type buffered off 00BB6B80&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     delete buffered content factory 06E84B58&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     [06E84B58] delete chunk 06E44118 from 07060B70 to 07060CFD (397)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.906 [168c]     deleted stack 00BB6B80&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     finish processing body part 'anonymous'&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     begin processing body part 'virusTester.txt'&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     start: buffer() virusTester.txt&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     start: use new buffer for virusTester.txt&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     new buffered content factory 06E84B58&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     buffered content 06E84B58, size=0/4&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.906 [168c]     start: copy to the new buffer for virusTester.txt&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     new buffered content stream 0AD771D0&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     [06E84B58] new chunk 06E43AB0 from 00BCCE80 to 00BCCEC6 (70)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     delete buffered content stream 0AD771D0&lt;br /&gt;DATA    13/Oct/2011:15:32:17.921 [168c]     new content stack 00BB6B80&lt;br /&gt;DATA    13/Oct/2011:15:32:17.921 [168c]     push source buffered onto 00BB6B80&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     scanner will remove any infected objects.&lt;br /&gt;INFO    13/Oct/2011:15:32:17.921 [168c]     Custom scan&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     AVP_REPAIR&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     AVP_SERVER&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     AVP_SCANALLFILES&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     scan level 3&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     decompress archives&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     decompress exes&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.921 [168c]     heuristic program analysis&lt;br /&gt;DATA    13/Oct/2011:15:32:17.921 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0D0CA12C)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.937 [168c]     deferred IO request AVIORQ_PATHNAME&lt;br /&gt;DATA    13/Oct/2011:15:32:17.937 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.937 [168c]     deferred IO request AVIORQ_SIZE&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.937 [168c]     body size: 70&lt;br /&gt;DATA    13/Oct/2011:15:32:17.937 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.937 [168c]     deferred IO request AVIORQ_ALTERNATENAME&lt;br /&gt;DATA    13/Oct/2011:15:32:17.937 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.937 [168c]     deferred IO request AVIORQ_OPENREAD&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.937 [168c]     new buffered content stream 0AD771D0&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.937 [168c]     open stream for reading, size 70&lt;br /&gt;DATA    13/Oct/2011:15:32:17.937 [168c]     0D0CB958/AVM_OBJECTSTART(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.937 [168c]     0D0CB958/AVM_OBJECTSIZE(0x5,00000046)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.937 [168c]     0D0CB958/AVM_OBJECTNAME(0x5,10C7B048)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.953 [168c]     0D0CB958/AVM_QUERYDENYSCAN(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.953 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.953 [168c]     deferred IO request AVIORQ_SEEKSTART&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.953 [168c]     set stream position to 0 (forward).&lt;br /&gt;DATA    13/Oct/2011:15:32:17.953 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.953 [168c]     deferred IO request AVIORQ_READ&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.953 [168c]     read 70 bytes&lt;br /&gt;DATA    13/Oct/2011:15:32:17.953 [168c]     0D0CB958/AVM_QUERYQUITSCANNING(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.953 [168c]     0D0CB958/AVM_QUERYQUITSCANNING(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.953 [168c]     0D0CB958/AVM_OBJECTINFECTED(0x5,0DEF04F0)&lt;br /&gt;&lt;strong&gt;ERROR   13/Oct/2011:15:32:17.968 [168c]     message is infected with EICAR test file&lt;/strong&gt;DEBUG   13/Oct/2011:15:32:17.968 [168c]     callback: scanner status 1&lt;br /&gt;DATA    13/Oct/2011:15:32:17.968 [168c]     0D0CB958/AVM_QUERYDENYREPAIR(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.968 [168c]     0D0CB958/AVM_OBJECTNOTREPAIRED(0x5,0000000C)&lt;br /&gt;ERROR   13/Oct/2011:15:32:17.968 [168c]     cannot repair object, mark it for removing.&lt;br /&gt;DATA    13/Oct/2011:15:32:17.968 [168c]     0D0CB958/AVM_OBJECTSUMMARY(0x5,00000003)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.968 [168c]     0D0CB958/AVM_OBJECTCLOSED(0x5,00000000)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.968 [168c]     0D0CB958/AVM_IOREQUEST(0x0,0DEF6FE8)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.968 [168c]     deferred IO request AVIORQ_CLOSE&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.968 [168c]     delete buffered content stream 0AD771D0&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.968 [168c]     close stream, size 70&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.968 [168c]     native: set scanner status to 3&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.968 [168c]     scanner status is [REMOVED]&lt;br /&gt;INFO    13/Oct/2011:15:32:17.968 [168c]     remove infected message part 'virusTester.txt'&lt;br /&gt;DATA    13/Oct/2011:15:32:17.984 [168c]     pop source of type buffered off 00BB6B80&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.984 [168c]     delete buffered content factory 06E84B58&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.984 [168c]     [06E84B58] delete chunk 06E43AB0 from 00BCCE80 to 00BCCEC6 (70)&lt;br /&gt;DATA    13/Oct/2011:15:32:17.984 [168c]     deleted stack 00BB6B80&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.984 [168c]     finish processing body part 'virusTester.txt'&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.984 [168c]     attempt to remove part virusTester.txt&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.984 [168c]     removed part com.vordel.mime.RawBody@13ad88b/virusTester.txt from partsById&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.984 [168c]     removed part com.vordel.mime.RawBody@13ad88b from allParts&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.984 [168c]     finish processing compound body 'anonymous' (1 parts)&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.984 [168c] } = 1, in 13109 milliseconds&lt;br /&gt;DEBUG   13/Oct/2011:15:32:17.984 [168c] run filter [Reflect message &amp; attributes] {&lt;br /&gt;DEBUG   13/Oct/2011:15:32:18.000 [168c]     qa reflecting request&lt;br /&gt;DEBUG   13/Oct/2011:15:32:18.000 [168c] } = 1, in 0 milliseconds&lt;br /&gt;DEBUG   13/Oct/2011:15:32:18.000 [168c] ..."VirusChecker" complete.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-5023444994708716687?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/5023444994708716687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=5023444994708716687' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/5023444994708716687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/5023444994708716687'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/10/oeg-oracle-enterprise-gateway-mcafee.html' title='OEG - Oracle Enterprise Gateway - McAfee Anti-Virus'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-QNeNvTN4BlY/TphTTYm8twI/AAAAAAAACkw/nkR-QvpTzBY/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-1298777755068424321</id><published>2011-10-11T03:36:00.000-07:00</published><updated>2011-10-11T06:48:09.094-07:00</updated><title type='text'>Installing BPM11g feature pack on Windows</title><content type='html'>The patchset consists essentially of 4 patches that one applies to the&lt;br /&gt;Common Oracle Home and the SOA Home.&lt;br /&gt;&lt;br /&gt;One then updates the DB repository.&lt;br /&gt;&lt;br /&gt;Upgrade JDeveloper&lt;br /&gt;&lt;br /&gt;Do a couple of post install steps and then that's it.&lt;br /&gt;&lt;br /&gt;please refer to my install doc at&lt;br /&gt;https://docs.google.com/leaf?id=0B7YrnfO7h717YzE5YzY4ZmUtYWRmZi00YWUyLWE5MzQtOTMyZTZiMTRiYzU4&amp;hl=en_US&lt;br /&gt;&lt;br /&gt;Then check out otn for the new features doc&lt;br /&gt;http://www.oracle.com/technetwork/middleware/bpm/learnmore/whatsnewbpmfeaturepack-487968.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-1298777755068424321?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/1298777755068424321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=1298777755068424321' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1298777755068424321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1298777755068424321'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/10/installing-bpm11g-feature-pack-on.html' title='Installing BPM11g feature pack on Windows'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-240861942661262817</id><published>2011-10-10T04:51:00.000-07:00</published><updated>2011-10-10T07:36:35.157-07:00</updated><title type='text'>OEG - Oracle Enterprise Gateway Throttling - Part2</title><content type='html'>In this scenario have requests from Gold and Silver customers.&lt;br /&gt;• Gold customers may execute 10 requests per minute&lt;br /&gt;• Silver customers may execute 5 requests per minute&lt;br /&gt;&lt;br /&gt;The customer status is stored in the http header – custStatus.&lt;br /&gt;&lt;br /&gt;I created the following policies in OEG Policy Studio –&lt;br /&gt;&lt;br /&gt;To begin with I create a policy for Silver customers -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-0Znve1HyKvs/TpL4CBx1LZI/AAAAAAAACh4/PYdhY9sAaa8/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 347px; height: 109px;" src="http://2.bp.blogspot.com/-0Znve1HyKvs/TpL4CBx1LZI/AAAAAAAACh4/PYdhY9sAaa8/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661860395279003026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I then create one for gold customers -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-WlfT0Wocwlw/TpL4B8MRhGI/AAAAAAAAChw/hp9OjQmfW1I/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 341px; height: 95px;" src="http://1.bp.blogspot.com/-WlfT0Wocwlw/TpL4B8MRhGI/AAAAAAAAChw/hp9OjQmfW1I/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661860393779299426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I create a 3rd policy - StatusBasedThrottling which essentially does the following -&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;&lt;br /&gt;- Extract the custStatus&lt;br /&gt;- Switch on the custStatus value calling either the gold or silver policy&lt;br /&gt;- Success Path - just reflect the message back to the caller&lt;br /&gt;- Failure Path - trigger an email alert&lt;br /&gt;               - save the request to a message queue for later processing.&lt;br /&gt;&lt;br /&gt;Let's see how each has been defined -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-53soiQp_3fw/TpL5bVjzi2I/AAAAAAAACig/nYThIfyIqJI/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 261px;" src="http://1.bp.blogspot.com/-53soiQp_3fw/TpL5bVjzi2I/AAAAAAAACig/nYThIfyIqJI/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661861929597242210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-qo0GsJ55BBA/TpL5bH5l1CI/AAAAAAAACiY/_3PloM2NjcA/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 291px;" src="http://2.bp.blogspot.com/-qo0GsJ55BBA/TpL5bH5l1CI/AAAAAAAACiY/_3PloM2NjcA/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661861925930521634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-CaPwOMcUr1Y/TpL5a9A0QWI/AAAAAAAACiQ/eRah6RayGYg/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 182px;" src="http://4.bp.blogspot.com/-CaPwOMcUr1Y/TpL5a9A0QWI/AAAAAAAACiQ/eRah6RayGYg/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661861923008037218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-qLjTw-KZF_w/TpL5a2xlipI/AAAAAAAACiI/vbClB_ZftzM/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 282px; height: 297px;" src="http://1.bp.blogspot.com/-qLjTw-KZF_w/TpL5a2xlipI/AAAAAAAACiI/vbClB_ZftzM/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661861921333545618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-asbrWtRDRYw/TpL5amBPQKI/AAAAAAAACiA/XGT96nUv0hA/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 323px;" src="http://2.bp.blogspot.com/-asbrWtRDRYw/TpL5amBPQKI/AAAAAAAACiA/XGT96nUv0hA/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661861916835791010" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Now we need to configure the External Connection for JMS -&lt;br /&gt;&lt;br /&gt;Create a JMS Q and Connection Factory on WLS -&lt;br /&gt;&lt;br /&gt;jms/myThrottlingQueue&lt;br /&gt;jms/myCF&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-RGAv3jc_CnA/TpL6HePEzAI/AAAAAAAACiw/PKCjWK4F2Xg/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 212px;" src="http://2.bp.blogspot.com/-RGAv3jc_CnA/TpL6HePEzAI/AAAAAAAACiw/PKCjWK4F2Xg/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661862687840455682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-Benuqg16B44/TpL6HbohuvI/AAAAAAAACio/9ujM5V9gNyQ/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 361px; height: 400px;" src="http://3.bp.blogspot.com/-Benuqg16B44/TpL6HbohuvI/AAAAAAAACio/9ujM5V9gNyQ/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661862687141903090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In a previous step we have configured the Messaging System filter to write to &lt;br /&gt;jms/myThrottlingQueue&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-RNF_Ipbqygo/TpL65TJROeI/AAAAAAAACjA/TcOUQ5bKw5M/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 277px; height: 228px;" src="http://3.bp.blogspot.com/-RNF_Ipbqygo/TpL65TJROeI/AAAAAAAACjA/TcOUQ5bKw5M/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661863543856773602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-5Uo9oZY-SkI/TpL65AbnqhI/AAAAAAAACi4/HBijccGxlIY/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 263px; height: 265px;" src="http://4.bp.blogspot.com/-5Uo9oZY-SkI/TpL65AbnqhI/AAAAAAAACi4/HBijccGxlIY/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661863538833467922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now I create a relative path -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-bho591bGrbU/TpL8IxA97mI/AAAAAAAACjQ/80bSM_-Jy2Y/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 226px;" src="http://1.bp.blogspot.com/-bho591bGrbU/TpL8IxA97mI/AAAAAAAACjQ/80bSM_-Jy2Y/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661864909084683874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now we can deploy the policy, but first we need to add wls client to the oeg classpath -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-xOdh2pAJ7DM/TpL7X7ysrWI/AAAAAAAACjI/2BqZLA88Rm4/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 88px;" src="http://4.bp.blogspot.com/-xOdh2pAJ7DM/TpL7X7ysrWI/AAAAAAAACjI/2BqZLA88Rm4/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661864070164032866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Restart OEG and you will see the JMS lookup -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-0YqvEk5KsKA/TpL8Iw0RRtI/AAAAAAAACjY/dKdQqJUCMik/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 195px;" src="http://1.bp.blogspot.com/-0YqvEk5KsKA/TpL8Iw0RRtI/AAAAAAAACjY/dKdQqJUCMik/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661864909031425746" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Test using Service Explorer -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/--xS_b3uacew/TpMCoM1uI2I/AAAAAAAACj4/JI3vtid9Of4/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 301px;" src="http://4.bp.blogspot.com/--xS_b3uacew/TpMCoM1uI2I/AAAAAAAACj4/JI3vtid9Of4/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661872046199415650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The 6th request returns an error&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-XpnBmO0cr2w/TpMCnwJbURI/AAAAAAAACjw/wRSq8OSMUTA/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 147px;" src="http://4.bp.blogspot.com/-XpnBmO0cr2w/TpMCnwJbURI/AAAAAAAACjw/wRSq8OSMUTA/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661872038497440018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Check email&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-ZWFmhC-0sfM/TpMCntElp5I/AAAAAAAACjo/wdfySmbYHWU/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 394px; height: 124px;" src="http://1.bp.blogspot.com/-ZWFmhC-0sfM/TpMCntElp5I/AAAAAAAACjo/wdfySmbYHWU/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661872037671839634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Check Queue&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-zTY8bweJTGY/TpMCnnKdrsI/AAAAAAAACjg/xRm5clz8JPk/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 184px;" src="http://1.bp.blogspot.com/-zTY8bweJTGY/TpMCnnKdrsI/AAAAAAAACjg/xRm5clz8JPk/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661872036085870274" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-240861942661262817?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/240861942661262817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=240861942661262817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/240861942661262817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/240861942661262817'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/10/oeg-oracle-enterprise-gateway_10.html' title='OEG - Oracle Enterprise Gateway Throttling - Part2'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-0Znve1HyKvs/TpL4CBx1LZI/AAAAAAAACh4/PYdhY9sAaa8/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-292188428134741356</id><published>2011-10-10T04:15:00.000-07:00</published><updated>2011-10-10T04:51:25.980-07:00</updated><title type='text'>OEG - Oracle Enterprise Gateway - Throttling</title><content type='html'>Simple example - throttle to only 5 requests per minute.&lt;br /&gt;&lt;br /&gt;This builds on the example detailed in the previous OEG blog posting.&lt;br /&gt;&lt;br /&gt;http://niallcblogs.blogspot.com/2011/09/registering-web-service-with-oracle.html&lt;br /&gt;&lt;br /&gt;We will now amend the generated circuit (or shall we say, policy pipeline) to throttle requests to 5 per minute and email the Sys admin in case of violation.&lt;br /&gt;&lt;br /&gt;We do this using the Throttling filter -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-ZGEjRVWWQes/TpLXdVl2l2I/AAAAAAAACgo/oCg0ieUo0F0/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 81px;" src="http://4.bp.blogspot.com/-ZGEjRVWWQes/TpLXdVl2l2I/AAAAAAAACgo/oCg0ieUo0F0/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661824580570224482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is configured as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-PDhK79cWrjg/TpLXdRecwxI/AAAAAAAACgg/32YjpSsyu38/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 382px; height: 400px;" src="http://2.bp.blogspot.com/-PDhK79cWrjg/TpLXdRecwxI/AAAAAAAACgg/32YjpSsyu38/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661824579465429778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we need to set up the connection to the EMAIL server (I'm using James for this)&lt;br /&gt;&lt;br /&gt;We need to add an Alert destination -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-HiQ0jQXO-qY/TpLYKkrbTWI/AAAAAAAACg4/4zXD8hSIk0o/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 379px;" src="http://2.bp.blogspot.com/-HiQ0jQXO-qY/TpLYKkrbTWI/AAAAAAAACg4/4zXD8hSIk0o/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661825357714247010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Configured as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-NL9zWhuYedM/TpLYKeMpLGI/AAAAAAAACgw/1jH78tZaOk0/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 259px; height: 351px;" src="http://3.bp.blogspot.com/-NL9zWhuYedM/TpLYKeMpLGI/AAAAAAAACgw/1jH78tZaOk0/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661825355974519906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Naturally, I have already created a user oegadmin on James - adduser oegadmin welcome&lt;br /&gt;&lt;br /&gt;Now I configure an Alert filter in the policy (Failure Path) -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-rYCEHLzASxw/TpLY5gpwlII/AAAAAAAAChI/t3eNoNn9HWw/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 147px;" src="http://3.bp.blogspot.com/-rYCEHLzASxw/TpLY5gpwlII/AAAAAAAAChI/t3eNoNn9HWw/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661826164087362690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-mujZqEzFjAI/TpLY5bYI3DI/AAAAAAAAChA/GlNTWeGuMKM/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 324px; height: 220px;" src="http://2.bp.blogspot.com/-mujZqEzFjAI/TpLY5bYI3DI/AAAAAAAAChA/GlNTWeGuMKM/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661826162671279154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Deploy and test - &lt;br /&gt;&lt;br /&gt;We can use Service Explorer and simple click run 6 times to see throttling in action.&lt;br /&gt;&lt;br /&gt;I then check my email - &lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-nd_wgAta5jU/TpLZeEB5i-I/AAAAAAAAChQ/DBDEYjtV5qM/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 118px;" src="http://2.bp.blogspot.com/-nd_wgAta5jU/TpLZeEB5i-I/AAAAAAAAChQ/DBDEYjtV5qM/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661826792059145186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However, there is an easier way of doing this. We can use the OEG &lt;strong&gt;sr&lt;/strong&gt; cmdLine tool to send the requests for us -&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-ptD5_e45CdA/TpLawfZZnmI/AAAAAAAAChg/b2yQy3eHhS4/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 228px;" src="http://3.bp.blogspot.com/-ptD5_e45CdA/TpLawfZZnmI/AAAAAAAAChg/b2yQy3eHhS4/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661828208154746466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sr -h localhost -u/NiallsCreditCardService -s 8082 -p 10 -d10&lt;br /&gt;&lt;br /&gt;The parameter definitions - &lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-VRBPdFjfnVQ/TpLawaZJdnI/AAAAAAAAChY/TIu6-LJuGO0/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 128px;" src="http://3.bp.blogspot.com/-VRBPdFjfnVQ/TpLawaZJdnI/AAAAAAAAChY/TIu6-LJuGO0/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661828206811510386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now you be asking what is this /NiallsCreditCardService ?&lt;br /&gt;this is simply a relative path I created on OEG -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-QTHlCwVBgO4/TpLbPIiaOyI/AAAAAAAACho/bV_WxOGXrNE/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 322px;" src="http://3.bp.blogspot.com/-QTHlCwVBgO4/TpLbPIiaOyI/AAAAAAAACho/bV_WxOGXrNE/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5661828734594464546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;essentially virtualising the backend service for us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-292188428134741356?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/292188428134741356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=292188428134741356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/292188428134741356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/292188428134741356'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/10/oeg-oracle-enterprise-gateway.html' title='OEG - Oracle Enterprise Gateway - Throttling'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-ZGEjRVWWQes/TpLXdVl2l2I/AAAAAAAACgo/oCg0ieUo0F0/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-6873364298900890217</id><published>2011-09-30T00:07:00.000-07:00</published><updated>2011-09-30T01:06:16.550-07:00</updated><title type='text'>Cobol on the Bus Part 3</title><content type='html'>This time I have a somewhat more complex payload -&lt;br /&gt;&lt;br /&gt;  01  XXX.&lt;br /&gt;           05 XXX-STRUCT.&lt;br /&gt;              10 XXX-USER          PIC X(04).&lt;br /&gt;              10 XXX-CODE          PIC 9(08).&lt;br /&gt;&lt;br /&gt;           05 YYY-TAB.&lt;br /&gt;              07 YYY-DETAIL        OCCURS 2 TIMES.&lt;br /&gt;              10 YYY-A             PIC X(01).&lt;br /&gt;              10 YYY-B             PIC S9(16)v9(2).&lt;br /&gt;              10 YYY-C             PIC S9(16)v9(2).&lt;br /&gt;              10 YYY-D             PIC S9(16)v9(2).&lt;br /&gt;              10 YYY-E             PIC S9(3)v99.&lt;br /&gt;           05 YYY-END              PIC 9(04).&lt;br /&gt;&lt;br /&gt;I create a new OSB project in OEPE and import this copybook via MFL.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-MqxjePFkfVI/ToVu0Se_EqI/AAAAAAAACew/xYdzsQ7abRg/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 192px;" src="http://4.bp.blogspot.com/-MqxjePFkfVI/ToVu0Se_EqI/AAAAAAAACew/xYdzsQ7abRg/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658050351454950050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-JJQ7QvXWEts/ToVu0B1RBLI/AAAAAAAACeo/_9LtTY_eG5s/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 345px;" src="http://1.bp.blogspot.com/-JJQ7QvXWEts/ToVu0B1RBLI/AAAAAAAACeo/_9LtTY_eG5s/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658050346984998066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Test&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-dGytkrkMsSA/ToVu0Pt-LjI/AAAAAAAACeg/SRTpfBzpWoQ/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 190px;" src="http://2.bp.blogspot.com/-dGytkrkMsSA/ToVu0Pt-LjI/AAAAAAAACeg/SRTpfBzpWoQ/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658050350712499762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Normally one would generate the non-XML data first -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-xu-wtIHBYz0/ToVuz4p1cOI/AAAAAAAACeY/8U-WaDU_qu8/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 97px;" src="http://4.bp.blogspot.com/-xu-wtIHBYz0/ToVuz4p1cOI/AAAAAAAACeY/8U-WaDU_qu8/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658050344521134306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and lo and behold - we get the following error.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-m364BYc4Q6w/ToVuzcY3SnI/AAAAAAAACeQ/lVavAjD_0dY/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 278px; height: 400px;" src="http://4.bp.blogspot.com/-m364BYc4Q6w/ToVuzcY3SnI/AAAAAAAACeQ/lVavAjD_0dY/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658050336933759602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The error - Too many digits - is understandable once we do the following -&lt;br /&gt;&lt;br /&gt;Generate XML data &lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-S2EcC6gnuqc/ToVw7zcjMtI/AAAAAAAACfY/OpCgDvd-Zw4/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 362px; height: 140px;" src="http://2.bp.blogspot.com/-S2EcC6gnuqc/ToVw7zcjMtI/AAAAAAAACfY/OpCgDvd-Zw4/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658052679585444562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Q4SeePcecTg/ToVw7rb71UI/AAAAAAAACfQ/W68TUN44uyw/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 332px; height: 400px;" src="http://1.bp.blogspot.com/-Q4SeePcecTg/ToVw7rb71UI/AAAAAAAACfQ/W68TUN44uyw/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658052677435381058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;yyy-e has been defined as PIC S9(3)v99 e.g. 433.30&lt;br /&gt;The generated XML value is 4333 &lt;br /&gt;&lt;br /&gt;Change this to 433.3 (the 2 occurances) and transform xml to non-xml&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-cD4UjpZxBo8/ToVw7hSJJPI/AAAAAAAACfI/Vyo-jLp9Ty8/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 224px;" src="http://3.bp.blogspot.com/-cD4UjpZxBo8/ToVw7hSJJPI/AAAAAAAACfI/Vyo-jLp9Ty8/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658052674709955826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-MuDKlKp0Qdc/ToVw7bt3fzI/AAAAAAAACfA/0grNxmf9DXU/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 226px;" src="http://4.bp.blogspot.com/-MuDKlKp0Qdc/ToVw7bt3fzI/AAAAAAAACfA/0grNxmf9DXU/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658052673215627058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;I change the non-xml value of user and click transform&lt;br /&gt;Now I get the error -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-s1CSq238uak/ToVw7ZgWbiI/AAAAAAAACe4/-87uGRxcTsE/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 251px;" src="http://3.bp.blogspot.com/-s1CSq238uak/ToVw7ZgWbiI/AAAAAAAACe4/-87uGRxcTsE/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658052672622063138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;yyy-b is defined as follows - &lt;br /&gt;YYY-B             PIC S9(16)v9(2).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;MFL wise - It is defined as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-tV-3aREsij0/ToV3iMtbSjI/AAAAAAAACf4/WYmcl8gaB9g/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 273px;" src="http://3.bp.blogspot.com/-tV-3aREsij0/ToV3iMtbSjI/AAAAAAAACf4/WYmcl8gaB9g/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658059936271911474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Change it (and the other signed fields) as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-IgTx1Ea0IRY/ToV3iNlFoDI/AAAAAAAACfw/ND4P9TddHgw/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 215px;" src="http://1.bp.blogspot.com/-IgTx1Ea0IRY/ToV3iNlFoDI/AAAAAAAACfw/ND4P9TddHgw/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658059936505372722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Re-test - Generate XML&lt;br /&gt;&lt;br /&gt;Change yyy-e values to include decimal point.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-rEoHCzl8z8M/ToV3hxRGhAI/AAAAAAAACfo/xUltSb2tiB8/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 271px; height: 400px;" src="http://1.bp.blogspot.com/-rEoHCzl8z8M/ToV3hxRGhAI/AAAAAAAACfo/xUltSb2tiB8/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658059928905352194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Transform XML to non-XML&lt;br /&gt;&lt;br /&gt;Change the xxx-user value and Transform non-XML to XML&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-xhJTRB7AEeU/ToV3h_nFrxI/AAAAAAAACfg/x4z-gBYdrZE/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 228px;" src="http://4.bp.blogspot.com/-xhJTRB7AEeU/ToV3h_nFrxI/AAAAAAAACfg/x4z-gBYdrZE/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5658059932755668754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Naturally all these settings are contingent on the Mainframe sending the Cobol on to the bus. This could be over TCP-IP so you could use the Socket adapter, or maybe MQ is being used. Also one needs test data from the mainframe to see how the sign is being handled etc.&lt;br /&gt;&lt;br /&gt;However, in the context of a POC...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-6873364298900890217?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/6873364298900890217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=6873364298900890217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6873364298900890217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6873364298900890217'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/09/cobol-on-bus-part-3.html' title='Cobol on the Bus Part 3'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-MqxjePFkfVI/ToVu0Se_EqI/AAAAAAAACew/xYdzsQ7abRg/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-3949245783948017059</id><published>2011-09-21T22:44:00.000-07:00</published><updated>2011-09-21T23:17:04.327-07:00</updated><title type='text'>Registering a Web Service with Oracle Enterprise Gateway (OEG)</title><content type='html'>Simple sanity test for OEG install.&lt;br /&gt;&lt;br /&gt;I have created and deployed a simple creditCardValidation service to&lt;br /&gt;&lt;br /&gt;http://localhost:7001/ValidateCC/ValidateCCPort?WSDL&lt;br /&gt;&lt;br /&gt;The impl is as follows -&lt;br /&gt;&lt;br /&gt;package validatecc;&lt;br /&gt;&lt;br /&gt;public class ValidateCC {&lt;br /&gt;public ValidateCC() {&lt;br /&gt;super();&lt;br /&gt;}&lt;br /&gt;public CreditCardValidation validateCard(String cardType, String cardNr){&lt;br /&gt;CreditCardValidation ccv = new CreditCardValidation();&lt;br /&gt;ccv.setStatus("INVALID");&lt;br /&gt;&lt;br /&gt;if (cardType.equalsIgnoreCase("AMEX")){&lt;br /&gt;ccv.setValidFrom("20110101");&lt;br /&gt;ccv.setValidUntil("20150101");&lt;br /&gt;ccv.setCustName("NiallC");&lt;br /&gt;ccv.setLimit(10000);&lt;br /&gt;ccv.setStatus("VALID");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;if (cardType.equalsIgnoreCase("VISA")){&lt;br /&gt;ccv.setValidFrom("20070101");&lt;br /&gt;ccv.setValidUntil("20110101");&lt;br /&gt;ccv.setCustName("NiallC");&lt;br /&gt;ccv.setLimit(7000);&lt;br /&gt;ccv.setStatus("VALID");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;return ccv;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;package validatecc;&lt;br /&gt;&lt;br /&gt;public class CreditCardValidation {&lt;br /&gt;String validFrom;&lt;br /&gt;String validUntil;&lt;br /&gt;String custName;&lt;br /&gt;String status;&lt;br /&gt;int limit;&lt;br /&gt;&lt;br /&gt;public CreditCardValidation() {&lt;br /&gt;super();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setValidFrom(String validFrom) {&lt;br /&gt;this.validFrom = validFrom;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getValidFrom() {&lt;br /&gt;return validFrom;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setValidUntil(String validUntil) {&lt;br /&gt;this.validUntil = validUntil;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getValidUntil() {&lt;br /&gt;return validUntil;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setCustName(String custName) {&lt;br /&gt;this.custName = custName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getCustName() {&lt;br /&gt;return custName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setLimit(int limit) {&lt;br /&gt;this.limit = limit;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int getLimit() {&lt;br /&gt;return limit;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setStatus(String status) {&lt;br /&gt;this.status = status;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getStatus() {&lt;br /&gt;return status;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Simple enough!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Start up the Gateway &amp;amp; Policy Studio&lt;br /&gt;&lt;br /&gt;Gateway startup --&amp;gt; \OEG\Gateway\enterprisegateway\Win32\bin\enterprisegateway.bat&lt;br /&gt;Policy Studio Startup --&amp;gt; \OEG\PolicyStudio\oegpolicystudio\policystudio.exe&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-AkL7r__wc7M/TnrNJifzHWI/AAAAAAAACcI/IIa78f8aAr0/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655057845879774562" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 155px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-AkL7r__wc7M/TnrNJifzHWI/AAAAAAAACcI/IIa78f8aAr0/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Click on the Edit Active Configuration link&lt;br /&gt;This loads the current Gateway configuration into Policy Studio.&lt;br /&gt;&lt;br /&gt;Click on Policies&lt;br /&gt;Click on Register Web Service&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-MkUb5L1pkAQ/TnrNJBNQ3gI/AAAAAAAACcA/HyRj81WQIk0/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655057836943662594" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 215px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-MkUb5L1pkAQ/TnrNJBNQ3gI/AAAAAAAACcA/HyRj81WQIk0/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-GVHjkxE78DY/TnrNI0jb1sI/AAAAAAAACb4/iFxazup0vS4/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655057833546995394" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 319px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-GVHjkxE78DY/TnrNI0jb1sI/AAAAAAAACb4/iFxazup0vS4/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-uFbEqEOUut0/TnrNI1Z9III/AAAAAAAACbw/Qz5Y8e5i1Yo/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655057833775669378" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 242px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-uFbEqEOUut0/TnrNI1Z9III/AAAAAAAACbw/Qz5Y8e5i1Yo/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is just a simple pass through example so de-select teh "secure" checkbox.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-wHh2j88IxsY/TnrNIp_FFzI/AAAAAAAACbo/jbh36jFeax4/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655057830710155058" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 285px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-wHh2j88IxsY/TnrNIp_FFzI/AAAAAAAACbo/jbh36jFeax4/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Check the routing settings&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-bVrnUMRSyOs/TnrORRIuMII/AAAAAAAACcw/oobnCSv_kHE/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655059078170161282" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 170px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-bVrnUMRSyOs/TnrORRIuMII/AAAAAAAACcw/oobnCSv_kHE/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As you can see, this is simple pass-thru processing.&lt;br /&gt;&lt;br /&gt;Now deploy the changes from Policy Studio to the Gateway.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-lsEE-T3wmfs/TnrORJ9iwiI/AAAAAAAACco/NFxxhIKm0PA/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655059076244226594" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 58px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-lsEE-T3wmfs/TnrORJ9iwiI/AAAAAAAACco/NFxxhIKm0PA/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Review what has been generated -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-4Bg4bpyobxY/TnrOQwSR3HI/AAAAAAAACcg/ccgrCYIIkTw/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655059069351877746" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 168px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-4Bg4bpyobxY/TnrOQwSR3HI/AAAAAAAACcg/ccgrCYIIkTw/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Right Click on the Service Handler --&amp;gt; Edit&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-ys1Z_shdqQ0/TnrOQyLxOCI/AAAAAAAACcY/yZvytJz6kS4/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655059069861443618" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 236px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-ys1Z_shdqQ0/TnrOQyLxOCI/AAAAAAAACcY/yZvytJz6kS4/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on the Validation tab&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-3KDcwnvFj3Q/TnrOQmKN0fI/AAAAAAAACcQ/xISkvxuMK7c/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655059066633703922" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 210px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-3KDcwnvFj3Q/TnrOQmKN0fI/AAAAAAAACcQ/xISkvxuMK7c/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Test using Service Explorer&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I didn't cover the install of Service Explorer in my "OEG Install" blog post.&lt;br /&gt;It is just a case of unzipping the file - Oracle_Enterprise_Gateway_11_1_1_5_0_Win32_Service_Explorer.zip to a directory of your choice.&lt;br /&gt;&lt;br /&gt;Start -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-FGeQGP5q8rI/TnrP1_yleYI/AAAAAAAACdY/Lg4zXZswW7Q/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655060808680700290" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 195px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-FGeQGP5q8rI/TnrP1_yleYI/AAAAAAAACdY/Lg4zXZswW7Q/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You are presented with an empty page - ready for exploring!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-b-zjgY7Xl6Y/TnrP1hk4nzI/AAAAAAAACdQ/21WFe7JRNF4/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655060800570171186" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 265px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-b-zjgY7Xl6Y/TnrP1hk4nzI/AAAAAAAACdQ/21WFe7JRNF4/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Menu --&amp;gt; File --&amp;gt; Load WSDL&lt;br /&gt;&lt;br /&gt;Here we load our original WSDL.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-7ipXwT5NhaA/TnrP1aSrLiI/AAAAAAAACdI/Tf5ZTgavlEA/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655060798614744610" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 375px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-7ipXwT5NhaA/TnrP1aSrLiI/AAAAAAAACdI/Tf5ZTgavlEA/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Change the Request, adding valid cardType etc.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-XqBQKeK2IGw/TnrP1eXlPdI/AAAAAAAACdA/6zvSPlOyGh0/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655060799709068754" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 263px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-XqBQKeK2IGw/TnrP1eXlPdI/AAAAAAAACdA/6zvSPlOyGh0/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-l5XM3CMVDEM/TnrP1Lm8meI/AAAAAAAACc4/YZ3zaTzOBTk/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655060794673240546" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 225px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-l5XM3CMVDEM/TnrP1Lm8meI/AAAAAAAACc4/YZ3zaTzOBTk/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click on the drop down list beside the green icon&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-vfL-EDFViAQ/TnrRFVENnUI/AAAAAAAACeA/CbbdGKx0Yaw/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655062171601444162" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-vfL-EDFViAQ/TnrRFVENnUI/AAAAAAAACeA/CbbdGKx0Yaw/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Change to point to OEG&lt;br /&gt;http://8082/ValidateCC/ValidateCCPort&lt;br /&gt;The default port for OEG is 8080, however I changed this to 8082, as I had a DB service running on 8080.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/--cbVHNnQ_BY/TnrRFGyKYtI/AAAAAAAACd4/-bC6h6fYG20/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655062167767638738" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 212px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/--cbVHNnQ_BY/TnrRFGyKYtI/AAAAAAAACd4/-bC6h6fYG20/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Validate the response&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-VIzM4oYqKnQ/TnrRFMVRfXI/AAAAAAAACdw/64Z-JzALYnc/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655062169257082226" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 201px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-VIzM4oYqKnQ/TnrRFMVRfXI/AAAAAAAACdw/64Z-JzALYnc/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Monitor the Gateway&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Vm6MchJrUFQ/TnrRE37sKII/AAAAAAAACdo/bzFK0DS8KNQ/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655062163781068930" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 249px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-Vm6MchJrUFQ/TnrRE37sKII/AAAAAAAACdo/bzFK0DS8KNQ/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Fs3fXUB3BCc/TnrRE0SYWEI/AAAAAAAACdg/28LTCCSR7KU/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655062162802497602" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 161px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-Fs3fXUB3BCc/TnrRE0SYWEI/AAAAAAAACdg/28LTCCSR7KU/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;admin/changeme&lt;br /&gt;Click on View Reports&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-rIdGQ3zO8mM/TnrRjOQHcyI/AAAAAAAACeI/LNU4LvdG9p4/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5655062685168399138" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 328px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-rIdGQ3zO8mM/TnrRjOQHcyI/AAAAAAAACeI/LNU4LvdG9p4/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-3949245783948017059?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/3949245783948017059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=3949245783948017059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/3949245783948017059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/3949245783948017059'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/09/registering-web-service-with-oracle.html' title='Registering a Web Service with Oracle Enterprise Gateway (OEG)'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-AkL7r__wc7M/TnrNJifzHWI/AAAAAAAACcI/IIa78f8aAr0/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-777597971657388635</id><published>2011-09-16T09:01:00.000-07:00</published><updated>2011-09-18T23:50:41.406-07:00</updated><title type='text'>Installing/Configuring  Oracle Enterprise Gateway on Windows</title><content type='html'>The software is available on OTN, just click on the download link at -&lt;br /&gt;http://www.oracle.com/technetwork/middleware/id-mgmt/oeg-300773.html&lt;br /&gt;&lt;br /&gt;Then simply follow my doc -&lt;br /&gt;&lt;br /&gt;https://docs.google.com/leaf?id=1D0Z0KfgFdvqGHIcpG_7B32mWImGGCRkWhO882KyRVJFYAx94QK9yf6vVTjQP&amp;hl=en&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-777597971657388635?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/777597971657388635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=777597971657388635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/777597971657388635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/777597971657388635'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/09/installingconfiguring-oracle-enterprise.html' title='Installing/Configuring  Oracle Enterprise Gateway on Windows'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-6367604212171034902</id><published>2011-09-14T16:03:00.001-07:00</published><updated>2011-09-14T16:20:38.026-07:00</updated><title type='text'>OEG - Oracle Enterprise Gateway</title><content type='html'>I'm currently in Santa Clara skilling up on OEG, which can secure access to your services etc. from the outside world. It works in conjunction with WSM. Think of it as taking care of security in the DMZ, working in concert with WSM which takes care of the last mile security.&lt;br /&gt;&lt;br /&gt;To quote from OTN -&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Oracle Enterprise Gateway provides DMZ-class security and a comprehensive threat defense system at the service perimeter to SOA and Cloud environments, thus providing critical protection needed between un-trusted and trusted zones.&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A very compelling addition to our stack -&lt;br /&gt;&lt;br /&gt;So I strongly suggest you check out the many resources available on OTN -&lt;br /&gt;http://www.oracle.com/technetwork/middleware/id-mgmt/oeg-300773.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-6367604212171034902?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/6367604212171034902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=6367604212171034902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6367604212171034902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6367604212171034902'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/09/oeg-oracle-enterprise-gateway.html' title='OEG - Oracle Enterprise Gateway'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-5489835882279464103</id><published>2011-08-31T01:40:00.000-07:00</published><updated>2011-08-31T02:08:40.433-07:00</updated><title type='text'>BPM11g looping Subprocess</title><content type='html'>&lt;strong&gt;Scenario: &lt;/strong&gt;&lt;br /&gt;the ubiquitous example of an order and its order lines -&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XSD&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-K8Qdu1Gw9WM/Tl32n4k1hUI/AAAAAAAACaE/ChwkEiwM6is/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 277px; height: 254px;" src="http://4.bp.blogspot.com/-K8Qdu1Gw9WM/Tl32n4k1hUI/AAAAAAAACaE/ChwkEiwM6is/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646940672854689090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-YwuQVLlvmHA/Tl32njmQBmI/AAAAAAAACZ8/i-eg_xpkrYc/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 383px; height: 400px;" src="http://2.bp.blogspot.com/-YwuQVLlvmHA/Tl32njmQBmI/AAAAAAAACZ8/i-eg_xpkrYc/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646940667223475810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Test XML input&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-uWoywbH5-KA/Tl32OWJTzjI/AAAAAAAACZ0/IlY8AVKKl6E/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 321px;" src="http://4.bp.blogspot.com/-uWoywbH5-KA/Tl32OWJTzjI/AAAAAAAACZ0/IlY8AVKKl6E/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646940234115698226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the BPM process I need to loop thru the order lines.&lt;br /&gt;&lt;br /&gt;The basic process looks as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-yrV-9V15T6Y/Tl32OB0D0fI/AAAAAAAACZs/HPu_RhWHz_Q/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 128px;" src="http://3.bp.blogspot.com/-yrV-9V15T6Y/Tl32OB0D0fI/AAAAAAAACZs/HPu_RhWHz_Q/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646940228657861106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I created a fileAdapter(Read) which triggers the process.&lt;br /&gt;&lt;br /&gt;I created the following process variables -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-JuoQbNX84Vo/Tl32OFgCuMI/AAAAAAAACZk/F8PrpRBXc3Y/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 202px;" src="http://2.bp.blogspot.com/-JuoQbNX84Vo/Tl32OFgCuMI/AAAAAAAACZk/F8PrpRBXc3Y/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646940229647644866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To begin with, I copy the incoming order to the v_order variable.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-hwUumPEGUxI/Tl32NpSFLsI/AAAAAAAACZU/tTQjKcoRkdE/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 337px;" src="http://3.bp.blogspot.com/-hwUumPEGUxI/Tl32NpSFLsI/AAAAAAAACZU/tTQjKcoRkdE/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646940222072893122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then I get the count of incoming order lines -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-OYlLS1bfjzw/Tl32N2o7W1I/AAAAAAAACZc/L46CsmKREj8/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 283px;" src="http://2.bp.blogspot.com/-OYlLS1bfjzw/Tl32N2o7W1I/AAAAAAAACZc/L46CsmKREj8/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646940225658379090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now to the looping subprocess -&lt;br /&gt;&lt;br /&gt;The loop condition is defined as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-28tJEQwFSSc/Tl34eme776I/AAAAAAAACac/3eQYLmYfUqU/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 217px; height: 224px;" src="http://1.bp.blogspot.com/-28tJEQwFSSc/Tl34eme776I/AAAAAAAACac/3eQYLmYfUqU/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646942712402538402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-PnMN6xOWwYk/Tl34eWv_ycI/AAAAAAAACaU/42XzCYUBWAk/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 396px; height: 400px;" src="http://4.bp.blogspot.com/-PnMN6xOWwYk/Tl34eWv_ycI/AAAAAAAACaU/42XzCYUBWAk/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646942708179126722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-lS6gJrL-epE/Tl34eYb-nWI/AAAAAAAACaM/ou9vuPNdB2M/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 352px;" src="http://3.bp.blogspot.com/-lS6gJrL-epE/Tl34eYb-nWI/AAAAAAAACaM/ou9vuPNdB2M/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646942708632034658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note we have this sub-process variable loopCounter generated for us.&lt;br /&gt;&lt;br /&gt;Now to the actual processing - I just copy the orderLine[n] to a variable.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-aUcoHE-WIIA/Tl35MMHG-GI/AAAAAAAACas/bzpiCuQZdJE/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 306px;" src="http://2.bp.blogspot.com/-aUcoHE-WIIA/Tl35MMHG-GI/AAAAAAAACas/bzpiCuQZdJE/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646943495597258850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-w2DTFjfiRGs/Tl35MD9AVEI/AAAAAAAACak/gx3tZwkoVAU/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 116px;" src="http://4.bp.blogspot.com/-w2DTFjfiRGs/Tl35MD9AVEI/AAAAAAAACak/gx3tZwkoVAU/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646943493407396930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Deploy and test&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-j_sw0Df6u2c/Tl35zfHzpbI/AAAAAAAACbE/RikALlhj-Eo/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 329px;" src="http://4.bp.blogspot.com/-j_sw0Df6u2c/Tl35zfHzpbI/AAAAAAAACbE/RikALlhj-Eo/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646944170715358642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-2fFINUjSK4k/Tl35zZbVx8I/AAAAAAAACa8/EoyvoSju4dM/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 217px;" src="http://2.bp.blogspot.com/-2fFINUjSK4k/Tl35zZbVx8I/AAAAAAAACa8/EoyvoSju4dM/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646944169186674626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-E6dv_PluloI/Tl35zNd4mpI/AAAAAAAACa0/PikQjlJSsi8/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 169px;" src="http://4.bp.blogspot.com/-E6dv_PluloI/Tl35zNd4mpI/AAAAAAAACa0/PikQjlJSsi8/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5646944165976119954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-5489835882279464103?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/5489835882279464103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=5489835882279464103' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/5489835882279464103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/5489835882279464103'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/08/bpm11g-looping-subprocess.html' title='BPM11g looping Subprocess'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-K8Qdu1Gw9WM/Tl32n4k1hUI/AAAAAAAACaE/ChwkEiwM6is/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-6978325020556111735</id><published>2011-08-10T01:48:00.000-07:00</published><updated>2011-08-10T02:31:43.711-07:00</updated><title type='text'>Adding ADF BC components to a BPM Human Task Form</title><content type='html'>Here is what we need to do... &lt;br /&gt;The BPM process only contains the &lt;strong&gt;orderID&lt;/strong&gt; in the payload. We will need to retrieve the order details from the database via ADF BC and display them on the task form page. My table is called am_order and is defined as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-y1oAAgo5jCg/TkJP6-mJ9MI/AAAAAAAACZA/4cqtHSbzNCg/s1600/9.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 207px; height: 105px;" src="http://1.bp.blogspot.com/-y1oAAgo5jCg/TkJP6-mJ9MI/AAAAAAAACZA/4cqtHSbzNCg/s400/9.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5639157558075323586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks to Mireille D. and Angelo S. for their input!&lt;br /&gt;&lt;br /&gt;The high level steps are as follows –&lt;br /&gt;&lt;br /&gt;Auto-generate the Human Task form from the BPM task definition.&lt;br /&gt;- This creates a new project in your JDeveloper application.&lt;br /&gt;&lt;br /&gt;In the new project,  expose the am_order table as an ADF BC&lt;br /&gt;- Tailor it to add a View Criteria&lt;br /&gt;- e.g. Am_order.order_id = &lt;strong&gt;orderID&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Add a new bounded ADF task flow to the project&lt;br /&gt;- Here we will display the order details&lt;br /&gt;- The task flow will include a parameter (#pageFlowScope.in_orderID)&lt;br /&gt;-- The view used will be a page fragment&lt;br /&gt;&lt;br /&gt;Add the new bounded ADF task flow to the auto-generated taskDetails.jspx&lt;br /&gt;- It will be dropped as a Region&lt;br /&gt;-- Specify the bindings to &lt;strong&gt;orderID&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Auto-generating the task form is a piece of cake - the real "baking" (pardon the pun) is in the creation of the extra ADF Task form to display the order details.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Amend the ADF BC View as follows -&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Add a bind variable e.g. (bpm_orderID)&lt;br /&gt;2. Add a new View Criteria that will leverage it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-ByaVDbihqwU/TkJHuRzO0DI/AAAAAAAACYA/qXKjA9KK-MY/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 378px; height: 400px;" src="http://4.bp.blogspot.com/-ByaVDbihqwU/TkJHuRzO0DI/AAAAAAAACYA/qXKjA9KK-MY/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5639148543799119922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Specify use at app module level&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-1nD_gqp8blw/TkJH7RFp0kI/AAAAAAAACYI/Se8i4wyB4LM/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 271px;" src="http://3.bp.blogspot.com/-1nD_gqp8blw/TkJH7RFp0kI/AAAAAAAACYI/Se8i4wyB4LM/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5639148766946251330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;So to execute a query on the view we need to pass in a value for&lt;br /&gt;bpm_orderID&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Create the new task flow&lt;/strong&gt;&lt;br /&gt; &lt;br /&gt;This bounded task flow will have the following parameter-&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-qj89CAxo8g0/TkJIZ3CZDMI/AAAAAAAACYQ/Xl-v8iV7ZL4/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 69px;" src="http://1.bp.blogspot.com/-qj89CAxo8g0/TkJIZ3CZDMI/AAAAAAAACYQ/Xl-v8iV7ZL4/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5639149292529192130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;So the task flow expects to be passed in a String (orderID). We call this in_orderID and it is stored in the variable pageFlowScope.in_orderID&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Drop the &lt;strong&gt;ExecuteWithParams&lt;/strong&gt; operation from the ViewObject on to the task flow diagram.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-cVPJhVn_kb0/TkJI8J84rLI/AAAAAAAACYY/RQqHu95dwR8/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 362px; height: 400px;" src="http://1.bp.blogspot.com/-cVPJhVn_kb0/TkJI8J84rLI/AAAAAAAACYY/RQqHu95dwR8/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5639149881721924786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Here we specify the value for the view bind variable (bpm_orderID). Naturally this is set to pageFlowScope.in_orderID&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We then add a view to the task flow to display the order details&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-k0Cfy8jd7EI/TkJKVc_RXGI/AAAAAAAACYg/0suf20_F5IE/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 163px;" src="http://3.bp.blogspot.com/-k0Cfy8jd7EI/TkJKVc_RXGI/AAAAAAAACYg/0suf20_F5IE/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5639151415840562274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's it for the task flow.&lt;br /&gt;&lt;br /&gt;Now open the auto-generated task form and drop in the new task flow as a region.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-BdAwB0rVo7Q/TkJKzbTUzpI/AAAAAAAACYo/GiZpJK0lXgM/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 280px;" src="http://2.bp.blogspot.com/-BdAwB0rVo7Q/TkJKzbTUzpI/AAAAAAAACYo/GiZpJK0lXgM/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5639151930783878802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I position it after after the orderID.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;When dropping we will need to bind the input parameter (in_orderID) we defined earlier. So we bind it to the the existing orderID on the page -&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-nwRmqFIWH6I/TkJLOncGfJI/AAAAAAAACYw/XPtVpbX2veo/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 254px;" src="http://1.bp.blogspot.com/-nwRmqFIWH6I/TkJLOncGfJI/AAAAAAAACYw/XPtVpbX2veo/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5639152397898382482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-xkJ3ExDfFug/TkJL0mSHQLI/AAAAAAAACY4/LW7CX-t7Q6I/s1600/8.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 209px;" src="http://2.bp.blogspot.com/-xkJ3ExDfFug/TkJL0mSHQLI/AAAAAAAACY4/LW7CX-t7Q6I/s400/8.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5639153050423083186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-6978325020556111735?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/6978325020556111735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=6978325020556111735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6978325020556111735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6978325020556111735'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/08/adding-adf-bc-components-to-bpm-human.html' title='Adding ADF BC components to a BPM Human Task Form'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-y1oAAgo5jCg/TkJP6-mJ9MI/AAAAAAAACZA/4cqtHSbzNCg/s72-c/9.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-6968634000979491599</id><published>2011-08-08T01:03:00.000-07:00</published><updated>2011-08-09T00:00:40.623-07:00</updated><title type='text'>Using timers in BPM 11g Part 2</title><content type='html'>Scenario:&lt;br /&gt;&lt;br /&gt;A typical batch style process - &lt;br /&gt;The process starts at 10 am and writes out a report every hour.&lt;br /&gt;It ends 6 hours later at 4 pm.&lt;br /&gt;&lt;br /&gt;Now for testing purposes I will start at 2:40 pm, write a report every 1 minute and then end 5 minutes later - but you can extrapolate as required.&lt;br /&gt;&lt;br /&gt;The process is as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-2CJ-ETGYli4/TkDZxgzDtcI/AAAAAAAACXc/7WLobBkHs1o/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 240px;" src="http://4.bp.blogspot.com/-2CJ-ETGYli4/TkDZxgzDtcI/AAAAAAAACXc/7WLobBkHs1o/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5638746178108765634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Start is set to 14:40&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-XcyQqSMOhQ8/Tj_cv8zXHII/AAAAAAAACWU/Pegm1uPxwRQ/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 338px; height: 265px;" src="http://4.bp.blogspot.com/-XcyQqSMOhQ8/Tj_cv8zXHII/AAAAAAAACWU/Pegm1uPxwRQ/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5638467974824664194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The variable v_endTimeString will be set to startTime (i.e. 14:40) + 5 minutes.&lt;br /&gt;I use this later for comparison purposes. I'm not the XPath guru so I essentially &lt;br /&gt;store the end date as a String in the format YYYYMMDDHHMM and then exit the reporting loop when currentDateTime &gt; v_endTimeString.&lt;br /&gt;    &lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-KJFtKoSm3OQ/Tj_dEcNX0JI/AAAAAAAACWc/n47AKTZPaHs/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 197px;" src="http://2.bp.blogspot.com/-KJFtKoSm3OQ/Tj_dEcNX0JI/AAAAAAAACWc/n47AKTZPaHs/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5638468326852645010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-yh1yV0K11wc/Tj_gXuRm95I/AAAAAAAACWk/69MQz-YFpRk/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 122px;" src="http://2.bp.blogspot.com/-yh1yV0K11wc/Tj_gXuRm95I/AAAAAAAACWk/69MQz-YFpRk/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5638471956654651282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-rXlmjIYJG4Y/TkDaBlwD8II/AAAAAAAACXk/TGkN1djhbkY/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 142px;" src="http://4.bp.blogspot.com/-rXlmjIYJG4Y/TkDaBlwD8II/AAAAAAAACXk/TGkN1djhbkY/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5638746454316281986" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wait 1 minute configured as follows - &lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-niwlJY_jwu8/TkDaYnaYn5I/AAAAAAAACXs/kbXylBUhdD8/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 149px;" src="http://1.bp.blogspot.com/-niwlJY_jwu8/TkDaYnaYn5I/AAAAAAAACXs/kbXylBUhdD8/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5638746849899224978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The COB? (Close Of Business) condition for  "Still within business hours" is set as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-E1YH3FhtGSM/TkDa38XxagI/AAAAAAAACX0/LMCvx-WdCiY/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://3.bp.blogspot.com/-E1YH3FhtGSM/TkDa38XxagI/AAAAAAAACX0/LMCvx-WdCiY/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5638747388101356034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;xp20:format-dateTime(string(xp20:current-dateTime()), '[Y0001][M01][D01][H01][m01]') &lt; bpmn:getDataObject('v_endTimeString')&lt;br /&gt;&lt;br /&gt;Deploy and test&lt;br /&gt;&lt;br /&gt;The output report should contain 5 entries for the time period 14:40 - 14:45.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-z3vW09vhakM/Tj_iS5e7qQI/AAAAAAAACXE/l2_Gpvf-SSg/s1600/8.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 229px;" src="http://4.bp.blogspot.com/-z3vW09vhakM/Tj_iS5e7qQI/AAAAAAAACXE/l2_Gpvf-SSg/s400/8.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5638474072787233026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Tl7NUY3yF1k/Tj_i7hWIosI/AAAAAAAACXM/Hboro6EGwCg/s1600/9.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 102px;" src="http://4.bp.blogspot.com/-Tl7NUY3yF1k/Tj_i7hWIosI/AAAAAAAACXM/Hboro6EGwCg/s400/9.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5638474770682520258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-ZBp6b45YYdc/Tj_jK5CKImI/AAAAAAAACXU/c_REdEG_qqM/s1600/10.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 352px;" src="http://3.bp.blogspot.com/-ZBp6b45YYdc/Tj_jK5CKImI/AAAAAAAACXU/c_REdEG_qqM/s400/10.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5638475034739221090" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-6968634000979491599?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/6968634000979491599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=6968634000979491599' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6968634000979491599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6968634000979491599'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/08/using-timers-in-bpm-11g-part-2.html' title='Using timers in BPM 11g Part 2'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-2CJ-ETGYli4/TkDZxgzDtcI/AAAAAAAACXc/7WLobBkHs1o/s72-c/1.GIF' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8972205920016120794</id><published>2011-08-03T01:17:00.000-07:00</published><updated>2011-08-03T01:27:13.586-07:00</updated><title type='text'>Using Timers in BPM11g</title><content type='html'>Here is the only occasion where I must admit the official docs left me somewhat puzzled.&lt;br /&gt;&lt;br /&gt;It shows examples such as 'now' + 20 which one could take as an indication on how to set a timer for current date time + 20 (hours, seconds ??)&lt;br /&gt;&lt;br /&gt;My scenario is very simple - accept a file, wait a certain amount of time and then write the file.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-V3Eb5t43N24/TjkFHeUwzYI/AAAAAAAACV8/dip3fAXwbfs/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 76px;" src="http://1.bp.blogspot.com/-V3Eb5t43N24/TjkFHeUwzYI/AAAAAAAACV8/dip3fAXwbfs/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5636542034588257666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So now I want to set this wait to 15 seconds -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-xKxPpYCrHoc/TjkFf-lJvxI/AAAAAAAACWE/7tiWBfbB0WQ/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 207px;" src="http://4.bp.blogspot.com/-xKxPpYCrHoc/TjkFf-lJvxI/AAAAAAAACWE/7tiWBfbB0WQ/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5636542455563796242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This may seem pretty cryptic -&lt;br /&gt;&lt;br /&gt;xp20:add-dayTimeDuration-to-dateTime(xp20:current-dateTime(), string('PT15S'))&lt;br /&gt;&lt;br /&gt;PT15S - PT are just constants -&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;P&lt;/strong&gt;1Y1D&lt;strong&gt;T&lt;/strong&gt;1H1S &lt;br /&gt;&lt;br /&gt;so 3 days are P3D&lt;br /&gt;3 hours PT3H&lt;br /&gt;&lt;br /&gt;Check out Antony's blog posting for the why's etc.&lt;br /&gt;&lt;br /&gt;http://blogs.oracle.com/reynolds/entry/whats_the_time_mr_bpel&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8972205920016120794?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8972205920016120794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8972205920016120794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8972205920016120794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8972205920016120794'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/08/using-timers-in-bpm11g.html' title='Using Timers in BPM11g'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-V3Eb5t43N24/TjkFHeUwzYI/AAAAAAAACV8/dip3fAXwbfs/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-9085894128012416358</id><published>2011-07-18T11:19:00.000-07:00</published><updated>2011-07-18T12:06:14.063-07:00</updated><title type='text'>Leveraging SDOs in BPM11g</title><content type='html'>In this simple scenario we will process orders that adhere to the following XSD&lt;br /&gt;&lt;br /&gt;btw. a great resource that I often refer to is Antony Reynolds/Matt Wright --&gt; Oracle SOA Suite 11g Developers Guide. If you don't already have it - then get it!&lt;br /&gt;&lt;br /&gt;Ok back to business...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-poMeRX3_n9I/TiR7P_NdQMI/AAAAAAAACR0/QoLE7kCtAA8/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630760948716093634" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 327px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-poMeRX3_n9I/TiR7P_NdQMI/AAAAAAAACR0/QoLE7kCtAA8/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The underlying DB tables are as follows (I've created them in SCOTT's schema)–&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-f0ZJ2h0t8r8/TiR7PvssMYI/AAAAAAAACRs/2iwUqBPRZgA/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630760944552128898" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 208px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-f0ZJ2h0t8r8/TiR7PvssMYI/AAAAAAAACRs/2iwUqBPRZgA/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;DDL is available at Appendx A&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Scenario&lt;/strong&gt;&lt;br /&gt;We are used to having payloads that contain all of the order attributes. We can imagine an Order Entry UI where the Order &amp;amp; customer details are entered. We could pass all of this on to BPM via the payload. However a more efficient way may be to leverage SDOs and just pass the keys e.g. OrderId, CustID on to BPM. BPM can then load the data in just in time mode from the DB using the SDO.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;br /&gt;You need to have your DB schema installed. I create 1 customer so that I’ve something to test.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-40ypYXVPNLk/TiR7mW1b2ZI/AAAAAAAACR8/_-yqFq-K1gs/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630761333014911378" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 162px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-40ypYXVPNLk/TiR7mW1b2ZI/AAAAAAAACR8/_-yqFq-K1gs/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Create an ADF App in JDeveloper&lt;/strong&gt;&lt;br /&gt;This app will contain ADF-BC artifacts that we will expose via a Service Interface.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-KzmMyLxSJss/TiR8U9e8XRI/AAAAAAAACSU/n4nSuYd-c7c/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630762133663538450" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 362px; CURSOR: hand; HEIGHT: 269px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-KzmMyLxSJss/TiR8U9e8XRI/AAAAAAAACSU/n4nSuYd-c7c/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Set App name in project properties to something more readable as the default.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-ohWFvNdVLbc/TiR8UUDzw5I/AAAAAAAACSM/APvUjhFg5Q0/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630762122543874962" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 236px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-ohWFvNdVLbc/TiR8UUDzw5I/AAAAAAAACSM/APvUjhFg5Q0/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create a BC App Module based on the tables we created.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-Q0kngcHQmN8/TiR8UDKc8dI/AAAAAAAACSE/gk3vSMDxYmE/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630762118008336850" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 358px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-Q0kngcHQmN8/TiR8UDKc8dI/AAAAAAAACSE/gk3vSMDxYmE/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-xzG4SBeYAAA/TiR8rIzC7WI/AAAAAAAACSk/f7jMG66dyms/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630762514657766754" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 378px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-xzG4SBeYAAA/TiR8rIzC7WI/AAAAAAAACSk/f7jMG66dyms/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-V7O_nOb-zYc/TiR8q_s2VMI/AAAAAAAACSc/DEafe11LNUY/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630762512215856322" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 348px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-V7O_nOb-zYc/TiR8q_s2VMI/AAAAAAAACSc/DEafe11LNUY/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Open the AppModule and click on Service Interface, then the +&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-6jGwMbXuvtU/TiR9CEA5ZLI/AAAAAAAACS0/HHIKndWLyJI/s1600/6.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630762908510676146" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 144px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-6jGwMbXuvtU/TiR9CEA5ZLI/AAAAAAAACS0/HHIKndWLyJI/s400/6.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-GEJ9kcWqSSY/TiR9BhSy3dI/AAAAAAAACSs/RFoujjgQRUo/s1600/7.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630762899190504914" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 305px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-GEJ9kcWqSSY/TiR9BhSy3dI/AAAAAAAACSs/RFoujjgQRUo/s400/7.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-jNyFGHKm_5M/TiR9iLLiBSI/AAAAAAAACTM/yz67dxkXHTw/s1600/8.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630763460190143778" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 311px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-jNyFGHKm_5M/TiR9iLLiBSI/AAAAAAAACTM/yz67dxkXHTw/s400/8.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Do the same for the other views.&lt;br /&gt;&lt;br /&gt;FYI: Here is an extract from the official docs, detailing the operations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-xXb6krEDGVA/TiR9h4PrBoI/AAAAAAAACTE/MZLRwqSlHT0/s1600/9.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630763455107237506" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 197px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-xXb6krEDGVA/TiR9h4PrBoI/AAAAAAAACTE/MZLRwqSlHT0/s400/9.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-thPNbV7bOz0/TiR9hoNMbaI/AAAAAAAACS8/6Aw94USncG0/s1600/10.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630763450801876386" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 345px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-thPNbV7bOz0/TiR9hoNMbaI/AAAAAAAACS8/6Aw94USncG0/s400/10.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The following files are generated&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-hpMmnPIV5zU/TiR-T0q9UNI/AAAAAAAACTs/FLWwOOwB1rk/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630764313141399762" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 247px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-hpMmnPIV5zU/TiR-T0q9UNI/AAAAAAAACTs/FLWwOOwB1rk/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Test&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We can test the SDO using OrdersAMServiceImpl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-NfwnHFbBal4/TiR-ThM_K1I/AAAAAAAACTk/XD_F7rg9ejw/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630764307915418450" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 317px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-NfwnHFbBal4/TiR-ThM_K1I/AAAAAAAACTk/XD_F7rg9ejw/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Running this app will deploy it to the integrated WLS and open the test page in your browser.&lt;br /&gt;Select the getAmCustomerView1 operation&lt;br /&gt;- Enter 1 as the cust id&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-mSOZTl0mcxU/TiR-TNTha4I/AAAAAAAACTc/W_znxFtEVJ4/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630764302574119810" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 320px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-mSOZTl0mcxU/TiR-TNTha4I/AAAAAAAACTc/W_znxFtEVJ4/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-AzdzY47iD7Y/TiR-SucP_SI/AAAAAAAACTU/fpBrKqpIqNI/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630764294289227042" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 369px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-AzdzY47iD7Y/TiR-SucP_SI/AAAAAAAACTU/fpBrKqpIqNI/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Deploy to SOA Admin Server&lt;/strong&gt;&lt;br /&gt;Change the wsdl url to point to the target port&lt;br /&gt;- Per default it is generated for 7101 (the JDev integrated WLS).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-ZIRdWVxM2IE/TiR_zL1AhlI/AAAAAAAACUM/U6KWmFxMfHY/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630765951445141074" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 219px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-ZIRdWVxM2IE/TiR_zL1AhlI/AAAAAAAACUM/U6KWmFxMfHY/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add the following to the weblogic-application.xml&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-jkmSDoPfxbk/TiR_yrF9ZQI/AAAAAAAACUE/oBebjl2tfZI/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630765942657869058" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 340px; CURSOR: hand; HEIGHT: 196px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-jkmSDoPfxbk/TiR_yrF9ZQI/AAAAAAAACUE/oBebjl2tfZI/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Xh7F4k40Iwo/TiR_ydsFnhI/AAAAAAAACT8/rLIPyv2vUkI/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630765939059695122" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 203px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-Xh7F4k40Iwo/TiR_ydsFnhI/AAAAAAAACT8/rLIPyv2vUkI/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This enables us to register the SDO as an RMI Service.&lt;br /&gt;&lt;br /&gt;The Datasource used by ADF-BC (jdbc/scottDS) needs to be XA aware.&lt;br /&gt;The default generated/deployed by ADF-BC is not what we require, so we have to do 2 things - de-activate auto-generation of the weblogic-jdbc.xml and create the necessary datasource on our target WLS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-5qKFFIpivJg/TiR_yLK8gpI/AAAAAAAACT0/OuqwDnSUpXg/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630765934088848018" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 168px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-5qKFFIpivJg/TiR_yLK8gpI/AAAAAAAACT0/OuqwDnSUpXg/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using the WLS console, create a datasource jdbc/scottDS.&lt;br /&gt;Per default it will be XA aware.&lt;br /&gt;&lt;br /&gt;Create a new deployment profile of type Business Components Service Interface&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-fnPrDF_oTEY/TiSBQchaHoI/AAAAAAAACUs/n99tqqKniaM/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630767553654169218" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 340px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-fnPrDF_oTEY/TiSBQchaHoI/AAAAAAAACUs/n99tqqKniaM/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Give the application a more meaningful name&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-7hBw55mPpRA/TiSBQZMW97I/AAAAAAAACUk/UrlTrEKqgbU/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630767552760575922" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 219px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-7hBw55mPpRA/TiSBQZMW97I/AAAAAAAACUk/UrlTrEKqgbU/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Deploy from the Application Menu&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-JGF6_b4QPug/TiSBP_4CImI/AAAAAAAACUc/s9ZQbRO2Fn8/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630767545964438114" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 332px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-JGF6_b4QPug/TiSBP_4CImI/AAAAAAAACUc/s9ZQbRO2Fn8/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Test&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-NYfbBYINnTU/TiSBPohazQI/AAAAAAAACUU/vDwxUEe7ipE/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630767539695570178" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 374px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-NYfbBYINnTU/TiSBPohazQI/AAAAAAAACUU/vDwxUEe7ipE/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Leverage SDO in a BPM Composite&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Create a BPM app&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-3r8QqwEv6QM/TiSBqvLqPlI/AAAAAAAACU0/EZYBRjH_PyU/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630768005339823698" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 213px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-3r8QqwEv6QM/TiSBqvLqPlI/AAAAAAAACU0/EZYBRjH_PyU/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In Composite.xml --&amp;gt; add an ADF-BC Service (Reference).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-_kWcRdMaQBw/TiSCpJTJ98I/AAAAAAAACVc/awroMJRhbuk/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630769077502474178" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 288px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-_kWcRdMaQBw/TiSCpJTJ98I/AAAAAAAACVc/awroMJRhbuk/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note: Registry name set to ADF app name + _JBOServiceRegistry.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-uJcJRlMnuts/TiSCo2hJn8I/AAAAAAAACVU/MdkSKEb3wIo/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630769072460898242" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 140px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-uJcJRlMnuts/TiSCo2hJn8I/AAAAAAAACVU/MdkSKEb3wIo/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we add a FileAdapter(ReadOrders) which will pass in the custID.&lt;br /&gt;In the BPM designer, set Start implementation to ReadOrders.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-apLoRTCDSZw/TiSCoVFxEZI/AAAAAAAACVM/PIJARphKTqI/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630769063487672722" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 323px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-apLoRTCDSZw/TiSCoVFxEZI/AAAAAAAACVM/PIJARphKTqI/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add a Service activity to retrieve the customer from the DB.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-9RddegF8DNg/TiSCoE4iTjI/AAAAAAAACVE/6ZP_irBcapM/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630769059137211954" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 265px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-9RddegF8DNg/TiSCoE4iTjI/AAAAAAAACVE/6ZP_irBcapM/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Jrddh21sVyk/TiSCn-T7Q0I/AAAAAAAACU8/tNHVMqhimU8/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630769057373045570" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 285px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-Jrddh21sVyk/TiSCn-T7Q0I/AAAAAAAACU8/tNHVMqhimU8/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Deploy &amp;amp; test&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-pMphzzOX_p0/TiSDHQ1E_AI/AAAAAAAACVs/tTAqJ8654_A/s1600/6.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630769594919877634" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 281px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-pMphzzOX_p0/TiSDHQ1E_AI/AAAAAAAACVs/tTAqJ8654_A/s400/6.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-hkn1hd2-ALI/TiSDHMqICgI/AAAAAAAACVk/u0aUX3mGNug/s1600/7.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5630769593800198658" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 297px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-hkn1hd2-ALI/TiSDHMqICgI/AAAAAAAACVk/u0aUX3mGNug/s400/7.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Appendix A&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;ALTER TABLE AM_PRODUCT &lt;br /&gt;DROP CONSTRAINT AM_PRODUCT_AM_ORDER_LINE_FK;&lt;br /&gt;&lt;br /&gt;ALTER TABLE AM_ORDER_LINE &lt;br /&gt;DROP CONSTRAINT AM_ORDER_LINE_AM_ORDER_FK;&lt;br /&gt;&lt;br /&gt;ALTER TABLE AM_ORDER &lt;br /&gt;DROP CONSTRAINT AM_ORDER_AM_CUSTOMER_FK;&lt;br /&gt;&lt;br /&gt;DROP TABLE AM_PRODUCT CASCADE CONSTRAINTS;&lt;br /&gt;&lt;br /&gt;DROP TABLE AM_ORDER_LINE CASCADE CONSTRAINTS;&lt;br /&gt;&lt;br /&gt;DROP TABLE AM_ORDER CASCADE CONSTRAINTS;&lt;br /&gt;&lt;br /&gt;DROP TABLE AM_CUSTOMER CASCADE CONSTRAINTS;&lt;br /&gt;&lt;br /&gt;CREATE TABLE AM_PRODUCT &lt;br /&gt;(&lt;br /&gt;  PRODUCT_ID VARCHAR2(20) NOT NULL &lt;br /&gt;, PRODUCT_NAME VARCHAR2(20) NOT NULL &lt;br /&gt;, PRODUCT_PRICE DECIMAL NOT NULL &lt;br /&gt;, PRODUCT_DESCRIPTION VARCHAR2(255) &lt;br /&gt;, ORDER_LINE_ID VARCHAR2(20) &lt;br /&gt;, CONSTRAINT AM_PRODUCT_PK PRIMARY KEY &lt;br /&gt;  (&lt;br /&gt;    PRODUCT_ID &lt;br /&gt;  )&lt;br /&gt;  ENABLE &lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;CREATE TABLE AM_ORDER_LINE &lt;br /&gt;(&lt;br /&gt;  ORDER_LINE_ID VARCHAR2(20) NOT NULL &lt;br /&gt;, ORDER_LINE_ITEM_DISCOUNT DECIMAL NOT NULL &lt;br /&gt;, ORDER_LINE_ITEM_QUANTITY NUMBER NOT NULL &lt;br /&gt;, ORDER_ID VARCHAR2(20) &lt;br /&gt;, CONSTRAINT AM_ORDER_LINE_PK PRIMARY KEY &lt;br /&gt;  (&lt;br /&gt;    ORDER_LINE_ID &lt;br /&gt;  )&lt;br /&gt;  ENABLE &lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;CREATE TABLE AM_ORDER &lt;br /&gt;(&lt;br /&gt;  ORDER_ID VARCHAR2(20) NOT NULL &lt;br /&gt;, ORDER_STATUS VARCHAR2(20) NOT NULL &lt;br /&gt;, ORDER_DISCOUNT DECIMAL &lt;br /&gt;, ORDER_COMMENTS VARCHAR2(255) &lt;br /&gt;, CUST_ID VARCHAR2(20) &lt;br /&gt;, CONSTRAINT AM_ORDER_PK PRIMARY KEY &lt;br /&gt;  (&lt;br /&gt;    ORDER_ID &lt;br /&gt;  )&lt;br /&gt;  ENABLE &lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;CREATE TABLE AM_CUSTOMER &lt;br /&gt;(&lt;br /&gt;  CUST_ID VARCHAR2(20) NOT NULL &lt;br /&gt;, CUST_NAME VARCHAR2(20) NOT NULL &lt;br /&gt;, CUST_EMAIL VARCHAR2(20) NOT NULL &lt;br /&gt;, CUST_CREDITCARD_TYPE VARCHAR2(20) NOT NULL &lt;br /&gt;, CUST_CREDITCARD_NR VARCHAR2(20) NOT NULL &lt;br /&gt;, CONSTRAINT AM_CUSTOMER_PK PRIMARY KEY &lt;br /&gt;  (&lt;br /&gt;    CUST_ID &lt;br /&gt;  )&lt;br /&gt;  ENABLE &lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;ALTER TABLE AM_PRODUCT&lt;br /&gt;ADD CONSTRAINT AM_PRODUCT_AM_ORDER_LINE_FK FOREIGN KEY&lt;br /&gt;(&lt;br /&gt;  ORDER_LINE_ID &lt;br /&gt;)&lt;br /&gt;REFERENCES AM_ORDER_LINE&lt;br /&gt;(&lt;br /&gt;  ORDER_LINE_ID &lt;br /&gt;)&lt;br /&gt;ENABLE;&lt;br /&gt;&lt;br /&gt;ALTER TABLE AM_ORDER_LINE&lt;br /&gt;ADD CONSTRAINT AM_ORDER_LINE_AM_ORDER_FK FOREIGN KEY&lt;br /&gt;(&lt;br /&gt;  ORDER_ID &lt;br /&gt;)&lt;br /&gt;REFERENCES AM_ORDER&lt;br /&gt;(&lt;br /&gt;  ORDER_ID &lt;br /&gt;)&lt;br /&gt;ENABLE;&lt;br /&gt;&lt;br /&gt;ALTER TABLE AM_ORDER&lt;br /&gt;ADD CONSTRAINT AM_ORDER_AM_CUSTOMER_FK FOREIGN KEY&lt;br /&gt;(&lt;br /&gt;  CUST_ID &lt;br /&gt;)&lt;br /&gt;REFERENCES AM_CUSTOMER&lt;br /&gt;(&lt;br /&gt;  CUST_ID &lt;br /&gt;)&lt;br /&gt;ENABLE;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-9085894128012416358?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/9085894128012416358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=9085894128012416358' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/9085894128012416358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/9085894128012416358'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/07/leveraging-sdos-in-bpm11g.html' title='Leveraging SDOs in BPM11g'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-poMeRX3_n9I/TiR7P_NdQMI/AAAAAAAACR0/QoLE7kCtAA8/s72-c/1.GIF' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-5426267458682343532</id><published>2011-07-11T02:36:00.000-07:00</published><updated>2011-07-11T02:55:45.146-07:00</updated><title type='text'>Celebrate the 50th Oracle book from Packt Publishing</title><content type='html'>Great books on special offer to celebrate the event&lt;br /&gt;&lt;br /&gt;Please see&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.packtpub.com/article/50th-oracle-book-offer"&gt;http://www.packtpub.com/article/50th-oracle-book-offer&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-5426267458682343532?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/5426267458682343532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=5426267458682343532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/5426267458682343532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/5426267458682343532'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/07/50th-oracle-book-offer-from-by-packt.html' title='Celebrate the 50th Oracle book from Packt Publishing'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8963832208914041879</id><published>2011-07-06T03:09:00.000-07:00</published><updated>2011-07-06T03:39:01.929-07:00</updated><title type='text'>SOA Suite 11g: Test 2 Production via Config Plan</title><content type='html'>Scenario:&lt;br /&gt;I have a simple SOA composite that calls a validation service.&lt;br /&gt;I develop this in my test environment using the validation web service running on the test server. Now I'm deploying to production and need to leverage the web service running on the production server.&lt;br /&gt;&lt;br /&gt;Create a new Application in JDev that will contain 2 web service projects -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-w-7yapml9LQ/ThQ2MfIDBNI/AAAAAAAACQc/3uWyOOmldgI/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 130px;" src="http://3.bp.blogspot.com/-w-7yapml9LQ/ThQ2MfIDBNI/AAAAAAAACQc/3uWyOOmldgI/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626181422634173650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-JsJSz7u7UHI/ThQ2MXtgPvI/AAAAAAAACQU/s1LLPAPOHTc/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 130px;" src="http://4.bp.blogspot.com/-JsJSz7u7UHI/ThQ2MXtgPvI/AAAAAAAACQU/s1LLPAPOHTc/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626181420643794674" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Expose as web services&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-VoUms5tPjCM/ThQ2t9TvOSI/AAAAAAAACQk/_nk_npSPuCE/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 262px; height: 400px;" src="http://1.bp.blogspot.com/-VoUms5tPjCM/ThQ2t9TvOSI/AAAAAAAACQk/_nk_npSPuCE/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626181997671954722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Deploy the web services to WLS.&lt;br /&gt;&lt;br /&gt;Check the 2 URLS:&lt;br /&gt;&lt;br /&gt;http://localhost:7001/Test-ValidatePerson/ValidationServicePort?WSDL&lt;br /&gt;http://localhost:7001/Prod-ValidatePerson/ValidationServicePort?WSDL&lt;br /&gt;&lt;br /&gt;Create a SOA composite with a sync BPEL process.&lt;br /&gt;Invoke the test service from BPEL&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-wmtxOQZ_iec/ThQ4RGw6B9I/AAAAAAAACQs/bx69OlPVA7M/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 91px;" src="http://1.bp.blogspot.com/-wmtxOQZ_iec/ThQ4RGw6B9I/AAAAAAAACQs/bx69OlPVA7M/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626183701017266130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-35iRqJEewY0/ThQ4o1yzI8I/AAAAAAAACQ0/HHEFe_hkXyA/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 276px;" src="http://1.bp.blogspot.com/-35iRqJEewY0/ThQ4o1yzI8I/AAAAAAAACQ0/HHEFe_hkXyA/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626184108778660802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Deploy &amp; Test&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-ZCWWPpBUzUk/ThQ5NDS562I/AAAAAAAACQ8/TqZ-B_u18yg/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 357px;" src="http://4.bp.blogspot.com/-ZCWWPpBUzUk/ThQ5NDS562I/AAAAAAAACQ8/TqZ-B_u18yg/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626184730878274402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;back in JDev, right click on composite.xml and select Generate Config Plan&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-HJ8w_F8-QVI/ThQ5m33EaZI/AAAAAAAACRE/AF_fj-j3x50/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://2.bp.blogspot.com/-HJ8w_F8-QVI/ThQ5m33EaZI/AAAAAAAACRE/AF_fj-j3x50/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626185174485330322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here I can replace the Test with the Prod WSDL&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-pYWpJCsVqU4/ThQ55qLNQCI/AAAAAAAACRM/a6kLBWrHifA/s1600/8.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://2.bp.blogspot.com/-pYWpJCsVqU4/ThQ55qLNQCI/AAAAAAAACRM/a6kLBWrHifA/s400/8.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626185497229213730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-zWZuBsFyq1U/ThQ6IMnOr7I/AAAAAAAACRU/0CXRI245vJk/s1600/9.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 213px;" src="http://1.bp.blogspot.com/-zWZuBsFyq1U/ThQ6IMnOr7I/AAAAAAAACRU/0CXRI245vJk/s400/9.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626185746991722418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Re-deploy, selecting the config plan&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-I3jcwFs7Hsw/ThQ6eVKGeII/AAAAAAAACRc/tCO2UCtBvnk/s1600/10.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 303px;" src="http://2.bp.blogspot.com/-I3jcwFs7Hsw/ThQ6eVKGeII/AAAAAAAACRc/tCO2UCtBvnk/s400/10.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626186127242590338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Re-test&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-9KwEJ0ALKP4/ThQ7N5q1y2I/AAAAAAAACRk/SDNYuIC04D8/s1600/11.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 370px;" src="http://3.bp.blogspot.com/-9KwEJ0ALKP4/ThQ7N5q1y2I/AAAAAAAACRk/SDNYuIC04D8/s400/11.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5626186944497437538" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8963832208914041879?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8963832208914041879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8963832208914041879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8963832208914041879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8963832208914041879'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/07/soa-suite-11g-test-2-production-via.html' title='SOA Suite 11g: Test 2 Production via Config Plan'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-w-7yapml9LQ/ThQ2MfIDBNI/AAAAAAAACQc/3uWyOOmldgI/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-6190625351476611446</id><published>2011-07-05T06:31:00.001-07:00</published><updated>2011-07-05T06:56:40.947-07:00</updated><title type='text'>SOA Suite 11g - FTP Adapter</title><content type='html'>Here is a simple lab demonstrating use of the FTP adapter.&lt;br /&gt;&lt;br /&gt;I'm using FileZilla as my FTP Server.&lt;br /&gt;&lt;br /&gt;I created the following directories&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-M8Lfl9sR-Xg/ThMSxueb_1I/AAAAAAAACOc/UUWXve61e0Q/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5625861005014466386" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 97px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-M8Lfl9sR-Xg/ThMSxueb_1I/AAAAAAAACOc/UUWXve61e0Q/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FTP Server Configuration&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I create a user NiallC/NiallC&lt;br /&gt;and configure the shared folders as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-ARSc5YqX54I/ThMTHsLxI-I/AAAAAAAACOk/dpy_qemIO30/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5625861382356411362" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 268px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-ARSc5YqX54I/ThMTHsLxI-I/AAAAAAAACOk/dpy_qemIO30/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Create FTP Adapter artifacts using WLS Console&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Deployments --&amp;gt; FtpAdapter --&amp;gt; Configuration --&amp;gt; Outbound Connection Pools --&amp;gt; New&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-h0ZlqL9-EKw/ThMT6cqk1sI/AAAAAAAACOs/9FhEWEMJ0EY/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 196px;" src="http://3.bp.blogspot.com/-h0ZlqL9-EKw/ThMT6cqk1sI/AAAAAAAACOs/9FhEWEMJ0EY/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625862254363989698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Edit the properties as follows -&lt;br /&gt;&lt;br /&gt;host=localhost&lt;br /&gt;password=NiallC&lt;br /&gt;port=21&lt;br /&gt;username=NiallC&lt;br /&gt;serverType=win&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-maMxwN8KrLY/ThMU3sAuN5I/AAAAAAAACPM/7ARpF2CTOx0/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 101px;" src="http://2.bp.blogspot.com/-maMxwN8KrLY/ThMU3sAuN5I/AAAAAAAACPM/7ARpF2CTOx0/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625863306455431058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-h3CqOJjW-Fg/ThMU3F-hvdI/AAAAAAAACPE/eU4UpKqT6JU/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 94px;" src="http://3.bp.blogspot.com/-h3CqOJjW-Fg/ThMU3F-hvdI/AAAAAAAACPE/eU4UpKqT6JU/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625863296245677522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-qnrCpdQZ5zc/ThMU2oK8MfI/AAAAAAAACO8/wozgH7Gy4Fs/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 88px;" src="http://4.bp.blogspot.com/-qnrCpdQZ5zc/ThMU2oK8MfI/AAAAAAAACO8/wozgH7Gy4Fs/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625863288244679154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-e6Ar7_VFA3Y/ThMVOHY6IfI/AAAAAAAACPU/CWaeLVlO6iU/s1600/8.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 96px;" src="http://4.bp.blogspot.com/-e6Ar7_VFA3Y/ThMVOHY6IfI/AAAAAAAACPU/CWaeLVlO6iU/s400/8.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625863691761754610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-SrDhaAp7f8o/ThMU2X_TXyI/AAAAAAAACO0/MmtQq8h5BGM/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 97px;" src="http://2.bp.blogspot.com/-SrDhaAp7f8o/ThMU2X_TXyI/AAAAAAAACO0/MmtQq8h5BGM/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625863283900899106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Create a new SOA app&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-c2tUd6BzaJQ/ThMV7t6_yYI/AAAAAAAACPc/IU7Drpf7xaM/s1600/9.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 79px;" src="http://3.bp.blogspot.com/-c2tUd6BzaJQ/ThMV7t6_yYI/AAAAAAAACPc/IU7Drpf7xaM/s400/9.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625864475199392130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this example I read in an(GET) order and then write it out (PUT).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-eyBg8jeA8p8/ThMXQSiQaUI/AAAAAAAACQM/vhJUR8oq3J8/s1600/15.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 313px;" src="http://3.bp.blogspot.com/-eyBg8jeA8p8/ThMXQSiQaUI/AAAAAAAACQM/vhJUR8oq3J8/s400/15.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625865928136747330" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Configure the read adapter as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-7ARBpBDNETA/ThMWYZ9dMTI/AAAAAAAACP0/jJ4YYGAajks/s1600/10.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 295px; height: 288px;" src="http://4.bp.blogspot.com/-7ARBpBDNETA/ThMWYZ9dMTI/AAAAAAAACP0/jJ4YYGAajks/s400/10.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625864968057205042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-bTVFPwdhb0Q/ThMWYGzdbaI/AAAAAAAACPs/Y9d5OANWxR4/s1600/11.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 306px; height: 331px;" src="http://3.bp.blogspot.com/-bTVFPwdhb0Q/ThMWYGzdbaI/AAAAAAAACPs/Y9d5OANWxR4/s400/11.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625864962915003810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-hQs91Fdjyf0/ThMWXw1Ib8I/AAAAAAAACPk/lwZ8PUHvf7o/s1600/12.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 380px;" src="http://1.bp.blogspot.com/-hQs91Fdjyf0/ThMWXw1Ib8I/AAAAAAAACPk/lwZ8PUHvf7o/s400/12.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625864957016436674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Configure the write adapter as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-lPrrHYOGQLM/ThMWvwXq2WI/AAAAAAAACQE/yuITn08FZkY/s1600/13.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 354px; height: 400px;" src="http://3.bp.blogspot.com/-lPrrHYOGQLM/ThMWvwXq2WI/AAAAAAAACQE/yuITn08FZkY/s400/13.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625865369209723234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-bcIQ8gKnpNM/ThMWvvFwSNI/AAAAAAAACP8/ZezaY5SDnUM/s1600/14.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 273px;" src="http://4.bp.blogspot.com/-bcIQ8gKnpNM/ThMWvvFwSNI/AAAAAAAACP8/ZezaY5SDnUM/s400/14.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5625865368866146514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add the Mediator and specify the transformation.&lt;br /&gt;&lt;br /&gt;That's it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;App at&lt;br /&gt;https://docs.google.com/leaf?id=0B7YrnfO7h717ODc1ZTY2MTgtMTMzNS00ZTM4LWFkM2UtYjcyNjExMWMzOWIy&amp;hl=en_US&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-6190625351476611446?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/6190625351476611446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=6190625351476611446' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6190625351476611446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6190625351476611446'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/07/soa-suite-11g-ftp-adapter.html' title='SOA Suite 11g - FTP Adapter'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-M8Lfl9sR-Xg/ThMSxueb_1I/AAAAAAAACOc/UUWXve61e0Q/s72-c/1.GIF' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-2416907245961562836</id><published>2011-06-24T01:45:00.000-07:00</published><updated>2011-06-28T16:28:51.938-07:00</updated><title type='text'>Reusing task UIs in BPM11g</title><content type='html'>Scenario: Both sales and finance need to approve the incoming order. The payload is the same for both human tasks.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-wKHECpcDFJQ/TgRPIDjxAzI/AAAAAAAACNs/MKkNe-wQMaw/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 287px;" src="http://4.bp.blogspot.com/-wKHECpcDFJQ/TgRPIDjxAzI/AAAAAAAACNs/MKkNe-wQMaw/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5621705234678088498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In this lab we generate the ADF UI project for ApprovePart1 and then configure it to be used for ApprovePart2.&lt;br /&gt;&lt;br /&gt;1. Create a simple BPM app with 2 human tasks(same payload) in JDev.&lt;br /&gt;2. Auto-generate the task form for the 1st task.&lt;br /&gt;3. Check out the hwtaskflow.xml file in the UI project.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-TCEKp-OMjpk/TgRQB51yTDI/AAAAAAAACN0/d_oXWxc16wU/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 203px;" src="http://4.bp.blogspot.com/-TCEKp-OMjpk/TgRQB51yTDI/AAAAAAAACN0/d_oXWxc16wU/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5621706228501728306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Add a second entry - &lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-5SEkq096Iy4/TgRQW7a54mI/AAAAAAAACN8/AUl8p8H_puA/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 109px;" src="http://3.bp.blogspot.com/-5SEkq096Iy4/TgRQW7a54mI/AAAAAAAACN8/AUl8p8H_puA/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5621706589703103074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4.1. We just need to change &lt;strong&gt;WorkflowName&lt;/strong&gt; and &lt;strong&gt;TaskDefinitionNamespace&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;5. Define users for the roles -&lt;br /&gt;5.1. Sales- jcooper, Finance - jstein&lt;br /&gt;&lt;br /&gt;6. Deploy and test. I'm using a FileAdapter to Read in orders.&lt;br /&gt;&lt;br /&gt;6.1. login to Workspace as jcooper, make some changes to the payload, then Approve&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-oHsitRYiiSM/TgRT6iWPitI/AAAAAAAACOM/kqzJ_xxlFK0/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 232px;" src="http://4.bp.blogspot.com/-oHsitRYiiSM/TgRT6iWPitI/AAAAAAAACOM/kqzJ_xxlFK0/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5621710499982838482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.2. login as jstein&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-w12euUMfiJE/TgRUVo4iNCI/AAAAAAAACOU/rXi6cWWVa38/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 231px;" src="http://3.bp.blogspot.com/-w12euUMfiJE/TgRUVo4iNCI/AAAAAAAACOU/rXi6cWWVa38/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5621710965593748514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;full doc at&lt;br /&gt;http://download.oracle.com/docs/cd/E17904_01/integration.1111/e10224/bp_designtf.htm#CHDBHHBI&lt;br /&gt;&lt;br /&gt;JDev workspace at -&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;https://docs.google.com/leaf?id=0B7YrnfO7h717ODdjOTczMjItYmRiYi00Yjk2LWE4NTUtNGQ2MDAyNGVjNzE1&amp;hl=en_US&amp;authkey=CNP1-twC&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-2416907245961562836?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/2416907245961562836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=2416907245961562836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2416907245961562836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2416907245961562836'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/06/reusing-task-uis-in-bpm11g.html' title='Reusing task UIs in BPM11g'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-wKHECpcDFJQ/TgRPIDjxAzI/AAAAAAAACNs/MKkNe-wQMaw/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-7954804823464341135</id><published>2011-06-16T23:53:00.000-07:00</published><updated>2011-06-17T00:22:39.044-07:00</updated><title type='text'>Pinning tasks to a user in BPM 11g</title><content type='html'>Scenario: &lt;br /&gt;A BPM process with 1 swimlane - Supervisors(e.g. mtwain, jcooper,  rsteven)&lt;br /&gt;An order enters the system and is then processed via 2 human tasks.&lt;br /&gt;&lt;br /&gt;Task 2 should be assigned to the supervisor that processed task 1.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-D2unhjZxrCc/Tfr7AuL2_JI/AAAAAAAACMk/ara6N7xUsws/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 179px;" src="http://1.bp.blogspot.com/-D2unhjZxrCc/Tfr7AuL2_JI/AAAAAAAACMk/ara6N7xUsws/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5619079474914458770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ergo, if jcooper logs in to workspace and claims/approves ApprovePart1, then ApprovePart2 should be assigned to her.&lt;br /&gt;&lt;br /&gt;Assign ApprovePart1 to the Supervisor group&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-bhwyaDvnmq4/Tfr7XunGkWI/AAAAAAAACMs/83qDFIYHQ2M/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 263px;" src="http://1.bp.blogspot.com/-bhwyaDvnmq4/Tfr7XunGkWI/AAAAAAAACMs/83qDFIYHQ2M/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5619079870165717346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Assign ApprovePart2 to whoever approved the previous task i.e. ApprovePart1&lt;br /&gt;&lt;br /&gt;The Human Workflow service provides us with the following function -&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;hwf:getPreviousTaskApprover()&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;According to the Description –&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Get the previous task approver. The signature of this function is hwf:getPreviousTaskApprover(taskId). The arguments are: 1) taskId - The task id of the task Returns an XML element user, in the namespace http://xmlns.oracle.com/bpel/services/IdentityService, that contains the previous approver user id.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;So we need to pass it the taskID of ApprovePart1.&lt;br /&gt;&lt;br /&gt;We need to get this from the execData structure so return to the data mapping for ApprovePart1 -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-SmXCGBCy7gE/Tfr9GYpfs8I/AAAAAAAACM0/MOTbsBjS9H4/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 145px;" src="http://1.bp.blogspot.com/-SmXCGBCy7gE/Tfr9GYpfs8I/AAAAAAAACM0/MOTbsBjS9H4/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5619081771235652546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You see I have also created a process variable v_taskid of type String.&lt;br /&gt;&lt;br /&gt;Now I need to specify this v_taskid value as the parameter to hwf:getPreviousTaskApprover(). My basic solution here is to copy it to one of &lt;br /&gt;the flexfields in my payload. I'm sure there are more elegant ways of doing this. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Go2WJoap7HM/Tfr-JilexGI/AAAAAAAACM8/WXAPRIkVTTU/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 126px;" src="http://1.bp.blogspot.com/-Go2WJoap7HM/Tfr-JilexGI/AAAAAAAACM8/WXAPRIkVTTU/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5619082924954403938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-nwSGifJ_Y3Q/Tfr-ZtUSaPI/AAAAAAAACNE/WR51LU7OvBA/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 175px;" src="http://1.bp.blogspot.com/-nwSGifJ_Y3Q/Tfr-ZtUSaPI/AAAAAAAACNE/WR51LU7OvBA/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5619083202712987890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we can return to the definition of the 2nd Task and add in the parameter.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-VT0YnmCUDQg/Tfr--fMVOOI/AAAAAAAACNM/7WXmO5ENBfc/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 187px;" src="http://3.bp.blogspot.com/-VT0YnmCUDQg/Tfr--fMVOOI/AAAAAAAACNM/7WXmO5ENBfc/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5619083834576681186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Auto-generate the ADF task forms and deploy.&lt;br /&gt;&lt;br /&gt;Test&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-jv6XxQlyRl0/Tfr_hTjoWUI/AAAAAAAACNU/U62vHwNGRfY/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 171px;" src="http://2.bp.blogspot.com/-jv6XxQlyRl0/Tfr_hTjoWUI/AAAAAAAACNU/U62vHwNGRfY/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5619084432748599618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Login to BPM workspaces as jcooper&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-hb7u3B2XVLU/TfsABx9-7uI/AAAAAAAACNc/vur7YDqnA-E/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 78px;" src="http://3.bp.blogspot.com/-hb7u3B2XVLU/TfsABx9-7uI/AAAAAAAACNc/vur7YDqnA-E/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5619084990668009186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Task has been assigned to the group.&lt;br /&gt;&lt;br /&gt;Approve&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Kq063exNFUA/TfsAkN00HpI/AAAAAAAACNk/Pv0Et4vIp5w/s1600/8.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 95px;" src="http://2.bp.blogspot.com/-Kq063exNFUA/TfsAkN00HpI/AAAAAAAACNk/Pv0Et4vIp5w/s400/8.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5619085582261296786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Task2 has been assigned to jcooper&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-7954804823464341135?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/7954804823464341135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=7954804823464341135' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7954804823464341135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7954804823464341135'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/06/pinning-tasks-to-user-in-bpm-11g.html' title='Pinning tasks to a user in BPM 11g'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-D2unhjZxrCc/Tfr7AuL2_JI/AAAAAAAACMk/ara6N7xUsws/s72-c/1.GIF' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8642300024360456944</id><published>2011-06-15T23:53:00.000-07:00</published><updated>2011-06-16T00:09:18.145-07:00</updated><title type='text'>Sharing comments between BPM processes</title><content type='html'>I have a simple scenario -&lt;br /&gt;A BPM process that accepts in an order and then processes it via 2 human tasks - validateCustomer / validateProduct.&lt;br /&gt;I would like to share comments entered in human task 1 with human task 2.&lt;br /&gt;&lt;br /&gt;When we define a Human Task in BPEL we can, via the Advanced tab, activate a checkbox to include the task history, comments etc from a previous task.&lt;br /&gt;&lt;br /&gt;This functionality is available as follows in BPM 11g.&lt;br /&gt;(Merci JorgeW.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/-etl9lvJJYMo/TfmrWenDYlI/AAAAAAAACMM/SOgMhp-SKmM/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5618710412783739474" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 80px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-etl9lvJJYMo/TfmrWenDYlI/AAAAAAAACMM/SOgMhp-SKmM/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-XRsGIeda5YY/TfmrWOISBHI/AAAAAAAACME/_1Bgy8haNf8/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5618710408359707762" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 398px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-XRsGIeda5YY/TfmrWOISBHI/AAAAAAAACME/_1Bgy8haNf8/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Deploy and test&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-n3r7rwKkmGA/TfmrpFMC1hI/AAAAAAAACMc/ApGgU3wd_MU/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5618710732377085458" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 320px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-n3r7rwKkmGA/TfmrpFMC1hI/AAAAAAAACMc/ApGgU3wd_MU/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Amend the payload, add a comment etc, Approve.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/-hz-IIVR-d58/Tfmro0inr6I/AAAAAAAACMU/4c1xAhZ69c8/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5618710727908372386" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 281px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-hz-IIVR-d58/Tfmro0inr6I/AAAAAAAACMU/4c1xAhZ69c8/s400/4.GIF" border="0" /&gt;&lt;/a&gt;Comment is visible in the next human task.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8642300024360456944?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8642300024360456944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8642300024360456944' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8642300024360456944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8642300024360456944'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/06/sharing-comments-between-bpm-processes.html' title='Sharing comments between BPM processes'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-etl9lvJJYMo/TfmrWenDYlI/AAAAAAAACMM/SOgMhp-SKmM/s72-c/1.GIF' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-3606828737490613040</id><published>2011-06-07T06:04:00.000-07:00</published><updated>2011-06-07T13:20:06.299-07:00</updated><title type='text'>Invoking SOA Composite as part of a global transaction</title><content type='html'>Scenario: Java client calls SOA Suite composite to process an order as part of a global transaction. The SOA composite is expose as an EJB service. The composite contains 1 BPEL process that itself calls an EJB service to update our Orders DB.&lt;br /&gt;&lt;br /&gt;I'm using SCOTT's schema and have already created a datasource on WLS for it.&lt;br /&gt;&lt;br /&gt;name: scottDS&lt;br /&gt;jndi: jdbc/scottDS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1. Create DB Table - test &lt;/strong&gt;&lt;br /&gt;Create table test (id number(2), quantity number(2));&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2. Create a stateless session EJB to update this table&lt;/strong&gt;&lt;br /&gt;create a new application/project in JDev and include a statelsss session EJB 2.1&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-8f8xzUk8n0w/Te4lOdbdhYI/AAAAAAAACIE/jv4MAOhO0nY/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615466715725792642" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 180px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-8f8xzUk8n0w/Te4lOdbdhYI/AAAAAAAACIE/jv4MAOhO0nY/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-PAJ73bya568/Te4lN3sbXoI/AAAAAAAACH8/AZV_VTd0sjE/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615466705596407426" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 195px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-PAJ73bya568/Te4lN3sbXoI/AAAAAAAACH8/AZV_VTd0sjE/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-uDVRVNfCV6M/Te4lNplURcI/AAAAAAAACH0/zQUiWE9GHww/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615466701808485826" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 119px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-uDVRVNfCV6M/Te4lNplURcI/AAAAAAAACH0/zQUiWE9GHww/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-gzWlD7PCWpE/Te4lNU_5F3I/AAAAAAAACHs/1SgJIUpdu2M/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615466696282806130" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 278px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-gzWlD7PCWpE/Te4lNU_5F3I/AAAAAAAACHs/1SgJIUpdu2M/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Inqzix7Vy2I/Te4lNFJz6zI/AAAAAAAACHk/icIRe7QPYcc/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615466692029442866" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 325px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-Inqzix7Vy2I/Te4lNFJz6zI/AAAAAAAACHk/icIRe7QPYcc/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2.1 - Add the following business method&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;public String callDB(int id, int quantity) {&lt;br /&gt;Connection connection = null;&lt;br /&gt;DataSource dataSource = null;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;/*&lt;br /&gt;* 1. Create an InitialContext.&lt;br /&gt;* 2. From the initial context, lookup the logical datasource reference&lt;br /&gt;that is in the deployment descriptor.&lt;br /&gt;*/&lt;br /&gt;InitialContext initialcontext = new InitialContext();&lt;br /&gt;dataSource = (DataSource)initialcontext.lookup("jdbc.scottDS");&lt;br /&gt;&lt;br /&gt;System.out.println("***** Got Datasource...");&lt;br /&gt;// Check to see if the datasource is valid&lt;br /&gt;if(dataSource==null)&lt;br /&gt;{&lt;br /&gt;System.err.println("*** DataSource retrieved is null, did you add the code?");&lt;br /&gt;throw new ServletException("DataSource retrieved is null");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;connection = dataSource.getConnection();&lt;br /&gt;Statement stmt = connection.createStatement();&lt;br /&gt;String insert = "insert into test values(" + id + "," + quantity + ")";&lt;br /&gt;System.out.println("INSERT = " + insert);&lt;br /&gt;stmt.executeUpdate(insert);&lt;br /&gt;&lt;br /&gt;ResultSet rset = stmt.executeQuery("Select to_char(sysdate) from dual");&lt;br /&gt;while (rset.next())&lt;br /&gt;{&lt;br /&gt;System.out.println("*** Date = " + rset.getString(1));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;System.err.println("*** init() Exception, " + e.getMessage());&lt;br /&gt;System.err.println(e);&lt;br /&gt;}&lt;br /&gt;return "Ok";&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 3 - Deploy and view the JNDI tree &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;specify jndi name before deploying -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-HGB-wVIpO7k/Te4m5UJlnAI/AAAAAAAACIM/Jjq0B06Xrqk/s1600/6.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615468551480908802" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 148px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-HGB-wVIpO7k/Te4m5UJlnAI/AAAAAAAACIM/Jjq0B06Xrqk/s400/6.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-FZQoylot2Ks/Te4pPN48LRI/AAAAAAAACIU/TWqGG8ZYLcg/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615471126780849426" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-FZQoylot2Ks/Te4pPN48LRI/AAAAAAAACIU/TWqGG8ZYLcg/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 4 - Create a new SOA App in Jdeveloper&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Create a SOA Composite app&lt;br /&gt;Add the ejb jar from the previous project to the apps classpath.&lt;br /&gt;(We really only need the interface!)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-TGSK7it0_DI/Te4ul_BoTSI/AAAAAAAACJE/EUwFcMN4cAg/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615477015485893922" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 119px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-TGSK7it0_DI/Te4ul_BoTSI/AAAAAAAACJE/EUwFcMN4cAg/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-wOXFq_gC45c/Te4sJPR7DCI/AAAAAAAACI8/xB5RVGA4cg4/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615474322609736738" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 60px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-wOXFq_gC45c/Te4sJPR7DCI/AAAAAAAACI8/xB5RVGA4cg4/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-8D6dxl-Ex7s/Te4sIpa9RtI/AAAAAAAACI0/a1xFdYke2UQ/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615474312447084242" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 250px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-8D6dxl-Ex7s/Te4sIpa9RtI/AAAAAAAACI0/a1xFdYke2UQ/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-KbMqq9X6z4c/Te4sH6Og9TI/AAAAAAAACIs/pBKmJLLtob8/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615474299778430258" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 250px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-KbMqq9X6z4c/Te4sH6Og9TI/AAAAAAAACIs/pBKmJLLtob8/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create the following input xsd&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-2AkA_77aZOc/Te4sHtiMYWI/AAAAAAAACIk/bpI6UzU01ws/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615474296371306850" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 265px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-2AkA_77aZOc/Te4sHtiMYWI/AAAAAAAACIk/bpI6UzU01ws/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-fnyJo-ynrhg/Te4sHb09MkI/AAAAAAAACIc/D0K952E6eqA/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615474291618165314" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 372px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-fnyJo-ynrhg/Te4sHb09MkI/AAAAAAAACIc/D0K952E6eqA/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create a synchronous BPEL process&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-C4u5Td1gQC4/Te4umKbRdlI/AAAAAAAACJM/7148qXkUWhg/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615477018546239058" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 274px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-C4u5Td1gQC4/Te4umKbRdlI/AAAAAAAACJM/7148qXkUWhg/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create an EJB reference&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-SkypV8YTJok/Te5_R8Rn2RI/AAAAAAAACK8/ck54W44P3c8/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 201px;" src="http://3.bp.blogspot.com/-SkypV8YTJok/Te5_R8Rn2RI/AAAAAAAACK8/ck54W44P3c8/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5615565731592132882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-nmzwwuJue7Y/Te4vlPOUW0I/AAAAAAAACJc/JpOriodwqYI/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615478102165838658" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 140px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-nmzwwuJue7Y/Te4vlPOUW0I/AAAAAAAACJc/JpOriodwqYI/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wire up&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-JlCRJnslYTk/Te4vk02Z1_I/AAAAAAAACJU/_EU7FcgrWgQ/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615478095086213106" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 93px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-JlCRJnslYTk/Te4vk02Z1_I/AAAAAAAACJU/_EU7FcgrWgQ/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add the Invoke to the BPEL process&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-dprKWOqNAbc/Te4w90nvLxI/AAAAAAAACKE/2_SLScq3Njs/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615479624033054482" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 374px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-dprKWOqNAbc/Te4w90nvLxI/AAAAAAAACKE/2_SLScq3Njs/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add the required Assigns, before and after&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-daMLkB1UmAw/Te4w9lOM5BI/AAAAAAAACJ8/zP87m4EM4hg/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615479619899417618" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 215px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-daMLkB1UmAw/Te4w9lOM5BI/AAAAAAAACJ8/zP87m4EM4hg/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-EPRATjaUNjg/Te4w9Oex_SI/AAAAAAAACJ0/ShFW8yFUH0I/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615479613794942242" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 224px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-EPRATjaUNjg/Te4w9Oex_SI/AAAAAAAACJ0/ShFW8yFUH0I/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-VT9xtokyNKY/Te4w88qL3pI/AAAAAAAACJs/N8_puzcJRak/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615479609010937490" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 219px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-VT9xtokyNKY/Te4w88qL3pI/AAAAAAAACJs/N8_puzcJRak/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 5 - Expose the composite as an EJB Service&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-7F91cyBfLZA/Te403RilpuI/AAAAAAAACKk/oh-n5fkyVfA/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615483909583513314" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 285px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-7F91cyBfLZA/Te403RilpuI/AAAAAAAACKk/oh-n5fkyVfA/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-1UXzOgfm-Qw/Te403E0uMhI/AAAAAAAACKc/HhscP4shtk8/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615483906169909778" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 82px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-1UXzOgfm-Qw/Te403E0uMhI/AAAAAAAACKc/HhscP4shtk8/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-OMz93ymodf8/Te4022NEqKI/AAAAAAAACKU/Z-GU_fgtXCs/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615483902245513378" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 59px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-OMz93ymodf8/Te4022NEqKI/AAAAAAAACKU/Z-GU_fgtXCs/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Make InputOrder and OrderType serializable&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-_Yj-wvK99c4/Te41AUWR2DI/AAAAAAAACKs/HWyFkfpMe5Y/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615484064956012594" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 376px; CURSOR: hand; HEIGHT: 36px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-_Yj-wvK99c4/Te41AUWR2DI/AAAAAAAACKs/HWyFkfpMe5Y/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Deploy and view in JNDI tree&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 6 Create the EJB client in the SOA project&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;package demoejbtxsoa;&lt;br /&gt;&lt;br /&gt;import java.lang.reflect.InvocationHandler;&lt;br /&gt;import java.lang.reflect.Method;&lt;br /&gt;import java.lang.reflect.Proxy;&lt;br /&gt;&lt;br /&gt;import java.util.Hashtable;&lt;br /&gt;&lt;br /&gt;import javax.naming.Context;&lt;br /&gt;import javax.naming.InitialContext;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;&lt;br /&gt;import processorder.demo_ejb_tx_soa.demo_ejb_tx_soa_app.com.oracle.xmlns.InputOrder;&lt;br /&gt;import processorder.demo_ejb_tx_soa.demo_ejb_tx_soa_app.com.oracle.xmlns.OrderType;&lt;br /&gt;import processorder.demo_ejb_tx_soa.demo_ejb_tx_soa_app.com.oracle.xmlns.ProcessOrder;&lt;br /&gt;import processorder.demo_ejb_tx_soa.demo_ejb_tx_soa_app.com.oracle.xmlns.ProcessResponse;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class MyEJBClient {&lt;br /&gt;public static void main(String [] args) throws Throwable {&lt;br /&gt;try {&lt;br /&gt;final Context context = getInitialContext();&lt;br /&gt;&lt;br /&gt;Proxy proxy = (Proxy)context.lookup("ejb/SOAEJBService");&lt;br /&gt;&lt;br /&gt;// preparing the method to be called on the remote EJB&lt;br /&gt;Method method =&lt;br /&gt;ProcessOrder.class.getDeclaredMethod("process", new Class[] {InputOrder.class});&lt;br /&gt;InputOrder id = new InputOrder();&lt;br /&gt;id.setId(23);&lt;br /&gt;id.setCustName("NiallC");&lt;br /&gt;id.setQuantity(7);&lt;br /&gt;OrderType ot = new OrderType();&lt;br /&gt;ot.setComments("Good Customer");&lt;br /&gt;ot.setProduct("Oracle SOA Suite 11g");&lt;br /&gt;ot.setProductGroup("FMW");&lt;br /&gt;ot.setProductKey(new Long(12345));&lt;br /&gt;&lt;br /&gt;id.setOrder(ot);&lt;br /&gt;&lt;br /&gt;InvocationHandler handler = Proxy.getInvocationHandler(proxy);&lt;br /&gt;&lt;br /&gt;ProcessResponse response = (ProcessResponse)handler.invoke(proxy, method, new Object[] { id });&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;} catch (Exception ex) {&lt;br /&gt;ex.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private static Context getInitialContext() throws NamingException {&lt;br /&gt;Hashtable env = new Hashtable();&lt;br /&gt;// WebLogic Server 10.x connection details&lt;br /&gt;env.put( Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" );&lt;br /&gt;env.put(Context.PROVIDER_URL, "t3://127.0.0.1:7001");&lt;br /&gt;env.put(Context.SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;env.put(Context.SECURITY_CREDENTIALS, "welcome1");&lt;br /&gt;&lt;br /&gt;return new InitialContext( env );&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Run the client -&lt;br /&gt;&lt;br /&gt;Check the DB&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-iFIYZ5vs_K0/Te5ttLRt2II/AAAAAAAACK0/kfy8hAZuCU0/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5615546408266225794" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 228px; CURSOR: hand; HEIGHT: 69px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-iFIYZ5vs_K0/Te5ttLRt2II/AAAAAAAACK0/kfy8hAZuCU0/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 7 JTA enable...&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Add the following code to the EJB Client -&lt;br /&gt;&lt;br /&gt;import javax.transaction.UserTransaction;&lt;br /&gt;&lt;br /&gt; public final static String JTA_USER_XACT = "javax.transaction.UserTransaction";&lt;br /&gt;&lt;br /&gt; UserTransaction ut = (UserTransaction)context.lookup(JTA_USER_XACT);&lt;br /&gt; ut.begin();    &lt;br /&gt;&lt;br /&gt; //ut.rollback();&lt;br /&gt; ut.commit();&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-p1Iz9ClbTAw/Te6EisxdjjI/AAAAAAAACLE/F3wabSxs3sg/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 139px;" src="http://4.bp.blogspot.com/-p1Iz9ClbTAw/Te6EisxdjjI/AAAAAAAACLE/F3wabSxs3sg/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5615571517046623794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Define BPEL to participate in the global TX.&lt;br /&gt;&lt;br /&gt;Add this property to BPEL specification in composite.xml&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-b0JO5ocsWkA/Te6H2bRlc9I/AAAAAAAACL8/DpzU65HFVYE/s1600/8.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 15px;" src="http://3.bp.blogspot.com/-b0JO5ocsWkA/Te6H2bRlc9I/AAAAAAAACL8/DpzU65HFVYE/s400/8.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5615575154481787858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-rm_XvQru43U/Te6FGm_3vNI/AAAAAAAACLM/H5PcT1QcriQ/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 64px;" src="http://2.bp.blogspot.com/-rm_XvQru43U/Te6FGm_3vNI/AAAAAAAACLM/H5PcT1QcriQ/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5615572133971737810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Test&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;commit()&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-VeoZ-FZQUjk/Te6F8FQUY9I/AAAAAAAACLc/oVWswebehAM/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 307px;" src="http://1.bp.blogspot.com/-VeoZ-FZQUjk/Te6F8FQUY9I/AAAAAAAACLc/oVWswebehAM/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5615573052626854866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-7qfvZhR9CoI/Te6F76adJMI/AAAAAAAACLU/FEOOm_rVxNE/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 225px; height: 100px;" src="http://1.bp.blogspot.com/-7qfvZhR9CoI/Te6F76adJMI/AAAAAAAACLU/FEOOm_rVxNE/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5615573049716581570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;rollback()&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-EI5CTcAhA9U/Te6HSfhfi0I/AAAAAAAACL0/jopwBGgmbbQ/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://1.bp.blogspot.com/-EI5CTcAhA9U/Te6HSfhfi0I/AAAAAAAACL0/jopwBGgmbbQ/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5615574537146960706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-khTH1q1dUh8/Te6HK0nWE8I/AAAAAAAACLs/0Im5x2ej6J0/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 374px; height: 55px;" src="http://2.bp.blogspot.com/-khTH1q1dUh8/Te6HK0nWE8I/AAAAAAAACLs/0Im5x2ej6J0/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5615574405369697218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-3rwe9INY0MQ/Te6HKhXCllI/AAAAAAAACLk/2Sb7bjstmsM/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 227px; height: 100px;" src="http://1.bp.blogspot.com/-3rwe9INY0MQ/Te6HKhXCllI/AAAAAAAACLk/2Sb7bjstmsM/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5615574400201037394" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-3606828737490613040?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/3606828737490613040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=3606828737490613040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/3606828737490613040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/3606828737490613040'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/06/invoking-soa-composite-as-part-of.html' title='Invoking SOA Composite as part of a global transaction'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-8f8xzUk8n0w/Te4lOdbdhYI/AAAAAAAACIE/jv4MAOhO0nY/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8734269580343694755</id><published>2011-05-19T01:12:00.000-07:00</published><updated>2011-05-19T23:11:27.377-07:00</updated><title type='text'>Weblogic 11g - MDB accessing secure JMS Queue</title><content type='html'>Now that we have a secure queue (from the prevous post), let's leverage that from an MDB.&lt;br /&gt;&lt;br /&gt;The MDB will simply consume the messages - the only logic our onMessage() requires is -&lt;br /&gt;&lt;br /&gt;  public void onMessage(Message message) {&lt;br /&gt;    &lt;br /&gt;    try{&lt;br /&gt;      &lt;br /&gt;    &lt;br /&gt;    if (message instanceof TextMessage) {&lt;br /&gt;        TextMessage txtMsg = (TextMessage) message;&lt;br /&gt;       System.out.println("**** Message: " + txtMsg.getText());&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  catch(Exception e){&lt;br /&gt;    e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 1. - Create a new project in JDeveloper&lt;br /&gt;&lt;br /&gt;Step 2. - Create a new MDB in the project&lt;br /&gt;-- File --&gt; New --&gt; EJB --&gt; Message Driven Bean --&gt; 2.1&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-RK562Hcjukg/TdTR4UmjTNI/AAAAAAAACGo/XZP8q5aqw_0/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 265px; height: 142px;" src="http://3.bp.blogspot.com/-RK562Hcjukg/TdTR4UmjTNI/AAAAAAAACGo/XZP8q5aqw_0/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608338201516395730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 3 - Set up security&lt;br /&gt;--  &lt;strong&gt;run-as&lt;/strong&gt; identity is specified in the ejb-jar.xml&lt;br /&gt;-- &lt;strong&gt;security-role&lt;/strong&gt; is specified in the ejb-jar.xml&lt;br /&gt;&lt;br /&gt;-- Map &lt;strong&gt;run-as&lt;/strong&gt; identity to &lt;strong&gt;principal-name&lt;/strong&gt; in weblogic-ejb-jar.xml&lt;br /&gt;&lt;br /&gt;Step 3.1 - ejb-jar.xml&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-0Ol30bH4aJg/TdTSe0HXhqI/AAAAAAAACGw/v3SkPq8OLC8/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 398px; height: 400px;" src="http://1.bp.blogspot.com/-0Ol30bH4aJg/TdTSe0HXhqI/AAAAAAAACGw/v3SkPq8OLC8/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608338862810564258" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-- These properties can be set via the properties palette (Right mouse click on the bean and select &lt;strong&gt;Properties&lt;/strong&gt;)&lt;br /&gt;&lt;br /&gt;Step 3.2. weblogic-ejb-jar.xml&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-rXdH_JRcMnY/TdTS_R-SYoI/AAAAAAAACG4/M5OBDJFSupg/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 204px;" src="http://2.bp.blogspot.com/-rXdH_JRcMnY/TdTS_R-SYoI/AAAAAAAACG4/M5OBDJFSupg/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608339420581356162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-- These properties can also be set via the palette&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-sBKOboXdD7o/TdTTQT0f0YI/AAAAAAAACHA/2b30nV_1lmk/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 278px;" src="http://3.bp.blogspot.com/-sBKOboXdD7o/TdTTQT0f0YI/AAAAAAAACHA/2b30nV_1lmk/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608339713134940546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 4. Deploy&lt;br /&gt;&lt;br /&gt;Step 5. Test&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-pUk8gNO_FTg/TdTTr0t8ZwI/AAAAAAAACHI/WP3QQwm5cXs/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 170px;" src="http://2.bp.blogspot.com/-pUk8gNO_FTg/TdTTr0t8ZwI/AAAAAAAACHI/WP3QQwm5cXs/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608340185822291714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-- Check WLS log for the output message&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-8NF3p9qaLAc/TdTT-eac_xI/AAAAAAAACHQ/UfnZuYE8O60/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 24px;" src="http://4.bp.blogspot.com/-8NF3p9qaLAc/TdTT-eac_xI/AAAAAAAACHQ/UfnZuYE8O60/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608340506252476178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-- Change &lt;strong&gt;principal-name&lt;/strong&gt; in weblogic-ejb-jar.xml to weblogic&lt;br /&gt;&lt;br /&gt;-- Re-test&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ghGJP36qiR0/TdTUWpr1ZnI/AAAAAAAACHY/IAtXEH49f00/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 52px;" src="http://2.bp.blogspot.com/-ghGJP36qiR0/TdTUWpr1ZnI/AAAAAAAACHY/IAtXEH49f00/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608340921595029106" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8734269580343694755?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8734269580343694755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8734269580343694755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8734269580343694755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8734269580343694755'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/05/weblogic-11g-mdb-accessing-secure-jms.html' title='Weblogic 11g - MDB accessing secure JMS Queue'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-RK562Hcjukg/TdTR4UmjTNI/AAAAAAAACGo/XZP8q5aqw_0/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-4693517570677089961</id><published>2011-05-18T08:02:00.000-07:00</published><updated>2011-05-18T08:29:09.706-07:00</updated><title type='text'>Weblogic 11g - securing JMS artifacts</title><content type='html'>Scenario -&lt;br /&gt;&lt;br /&gt;I need to secure a JMS Queue.&lt;br /&gt;Only the members of the JMSUSERGROUP (e.g.JMSUSER) - &lt;br /&gt;should be able to access it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-F33PJR39nPE/TdPiGB-rP1I/AAAAAAAACFw/iSN7-Imi_a8/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 219px;" src="http://1.bp.blogspot.com/-F33PJR39nPE/TdPiGB-rP1I/AAAAAAAACFw/iSN7-Imi_a8/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608074554244808530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-bon2qN0eQzQ/TdPiF4GALNI/AAAAAAAACFo/UVGTz2pL_yU/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 290px;" src="http://1.bp.blogspot.com/-bon2qN0eQzQ/TdPiF4GALNI/AAAAAAAACFo/UVGTz2pL_yU/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608074551591185618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Kar6IRqtz2I/TdPiFkHJ_qI/AAAAAAAACFg/X1GHjhSYE70/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 337px;" src="http://1.bp.blogspot.com/-Kar6IRqtz2I/TdPiFkHJ_qI/AAAAAAAACFg/X1GHjhSYE70/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608074546227314338" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Create JMS Server/JMS Module/Connection Factory/ Queue&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-jE2AnZNxgW8/TdPig6qRRuI/AAAAAAAACF4/DwNVKYYiq2k/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 82px;" src="http://2.bp.blogspot.com/-jE2AnZNxgW8/TdPig6qRRuI/AAAAAAAACF4/DwNVKYYiq2k/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608075016136640226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add Security Role/Policy -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-dTy-nQqU4x4/TdPjOg51izI/AAAAAAAACGQ/G7AdqRX1ZGw/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 205px;" src="http://1.bp.blogspot.com/-dTy-nQqU4x4/TdPjOg51izI/AAAAAAAACGQ/G7AdqRX1ZGw/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608075799496592178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-eeHV2qRLvLM/TdPjOX15joI/AAAAAAAACGI/X8OI3zN4su0/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 301px;" src="http://4.bp.blogspot.com/-eeHV2qRLvLM/TdPjOX15joI/AAAAAAAACGI/X8OI3zN4su0/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608075797064158850" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-gbMMJmziKmU/TdPjOE89n6I/AAAAAAAACGA/HZWwJNXYGT0/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 397px; height: 400px;" src="http://3.bp.blogspot.com/-gbMMJmziKmU/TdPjOE89n6I/AAAAAAAACGA/HZWwJNXYGT0/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608075791993511842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Test with JMS Client &lt;br /&gt;---------------------------------------------------------&lt;br /&gt;&lt;br /&gt;public class JMSClient {&lt;br /&gt;  public static void main(String [] args) throws JMSException,&lt;br /&gt;                                                 NamingException {&lt;br /&gt;    final Context ic = getInitialContext();&lt;br /&gt;    System.out.println("*** CONTEXT =");&lt;br /&gt;    final QueueConnectionFactory qcf = (QueueConnectionFactory)ic.lookup("jms/MyCF2");&lt;br /&gt;    // Lookup should specify the queue name that is mentioned as "mappedName" in MessageDriven Bean.&lt;br /&gt;   &lt;br /&gt; &lt;br /&gt;    final Queue destQueue = (Queue)ic.lookup("jms/MyQueue3");&lt;br /&gt;   &lt;br /&gt;    final QueueConnection connection = qcf.createQueueConnection("JMSUSER", "welcome1");&lt;br /&gt;     try {&lt;br /&gt;      final QueueSession session = connection.createQueueSession(false, 0);&lt;br /&gt;    &lt;br /&gt;      final QueueSender sender = session.createSender(destQueue);&lt;br /&gt;      final TextMessage msg = session.createTextMessage("Hello from Galway - fans of FCN");&lt;br /&gt;      sender.send(msg);&lt;br /&gt;          &lt;br /&gt;        &lt;br /&gt;         } catch (Exception ex) {&lt;br /&gt;      ex.printStackTrace();&lt;br /&gt;    } finally {&lt;br /&gt;      connection.close();&lt;br /&gt;      ic.close();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------- &lt;br /&gt;&lt;br /&gt;Test with JMSUSER --&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-S34mOuxsI8U/TdPkelEd-MI/AAAAAAAACGg/bVQMtZDDf24/s1600/8.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 226px;" src="http://1.bp.blogspot.com/-S34mOuxsI8U/TdPkelEd-MI/AAAAAAAACGg/bVQMtZDDf24/s400/8.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608077175004461250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Test with weblogic --&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-XV4wAe3ibh0/TdPkeX374MI/AAAAAAAACGY/P7xhlJ-66_8/s1600/9.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 129px;" src="http://2.bp.blogspot.com/-XV4wAe3ibh0/TdPkeX374MI/AAAAAAAACGY/P7xhlJ-66_8/s400/9.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5608077171462234306" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-4693517570677089961?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/4693517570677089961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=4693517570677089961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/4693517570677089961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/4693517570677089961'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/05/weblogic-11g-securing-jms-artifacts.html' title='Weblogic 11g - securing JMS artifacts'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-F33PJR39nPE/TdPiGB-rP1I/AAAAAAAACFw/iSN7-Imi_a8/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-6889685159462611340</id><published>2011-05-17T04:36:00.000-07:00</published><updated>2011-05-17T05:12:23.647-07:00</updated><title type='text'>Basic JMS Clustering with Weblogic 11g - standalone Queue/Service Migration</title><content type='html'>In this scenario we need to make a standalone Queue highly available.&lt;br /&gt;&lt;br /&gt;The Queue will be targeted to JMSServer2 running on MgdServer2.&lt;br /&gt;If MgdServer2 goes down then the JMSServer will be migrated to MgdServer1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here I strongly suggest you consult the weblogic docs to understand fully &lt;br /&gt;the concepts. Here is a short extract from the aforementioned -&lt;br /&gt;------------------------------------------------------------------------&lt;br /&gt;&lt;em&gt;In a WebLogic Server cluster, most subsystem services are hosted homogeneously on all server instances in the cluster, enabling transparent failover from one server to another. In contrast, pinned services, such as JMS-related services, the JTA Transaction Recovery Service, and user-defined singleton services are hosted on individual server instances within a cluster—for these services, the WebLogic Server migration framework supports failure recovery with service migration, as opposed to failover. &lt;br /&gt;&lt;br /&gt;Service-level migration in WebLogic Server is the process of moving the pinned services from one server instance to a different available server instance within the cluster. Service migration is controlled by logical migratable target, which serves as a grouping of services that is hosted on only one physical server in a cluster. You can select a migratable target in place of a server or cluster when targeting certain pinned services. High availability is achieved by migrating a migratable target from one clustered server to another when a problem occurs on the original server. You can also manually migrate a migratable target for scheduled maintenance or you can configure the migratable target for automatic migration.  &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------&lt;br /&gt;Leading on from the previous post...&lt;br /&gt;&lt;br /&gt;Create a second JMS Server - JMSServer2 and target to MgdServer2(Migratable)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-E-09skxmDRE/TdJe3KEGdDI/AAAAAAAACD4/BmcLFnBWL1s/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 46px;" src="http://3.bp.blogspot.com/-E-09skxmDRE/TdJe3KEGdDI/AAAAAAAACD4/BmcLFnBWL1s/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607648787717059634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 1 - Create a new JMS module /Connection Factory and Queue &lt;br /&gt; &lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-QfLHLDq-xbg/TdJfto4m5VI/AAAAAAAACEA/UsGnADzyWh0/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 394px;" src="http://1.bp.blogspot.com/-QfLHLDq-xbg/TdJfto4m5VI/AAAAAAAACEA/UsGnADzyWh0/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607649723703289170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Subdeployment targeted as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-dTNPcf2ytP4/TdJf8dVzC8I/AAAAAAAACEI/BzggzzVC11E/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 277px;" src="http://1.bp.blogspot.com/-dTNPcf2ytP4/TdJf8dVzC8I/AAAAAAAACEI/BzggzzVC11E/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607649978302532546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create the connection Factory and target as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-T3sJ7Efx-6Q/TdJgbXuQpzI/AAAAAAAACEQ/_BI1O8HhwP4/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://2.bp.blogspot.com/-T3sJ7Efx-6Q/TdJgbXuQpzI/AAAAAAAACEQ/_BI1O8HhwP4/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607650509370468146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-FkvOittSqhc/TdJgbjHm13I/AAAAAAAACEY/PeMip0iyf7A/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 317px; height: 400px;" src="http://1.bp.blogspot.com/-FkvOittSqhc/TdJgbjHm13I/AAAAAAAACEY/PeMip0iyf7A/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607650512429569906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create the Queue, target to JMSServer2&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-zCuRYcIIqj8/TdJg15trZdI/AAAAAAAACEg/e0IaZoYVvio/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 384px; height: 400px;" src="http://3.bp.blogspot.com/-zCuRYcIIqj8/TdJg15trZdI/AAAAAAAACEg/e0IaZoYVvio/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607650965171430866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ZMkdX71gTvs/TdJhFAT5z7I/AAAAAAAACEo/PcrS_WN6_wE/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 69px;" src="http://2.bp.blogspot.com/-ZMkdX71gTvs/TdJhFAT5z7I/AAAAAAAACEo/PcrS_WN6_wE/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607651224640409522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Test -&lt;br /&gt;&lt;br /&gt;------------------------------------------&lt;br /&gt;&lt;br /&gt;  public static void main(String [] args) throws JMSException,&lt;br /&gt;                                                 NamingException {&lt;br /&gt;    final Context ic = getInitialContext();&lt;br /&gt;    System.out.println("*** CONTEXT =");&lt;br /&gt;    final QueueConnectionFactory qcf = (QueueConnectionFactory)ic.lookup("jms/MyCF2");&lt;br /&gt;    // Lookup should specify the queue name that is mentioned as "mappedName" in MessageDriven Bean.&lt;br /&gt;    final Queue destQueue = (Queue)ic.lookup("jms/MyQueue2");&lt;br /&gt;    ic.close();&lt;br /&gt;    final QueueConnection connection = qcf.createQueueConnection();&lt;br /&gt;    try {&lt;br /&gt;      final QueueSession session = connection.createQueueSession(false, 0);&lt;br /&gt;      final QueueSender sender = session.createSender(destQueue);&lt;br /&gt;      final TextMessage msg = session.createTextMessage("Hello from Dublin - fans of FCN");&lt;br /&gt;      sender.send(msg);&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;br /&gt;View message in the WLS console&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-fzifNrctwiw/TdJhsM68EXI/AAAAAAAACEw/-rTvYAJQ1Vc/s1600/8.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://1.bp.blogspot.com/-fzifNrctwiw/TdJhsM68EXI/AAAAAAAACEw/-rTvYAJQ1Vc/s400/8.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607651898040258930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We can also enable logging on the Queue&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-uRuiA7QJsaA/TdJjRhFgoKI/AAAAAAAACFA/FQsI_wEUZRY/s1600/10.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 120px;" src="http://3.bp.blogspot.com/-uRuiA7QJsaA/TdJjRhFgoKI/AAAAAAAACFA/FQsI_wEUZRY/s400/10.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607653638620094626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/--Wyz_ylnRfY/TdJjQyIE-wI/AAAAAAAACE4/ntAqXP7RM3w/s1600/9.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 244px; height: 400px;" src="http://4.bp.blogspot.com/--Wyz_ylnRfY/TdJjQyIE-wI/AAAAAAAACE4/ntAqXP7RM3w/s400/9.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607653626014399234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Re-test and view logs&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-o6S8pXeHs8w/TdJjyX6pXiI/AAAAAAAACFI/SIJBDee334c/s1600/11.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 115px;" src="http://3.bp.blogspot.com/-o6S8pXeHs8w/TdJjyX6pXiI/AAAAAAAACFI/SIJBDee334c/s400/11.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607654203094294050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now stop MgdServer2 and re-test&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-U8YgouzzarY/TdJkmtMLgWI/AAAAAAAACFQ/QVLTmCoWLLw/s1600/12.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 291px;" src="http://2.bp.blogspot.com/-U8YgouzzarY/TdJkmtMLgWI/AAAAAAAACFQ/QVLTmCoWLLw/s400/12.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607655102158176610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;View logs under MgdServer1&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-moW6EPo2gSY/TdJk4mxMymI/AAAAAAAACFY/q97GRXEivrA/s1600/13.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 112px;" src="http://3.bp.blogspot.com/-moW6EPo2gSY/TdJk4mxMymI/AAAAAAAACFY/q97GRXEivrA/s400/13.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607655409672047202" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-6889685159462611340?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/6889685159462611340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=6889685159462611340' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6889685159462611340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6889685159462611340'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/05/basic-jms-clustering-with-weblogic-11g_17.html' title='Basic JMS Clustering with Weblogic 11g - standalone Queue/Service Migration'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-E-09skxmDRE/TdJe3KEGdDI/AAAAAAAACD4/BmcLFnBWL1s/s72-c/1.GIF' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-6734583735655288836</id><published>2011-05-17T01:49:00.000-07:00</published><updated>2011-05-17T04:36:39.975-07:00</updated><title type='text'>Basic JMS Clustering with Weblogic 11g - Uniform distributed destination</title><content type='html'>JMS is an integral part of many SOA/Integration projects.&lt;br /&gt;Like any other resource, we want scalability and reliability for our JMS artifacts.&lt;br /&gt;&lt;br /&gt;So here is a simple example based on the following simple WLS cluster I've set up&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-PaDC1xDirPg/TdI3PDVKG2I/AAAAAAAACBg/vEI1uffJiIs/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 91px;" src="http://3.bp.blogspot.com/-PaDC1xDirPg/TdI3PDVKG2I/AAAAAAAACBg/vEI1uffJiIs/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607605217761303394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Example 1: Using a UDD(Uniform distributed destination)&lt;br /&gt;&lt;br /&gt;Thanks to my colleague Santosh for his support here.&lt;br /&gt;&lt;br /&gt;UDDs make sense for both reliability and scalability. Essentially the UDD Queue&lt;br /&gt;will be deployed to my cluster and thus available on both of my managed servers.&lt;br /&gt;&lt;br /&gt;Step 1 -Create a JMS Server (JMSServer1)&lt;br /&gt;-- FileStore= JMSFileStore1&lt;br /&gt;-- Target= MgdServer1(Migratable)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-U0WogA8DUJc/TdI4gYjgFYI/AAAAAAAACBo/tyiwbzKi0ZY/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 336px; height: 400px;" src="http://2.bp.blogspot.com/-U0WogA8DUJc/TdI4gYjgFYI/AAAAAAAACBo/tyiwbzKi0ZY/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607606615028012418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-zVHim5NjSfQ/TdI4sF4Jb8I/AAAAAAAACBw/-5yPkK_tg_U/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 177px;" src="http://2.bp.blogspot.com/-zVHim5NjSfQ/TdI4sF4Jb8I/AAAAAAAACBw/-5yPkK_tg_U/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607606816172765122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 2 - Create a JMS System Module for the ConnectionFactory &amp; UDD Queue (JMSModuleCluster)&lt;br /&gt; &lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-8ZWG6kLdntI/TdI5XoSZw3I/AAAAAAAACCA/b__d9dE13Ic/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 339px; height: 400px;" src="http://4.bp.blogspot.com/-8ZWG6kLdntI/TdI5XoSZw3I/AAAAAAAACCA/b__d9dE13Ic/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607607564144067442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-QCrSzwKCv88/TdI5j1eZrJI/AAAAAAAACCI/bvCnm6Rrzc8/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 367px;" src="http://1.bp.blogspot.com/-QCrSzwKCv88/TdI5j1eZrJI/AAAAAAAACCI/bvCnm6Rrzc8/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607607773842484370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Fk9i6RCyTBM/TdI5vdVKYRI/AAAAAAAACCQ/vQTR2KZuFiE/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 82px;" src="http://4.bp.blogspot.com/-Fk9i6RCyTBM/TdI5vdVKYRI/AAAAAAAACCQ/vQTR2KZuFiE/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5607607973519712530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 4 - Test with a JMS Client&lt;br /&gt;&lt;br /&gt;--------------------------------------------------&lt;br /&gt; package jmsclient;&lt;br /&gt;&lt;br /&gt;import java.util.Hashtable;&lt;br /&gt;&lt;br /&gt;import javax.jms.JMSException;&lt;br /&gt;import javax.jms.Queue;&lt;br /&gt;import javax.jms.QueueConnection;&lt;br /&gt;import javax.jms.QueueConnectionFactory;&lt;br /&gt;import javax.jms.QueueSender;&lt;br /&gt;import javax.jms.QueueSession;&lt;br /&gt;import javax.jms.TextMessage;&lt;br /&gt;&lt;br /&gt;import javax.naming.Context;&lt;br /&gt;import javax.naming.InitialContext;&lt;br /&gt;import javax.naming.NamingException;&lt;br /&gt;&lt;br /&gt;public class JMSClient {&lt;br /&gt;  public static void main(String [] args) throws JMSException,&lt;br /&gt;                                                 NamingException {&lt;br /&gt;    final Context ic = getInitialContext();&lt;br /&gt;    System.out.println("*** CONTEXT =");&lt;br /&gt;    final QueueConnectionFactory qcf = (QueueConnectionFactory)ic.lookup("jms/MyCF");&lt;br /&gt;    // Lookup should specify the queue name that is mentioned as "mappedName" in MessageDriven Bean.&lt;br /&gt;    final Queue destQueue = (Queue)ic.lookup("jms/MyDistQueue");&lt;br /&gt;    ic.close();&lt;br /&gt;    final QueueConnection connection = qcf.createQueueConnection();&lt;br /&gt;    try {&lt;br /&gt;      final QueueSession session = connection.createQueueSession(false, 0);&lt;br /&gt;      final QueueSender sender = session.createSender(destQueue);&lt;br /&gt;      final TextMessage msg = session.createTextMessage("Hello from Lichtenau - fans of FCN");&lt;br /&gt;      sender.send(msg);&lt;br /&gt;    } catch (Exception ex) {&lt;br /&gt;      ex.printStackTrace();&lt;br /&gt;    } finally {&lt;br /&gt;      connection.close();&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  private static Context getInitialContext() throws NamingException {&lt;br /&gt;    Hashtable env = new Hashtable();&lt;br /&gt;    // Add InitialContext property assignments here.&lt;br /&gt;    env.put( Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" );&lt;br /&gt;    // Note that by default WebLogic server is not created with security, so credentials are not needed.&lt;br /&gt;    // TODO: Verify the server address and port number&lt;br /&gt;    env.put(Context.PROVIDER_URL, "t3://localhost:7003,localhost:7004");&lt;br /&gt;    env.put(Context.SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;    env.put(Context.SECURITY_CREDENTIALS, "welcome1");    &lt;br /&gt;    return new InitialContext( env );&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;You can stop any of the 2 managed servers and re-test.&lt;br /&gt;The Queue is alway available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-6734583735655288836?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/6734583735655288836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=6734583735655288836' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6734583735655288836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6734583735655288836'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/05/basic-jms-clustering-with-weblogic-11g.html' title='Basic JMS Clustering with Weblogic 11g - Uniform distributed destination'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-PaDC1xDirPg/TdI3PDVKG2I/AAAAAAAACBg/vEI1uffJiIs/s72-c/1.GIF' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-1021404761977789556</id><published>2011-05-10T23:16:00.000-07:00</published><updated>2011-05-10T23:18:55.849-07:00</updated><title type='text'>SOA Suite 11.1.1.5.0 now available</title><content type='html'>software&lt;br /&gt;http://www.oracle.com/technetwork/middleware/soasuite/downloads/index.html&lt;br /&gt;&lt;br /&gt;docs&lt;br /&gt;http://www.oracle.com/technetwork/middleware/soasuite/documentation/index.html#111150&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-1021404761977789556?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/1021404761977789556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=1021404761977789556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1021404761977789556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1021404761977789556'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/05/soa-suite-11g-ps4-now-available.html' title='SOA Suite 11.1.1.5.0 now available'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-7720604830347972342</id><published>2011-05-09T02:28:00.001-07:00</published><updated>2011-05-10T12:41:33.315-07:00</updated><title type='text'>EDN via PL/SQL</title><content type='html'>Scenario:&lt;br /&gt;&lt;br /&gt;Raise an event on an insert to a DB table. Event is then consumed by a SOA composite.&lt;br /&gt;In this case, this is a viable alternative to using a DB adapter(polling) as our table, in this scenario, only gets a couple of inserts per day.&lt;br /&gt;&lt;br /&gt;XSD used&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-_mnVYJMkAAI/TceuzMPQB6I/AAAAAAAAB_Y/jacdJHD_Dlk/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 260px;" src="http://2.bp.blogspot.com/-_mnVYJMkAAI/TceuzMPQB6I/AAAAAAAAB_Y/jacdJHD_Dlk/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604640455767623586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create a sample ORDERS table in SCOTT's schema&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-SMp25TiMsEU/TcevDbeJ5-I/AAAAAAAAB_g/6W4GX49tT9Q/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 338px; height: 150px;" src="http://4.bp.blogspot.com/-SMp25TiMsEU/TcevDbeJ5-I/AAAAAAAAB_g/6W4GX49tT9Q/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604640734734575586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create a SOA app/project in JDev&lt;br /&gt;&lt;br /&gt;Create an Event Definition in the project&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-xDQr4k2JNn0/TcevaML8TvI/AAAAAAAAB_o/HPdSBiwTGqc/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 192px;" src="http://2.bp.blogspot.com/-xDQr4k2JNn0/TcevaML8TvI/AAAAAAAAB_o/HPdSBiwTGqc/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604641125768646386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Import the XSD&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-JjEWv3bRDFQ/TcevqYyeDNI/AAAAAAAAB_w/uP2nTjv50Vc/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 374px; height: 400px;" src="http://1.bp.blogspot.com/-JjEWv3bRDFQ/TcevqYyeDNI/AAAAAAAAB_w/uP2nTjv50Vc/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604641404029373650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is the edl file&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-9Db_chJmpZY/Tcev47NE2tI/AAAAAAAAB_4/dvtX-0K7tRQ/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 124px;" src="http://1.bp.blogspot.com/-9Db_chJmpZY/Tcev47NE2tI/AAAAAAAAB_4/dvtX-0K7tRQ/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604641653785942738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create a PLSQL stored procedure that will call the following –&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-JNndMxNIIno/TcewHuIgOKI/AAAAAAAACAA/oljsobo-B3o/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 219px;" src="http://4.bp.blogspot.com/-JNndMxNIIno/TcewHuIgOKI/AAAAAAAACAA/oljsobo-B3o/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604641907975141538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Our parameters, taken in part from the edl above, are as follows –&lt;br /&gt;NAMESPACE – http://www.example.org&lt;br /&gt;LOCAL_NAME -  anything you like e.g. Our Event Name - NewOrder&lt;br /&gt;PAYLOAD – This is our order &lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-6LB0Olqyf8w/Tce0RFY6hzI/AAAAAAAACBI/bn13FaO-KoY/s1600/15.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 145px;" src="http://4.bp.blogspot.com/-6LB0Olqyf8w/Tce0RFY6hzI/AAAAAAAACBI/bn13FaO-KoY/s400/15.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604646466883323698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PRIORITY – DEFAULT is 5 so we don’t need to enter this.&lt;br /&gt;However there is some “wrapper” overhead.&lt;br /&gt; &lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-EU-yAKy64nk/Tcew1vBxm0I/AAAAAAAACAI/V0xTTLYIZFU/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 268px;" src="http://1.bp.blogspot.com/-EU-yAKy64nk/Tcew1vBxm0I/AAAAAAAACAI/V0xTTLYIZFU/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604642698489338690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;eb:business-event xmlns:eb=http://oracle.com/fabric/businessEvent&lt;br /&gt;This is the default, so no need to change. &lt;br /&gt;&lt;br /&gt;xmlns:ob="http://schemas.oracle.com/events/edl/NewOrder"&gt;&lt;br /&gt;Set to the namespace from our edl.&lt;br /&gt;&lt;br /&gt;eb:name ob:NewOrder&lt;br /&gt;This is set to the EventName e.g. NewOrder&lt;br /&gt;&lt;br /&gt;eb:content&lt;br /&gt;Contains the actual payload i.e. our Order&lt;br /&gt;&lt;br /&gt;Test the PLSQL&lt;br /&gt;There should be an entry in the dev_soainfra.EDN_EVENT_QUEUE_TABLE&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-jSOKNGWypGM/Tcex7AQoYtI/AAAAAAAACAQ/fIgWNzB_dAk/s1600/8.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 59px;" src="http://2.bp.blogspot.com/-jSOKNGWypGM/Tcex7AQoYtI/AAAAAAAACAQ/fIgWNzB_dAk/s400/8.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604643888526025426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now back to the SOA app...&lt;br /&gt;&lt;br /&gt;Create a Mediator that subscribes to the event&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-QPAYjkEFW_8/TceyLundJSI/AAAAAAAACAY/yyn34k8Ydho/s1600/9.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://1.bp.blogspot.com/-QPAYjkEFW_8/TceyLundJSI/AAAAAAAACAY/yyn34k8Ydho/s400/9.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604644175847695650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then create a File Adapter(Write) using the same xsd&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-XOMWqLXGg50/TceyflsMHSI/AAAAAAAACAg/k0jEh-N-MBU/s1600/10.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 245px;" src="http://4.bp.blogspot.com/-XOMWqLXGg50/TceyflsMHSI/AAAAAAAACAg/k0jEh-N-MBU/s400/10.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604644517049015586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Deploy and test&lt;br /&gt;- You can execute the procedure directly in JDev &lt;br /&gt;- View the result in em&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Z9WaQDiumZw/Tceyy6mbFgI/AAAAAAAACAo/nqG_4wYSn0k/s1600/11.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 132px;" src="http://4.bp.blogspot.com/-Z9WaQDiumZw/Tceyy6mbFgI/AAAAAAAACAo/nqG_4wYSn0k/s400/11.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604644849079490050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;View the output file&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-jRNhkHIiMIY/TcezBl9ElzI/AAAAAAAACAw/5KFOjNUVlN4/s1600/12.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 89px;" src="http://4.bp.blogspot.com/-jRNhkHIiMIY/TcezBl9ElzI/AAAAAAAACAw/5KFOjNUVlN4/s400/12.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604645101235377970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we need to include the PLSQL code in the POST-INSERT trigger logic.&lt;br /&gt;Create a POST-Insert trigger on the nc_orders table&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-NJiHQyieKVQ/TcezQtzSOII/AAAAAAAACA4/i5IOwnozSRg/s1600/13.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 318px;" src="http://2.bp.blogspot.com/-NJiHQyieKVQ/TcezQtzSOII/AAAAAAAACA4/i5IOwnozSRg/s400/13.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604645361039849602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Insert a row&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-bxYKMwSbkIU/TcezeI2vmQI/AAAAAAAACBA/eP2ePUf2JR0/s1600/14.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 383px;" src="http://1.bp.blogspot.com/-bxYKMwSbkIU/TcezeI2vmQI/AAAAAAAACBA/eP2ePUf2JR0/s400/14.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5604645591640414466" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-7720604830347972342?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/7720604830347972342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=7720604830347972342' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7720604830347972342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7720604830347972342'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/05/edn-via-plsql.html' title='EDN via PL/SQL'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-_mnVYJMkAAI/TceuzMPQB6I/AAAAAAAAB_Y/jacdJHD_Dlk/s72-c/1.GIF' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-7286743465541187293</id><published>2011-05-04T05:13:00.000-07:00</published><updated>2011-05-11T07:11:00.101-07:00</updated><title type='text'>BPM ADF Form--&gt; streamlining Save/Approve actions</title><content type='html'>Scenario: I have a simple BPM app that accepts in an order which is approved in parallel by our 2 erstwhile users jcooper and jausten. The users can also update the payload and normally they would have to complete 2 actions --&amp;gt; Save (the changes made) and Approve(the order). Our job is to combine this into 1 button click.&lt;br /&gt;&lt;br /&gt;I created the following composite -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-8M5O3DnSMAQ/TcFEejDvVUI/AAAAAAAAB9M/q_vo2L9G0KE/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602834703023297858" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 114px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-8M5O3DnSMAQ/TcFEejDvVUI/AAAAAAAAB9M/q_vo2L9G0KE/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Essentially I drop an order into the /in directory. It's picked up by the File Adapter and passed on to the BPM process.&lt;br /&gt;&lt;br /&gt;The Human workflow is defined as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-y399g8x0a3k/TcFE-GpGlSI/AAAAAAAAB9U/WEZQ-6pUkTA/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602835245151196450" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 363px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-y399g8x0a3k/TcFE-GpGlSI/AAAAAAAAB9U/WEZQ-6pUkTA/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I then autogenerate the task form.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-cbcV-l2KdTQ/TcFGj941vdI/AAAAAAAAB9c/w7bOxHKCHNI/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602836995147939282" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 149px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-cbcV-l2KdTQ/TcFGj941vdI/AAAAAAAAB9c/w7bOxHKCHNI/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now I want to combine the Save and Approve functionality.&lt;br /&gt;&lt;br /&gt;Save is available via the update() operation.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-5-4PhfAz21Y/TcFHGKnd7fI/AAAAAAAAB9k/NMngHodJoXM/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602837582680288754" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 298px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-5-4PhfAz21Y/TcFHGKnd7fI/AAAAAAAAB9k/NMngHodJoXM/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Approve, naturally via the APPROVE() operation.&lt;br /&gt;&lt;br /&gt;Now I need to create a new button called ApproveSave with the combined functionality.&lt;br /&gt;&lt;br /&gt;1. Drag and Drop the update() and APPROVE operations onto the page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-dgFlSrGA_OU/TcFIFNEhV2I/AAAAAAAAB9s/BLELFPJAqHc/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602838665670776674" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 44px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-dgFlSrGA_OU/TcFIFNEhV2I/AAAAAAAAB9s/BLELFPJAqHc/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Double-click on one of the buttons to create backing bean and binding code.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-3751JEKylnI/TcFIgaXDaPI/AAAAAAAAB90/FkK6aPnuOxM/s1600/6.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602839133094635762" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 366px; CURSOR: hand; HEIGHT: 359px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-3751JEKylnI/TcFIgaXDaPI/AAAAAAAAB90/FkK6aPnuOxM/s400/6.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Double-click on the other button to create the binding code.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-UxQVRV3U9aM/TcFJJAGxYzI/AAAAAAAAB98/n0qooxgmQ00/s1600/7.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602839830421660466" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 219px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-UxQVRV3U9aM/TcFJJAGxYzI/AAAAAAAAB98/n0qooxgmQ00/s400/7.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Drag and drop a Button onto the page, then double-click to create backing bean code.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-RtNj5hQ0-xs/TcFJubznLNI/AAAAAAAAB-E/pZmir108tiQ/s1600/8.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602840473512651986" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 298px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-RtNj5hQ0-xs/TcFJubznLNI/AAAAAAAAB-E/pZmir108tiQ/s400/8.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. Add the following code ...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-ozE22Wbv0L4/TcFKGamBKPI/AAAAAAAAB-M/JdoxE2Ia9-A/s1600/9.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602840885504059634" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 310px; CURSOR: hand; HEIGHT: 121px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-ozE22Wbv0L4/TcFKGamBKPI/AAAAAAAAB-M/JdoxE2Ia9-A/s400/9.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Delete the other 2 buttons as we no longer need them.&lt;br /&gt;&lt;br /&gt;7. Deploy and test. Login as jcooper&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-H0FPUmogwkg/TcFZLkeCwaI/AAAAAAAAB-U/pcBIvVzNo8E/s1600/10.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602857466728726946" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 127px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-H0FPUmogwkg/TcFZLkeCwaI/AAAAAAAAB-U/pcBIvVzNo8E/s400/10.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;8. Edit the Order Status&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-WaqG_ctoqkw/TcFZqsEP21I/AAAAAAAAB-c/khE51x22F7s/s1600/11.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602858001343961938" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 167px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-WaqG_ctoqkw/TcFZqsEP21I/AAAAAAAAB-c/khE51x22F7s/s400/11.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-h1E44QFdIKo/TcFZ2WqDArI/AAAAAAAAB-k/241YVUJDEuM/s1600/12.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602858201755353778" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 171px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-h1E44QFdIKo/TcFZ2WqDArI/AAAAAAAAB-k/241YVUJDEuM/s400/12.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9. Click the Save/Approve button&lt;br /&gt;&lt;br /&gt;10. login as jausten&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-x0TIg6LbHvc/TcFaUxzdlaI/AAAAAAAAB-s/nHY7ppZfXn4/s1600/13.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602858724438676898" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 291px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-x0TIg6LbHvc/TcFaUxzdlaI/AAAAAAAAB-s/nHY7ppZfXn4/s400/13.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;11. update the Order Status and click the Save/Approve button&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-X8lXsV6pt4w/TcFamw-ujrI/AAAAAAAAB-0/1KQ08x6DKfk/s1600/14.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5602859033455136434" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 151px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-X8lXsV6pt4w/TcFamw-ujrI/AAAAAAAAB-0/1KQ08x6DKfk/s400/14.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;12. Validate in em - check outgoing payload from the process.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-J9nHVZR_iAA/TcJLWfFqdiI/AAAAAAAAB-8/LGmbLERL5ek/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5603123736076776994" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 247px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-J9nHVZR_iAA/TcJLWfFqdiI/AAAAAAAAB-8/LGmbLERL5ek/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;13. Clean up by deleting the default APPROVE button&lt;br /&gt;&lt;br /&gt;You have to be careful here - we want to delete the button but not the bindings.&lt;br /&gt;You can delete it from the Source Code view to preserve the bindings.&lt;br /&gt;&lt;br /&gt;However, if you did as I did - deleted it from the structure or design view - then you can simply add the binding again. Go to the taskDetails.jspx and click on the Bindings tab.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/--HtkkLGH8L4/TcqYnHTVCuI/AAAAAAAACBY/d5b24kj2hT8/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 213px; height: 400px;" src="http://2.bp.blogspot.com/--HtkkLGH8L4/TcqYnHTVCuI/AAAAAAAACBY/d5b24kj2hT8/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5605460483958442722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-q8kqxxDRPZ8/TcqYnDYCVzI/AAAAAAAACBQ/eAm8cFjYbMo/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 287px; height: 123px;" src="http://3.bp.blogspot.com/-q8kqxxDRPZ8/TcqYnDYCVzI/AAAAAAAACBQ/eAm8cFjYbMo/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5605460482904446770" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Re-deploy and test&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-7286743465541187293?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/7286743465541187293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=7286743465541187293' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7286743465541187293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7286743465541187293'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/05/bpm-adf-form-streamlining-saveapprove.html' title='BPM ADF Form--&gt; streamlining Save/Approve actions'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-8M5O3DnSMAQ/TcFEejDvVUI/AAAAAAAAB9M/q_vo2L9G0KE/s72-c/1.GIF' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-704467337999952092</id><published>2011-04-14T23:56:00.000-07:00</published><updated>2011-04-25T23:11:15.158-07:00</updated><title type='text'>SOA Suite 11g --&gt; Performance Tuning Part1</title><content type='html'>Scenario- we have a SOA composite that includes a synchronous BPEL process that calls a stateless session EJB (transferFundsBean) to transfer funds from account A to account B. So essentially a synchronous/transient process. The composite itself is exposed via an EJB Service interface.&lt;br /&gt;&lt;br /&gt;We can tune on different levels -&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;EJB - transferFundsBean &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;BPEL &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;SOA Suite &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;WLS&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;JVM &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;O/S &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;EJB tuning &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Avoid, if possible, using the RequiresNew transaction parameter - ours is set to Required.&lt;br /&gt;&lt;br /&gt;We can pre-load the bean pool by amending the weblogic-ejb-jar.xml&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-fugMvMADBW8/Taft7ILICvI/AAAAAAAAB8M/a5xJXFIB12Y/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5595702662093343474" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 32px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-fugMvMADBW8/Taft7ILICvI/AAAAAAAAB8M/a5xJXFIB12Y/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;max-beans-in-free-pool&lt;br /&gt;should be set equal to the number of threads expected to invoke the EJB concurrently&lt;br /&gt;&lt;br /&gt;initial-beans-in-free-pool&lt;br /&gt;the cost of creating EJB instances is not incurred at run time&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can then monitor the Bean activity using WLS console.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-hs9Kpg5xZdU/TafvNR0qvsI/AAAAAAAAB8U/dlFj76PVH4M/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5595704073432776386" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 68px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-hs9Kpg5xZdU/TafvNR0qvsI/AAAAAAAAB8U/dlFj76PVH4M/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I customized the table and added the Miss Total Count. This will show if my pool settings are adequate to cope with the loads I expect.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;BPEL App Tuning&lt;/strong&gt;&lt;br /&gt;I added the following to the composite.xml -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-oei4ZXRqk98/TafwI75gffI/AAAAAAAAB8c/kaIOfA5B140/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5595705098339646962" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 47px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/-oei4ZXRqk98/TafwI75gffI/AAAAAAAAB8c/kaIOfA5B140/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SOA Server Tuning&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-Ws9vMmAWqpQ/Tafwklm_-nI/AAAAAAAAB8k/GY9h2aKQaBE/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5595705573392775794" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 392px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-Ws9vMmAWqpQ/Tafwklm_-nI/AAAAAAAAB8k/GY9h2aKQaBE/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Turning these off increases performance, but it does mean one doesn't see any instance results in the em console.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-3Pn9qpivFd0/Tafxby3SsdI/AAAAAAAAB8s/nSBqINZkCTU/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5595706521843577298" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 347px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/-3Pn9qpivFd0/Tafxby3SsdI/AAAAAAAAB8s/nSBqINZkCTU/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We assume that the only interesting one for us, as this is a SYNCHRONOUS process, is &lt;strong&gt;Dispatcher Invoker Threads&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;However we also assume that, in our scenario, the EJB client thread executes the instance, thus bypassing these thread settings.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;WLS Tuning&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A possible issue here for us is JTA timeouts when running large performance tests.&lt;br /&gt;So we increased the timeout setting appropriately.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-hKSnUz0HyzE/TbZh7jrwFzI/AAAAAAAAB9E/i6jqLk7p4I4/s1600/JTA.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 344px;" src="http://3.bp.blogspot.com/-hKSnUz0HyzE/TbZh7jrwFzI/AAAAAAAAB9E/i6jqLk7p4I4/s400/JTA.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5599770862500714290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;JVM Tuning&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;For this exercise we are using JRockit.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Heap Size &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;According to the doc -&lt;br /&gt;"A large heap decreases the garbage collection frequency but may take slightly longer to garbage collect. Typically a heap should be at least twice the size of the live objects in the heap, meaning that at least half of the heap should be freed at each garbage collection. For server applications you can usually set the heap as large as the available memory in your system will allow, as long as this doesn’t cause paging."&lt;br /&gt;&lt;br /&gt;We began by setting the min/max heap size to 4GB.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Garbage collection&lt;/em&gt;&lt;br /&gt;We stayed with the default here -&lt;br /&gt;&lt;br /&gt;We have 3 alternatives -&lt;br /&gt;&lt;br /&gt;throughput - optimizes garbage collection for application throughput (default)&lt;br /&gt;pauseTime - optimizes garbage collection for short garbage collection pauses&lt;br /&gt;deterministic - optimizes garbage collection for very short and predetermined garbage collection pauses(requires JRockit realtime)&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Nursery Size&lt;/em&gt;&lt;br /&gt;We didn't adjust this but it may be interesting for some applications.&lt;br /&gt;Again to quote the official docc -&lt;br /&gt;&lt;br /&gt;"The nursery is an area of the heap where new objects are allocated. When the nursery becomes full it is garbage collected separately in a young collection. The frequency and duration of young collections is determined by the nursery size. A large nursery decreases the frequency but the duration of each young collection might increase.&lt;br /&gt;&lt;br /&gt;The nursery size is adjusted automatically to optimize for application throughput if you use the -Xgc:throughput or -Xgc:genpar option. Typically, the nursery size should be as large as possible while maintaining short young collection pauses. Depending on the application, a nursery size can be anything from a few megabytes up to half of the heap size."&lt;br /&gt;&lt;br /&gt;I strongly suggest you use JRockit Mission Control to check on what's happening during your tests.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-hfYpYzvYx10/Taf5VTqLNYI/AAAAAAAAB80/b-6q3Rv3Pa4/s1600/6.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5595715206480868738" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 263px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/-hfYpYzvYx10/Taf5VTqLNYI/AAAAAAAAB80/b-6q3Rv3Pa4/s400/6.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, if you think you are having thread contention issues, you can do a thread dump directly from the WLS console.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-dFj4Efxp6r8/Taf56kHEtmI/AAAAAAAAB88/0YgnsGF1d24/s1600/7.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5595715846552204898" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 78px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/-dFj4Efxp6r8/Taf56kHEtmI/AAAAAAAAB88/0YgnsGF1d24/s400/7.GIF" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-704467337999952092?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/704467337999952092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=704467337999952092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/704467337999952092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/704467337999952092'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/04/soa-suite-11g-performance-tuning-part1.html' title='SOA Suite 11g --&gt; Performance Tuning Part1'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-fugMvMADBW8/Taft7ILICvI/AAAAAAAAB8M/a5xJXFIB12Y/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-399027232757820017</id><published>2011-04-12T00:22:00.001-07:00</published><updated>2011-04-13T12:35:00.624-07:00</updated><title type='text'>New Oracle Java Magazine on the way...</title><content type='html'>see http://blogs.oracle.com/java/2011/04/java_magazine_is_coming.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-399027232757820017?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/399027232757820017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=399027232757820017' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/399027232757820017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/399027232757820017'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/04/new-oracle-java-magaine-on-way.html' title='New Oracle Java Magazine on the way...'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8703109814702750045</id><published>2011-04-07T01:07:00.000-07:00</published><updated>2011-04-07T01:08:46.794-07:00</updated><title type='text'>Valuable Oracle Partner Resource</title><content type='html'>excellent resource for Oracle partners and those wanting to be one...&lt;br /&gt;&lt;br /&gt;http://blogs.oracle.com/imc/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8703109814702750045?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8703109814702750045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8703109814702750045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8703109814702750045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8703109814702750045'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/04/valuable-oracle-partner-resource.html' title='Valuable Oracle Partner Resource'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-4743350005568360293</id><published>2011-03-21T04:00:00.000-07:00</published><updated>2011-03-21T04:33:48.222-07:00</updated><title type='text'>BPM 11g and Notifications</title><content type='html'>Simple scenario I want to send an email Notification from my BPM process informing a customer that her order has been approved.&lt;br /&gt;&lt;br /&gt;I am using JAMES for this simple scenario –&lt;br /&gt;&lt;br /&gt;I created the users –&lt;br /&gt;&lt;br /&gt;• bpelsender/welcome1&lt;br /&gt;• jcooper/welcome1&lt;br /&gt;&lt;br /&gt;Email Setting as follows –&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-mPR04d8-OAo/TYcymfBIlZI/AAAAAAAAB50/UUxq3ZxqRtU/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 393px;" src="http://3.bp.blogspot.com/-mPR04d8-OAo/TYcymfBIlZI/AAAAAAAAB50/UUxq3ZxqRtU/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586489499519063442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-EunxgYgDHdU/TYcz09L1bbI/AAAAAAAAB58/Ivm42U55GLw/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 174px;" src="http://2.bp.blogspot.com/-EunxgYgDHdU/TYcz09L1bbI/AAAAAAAAB58/Ivm42U55GLw/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586490847646805426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-TulLVgr4sf0/TYc0DiWiRbI/AAAAAAAAB6E/ovI_JXQzfoI/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 119px;" src="http://2.bp.blogspot.com/-TulLVgr4sf0/TYc0DiWiRbI/AAAAAAAAB6E/ovI_JXQzfoI/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586491098141967794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I created a new BPM app in JDev and included the following myOrders.xsd&lt;br /&gt;&lt;br /&gt;-------------------&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-RolLAYP_RR0/TYc3ilzGcYI/AAAAAAAAB8E/P5msjS36umA/s1600/19.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 257px;" src="http://2.bp.blogspot.com/-RolLAYP_RR0/TYc3ilzGcYI/AAAAAAAAB8E/P5msjS36umA/s400/19.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586494930177913218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-------------------&lt;br /&gt;&lt;br /&gt;• Add Order definition to the Business Catalog&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-8okVOgA3WPI/TYc0TDXsLJI/AAAAAAAAB6M/sORvQMm66bQ/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 207px; height: 361px;" src="http://2.bp.blogspot.com/-8okVOgA3WPI/TYc0TDXsLJI/AAAAAAAAB6M/sORvQMm66bQ/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586491364703218834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create a Process Data Object &lt;strong&gt;v_order&lt;/strong&gt;, based on the Order type.&lt;br /&gt;&lt;br /&gt;• Start Activity --&gt; Implementation --&gt; Define Interface&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-t0gE3hydolo/TYc039-bOoI/AAAAAAAAB6k/aIrWbOiN9GU/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 382px; height: 400px;" src="http://4.bp.blogspot.com/-t0gE3hydolo/TYc039-bOoI/AAAAAAAAB6k/aIrWbOiN9GU/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586491998910233218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-YqMDwfmp1iw/TYc03gmviGI/AAAAAAAAB6c/USXmlWcfdu8/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 396px;" src="http://3.bp.blogspot.com/-YqMDwfmp1iw/TYc03gmviGI/AAAAAAAAB6c/USXmlWcfdu8/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586491991026272354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-CdkuDeHWw24/TYc03ruD0NI/AAAAAAAAB6U/J-1EkOspGgo/s1600/7.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 308px;" src="http://3.bp.blogspot.com/-CdkuDeHWw24/TYc03ruD0NI/AAAAAAAAB6U/J-1EkOspGgo/s400/7.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586491994009751762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;• Add a User task to approve large orders (Large order &gt;= 10000)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/--u1D5SGxZxY/TYc1NkZ3yuI/AAAAAAAAB6s/VdQ_3EuD0fA/s1600/8.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 218px;" src="http://3.bp.blogspot.com/--u1D5SGxZxY/TYc1NkZ3yuI/AAAAAAAAB6s/VdQ_3EuD0fA/s400/8.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586492370003151586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Q1I4Ds9GSjU/TYc1XNwEIvI/AAAAAAAAB60/aanw2SlRJmo/s1600/9.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 232px;" src="http://2.bp.blogspot.com/-Q1I4Ds9GSjU/TYc1XNwEIvI/AAAAAAAAB60/aanw2SlRJmo/s400/9.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586492535720911602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;• Add a BPEL process to the composite&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-wkRVlvfgQfo/TYc1lXGql5I/AAAAAAAAB68/yvKYR3gAKOA/s1600/10.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 279px;" src="http://1.bp.blogspot.com/-wkRVlvfgQfo/TYc1lXGql5I/AAAAAAAAB68/yvKYR3gAKOA/s400/10.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586492778749794194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add an EMAIL activity&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-MDwbdy4bNjA/TYc1yweIGKI/AAAAAAAAB7E/wekO3vpwG8k/s1600/11.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 345px;" src="http://1.bp.blogspot.com/-MDwbdy4bNjA/TYc1yweIGKI/AAAAAAAAB7E/wekO3vpwG8k/s400/11.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586493008897382562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All we are really interested in is – NotificationService.wsdl &amp;  NotificationService.xsd.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-vOpmvJzbwWI/TYc2Aj4degI/AAAAAAAAB7M/nHh3DOdfEi8/s1600/12.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 214px; height: 400px;" src="http://1.bp.blogspot.com/-vOpmvJzbwWI/TYc2Aj4degI/AAAAAAAAB7M/nHh3DOdfEi8/s400/12.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586493246036343298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;• So we can delete the BPEL process&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-T4eCdWmZewY/TYc2OyG_XWI/AAAAAAAAB7U/m4Qy_o57EFU/s1600/13.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 158px;" src="http://4.bp.blogspot.com/-T4eCdWmZewY/TYc2OyG_XWI/AAAAAAAAB7U/m4Qy_o57EFU/s400/13.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586493490373549410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;• Implement NotifyCustomer&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-THBG_ezc4IU/TYc2hMDhPdI/AAAAAAAAB7k/ZofArepPZAk/s1600/14.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 289px;" src="http://3.bp.blogspot.com/-THBG_ezc4IU/TYc2hMDhPdI/AAAAAAAAB7k/ZofArepPZAk/s400/14.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586493806575959506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-xddLrN2gCCs/TYc2hMJBdjI/AAAAAAAAB7c/Ml2wvvy3H-w/s1600/15.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 384px;" src="http://3.bp.blogspot.com/-xddLrN2gCCs/TYc2hMJBdjI/AAAAAAAAB7c/Ml2wvvy3H-w/s400/15.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586493806599042610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;• Deploy &amp; test&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-O3n2QVego6U/TYc21dVbBtI/AAAAAAAAB70/jiMVDnwUGcM/s1600/16.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 354px; height: 400px;" src="http://2.bp.blogspot.com/-O3n2QVego6U/TYc21dVbBtI/AAAAAAAAB70/jiMVDnwUGcM/s400/16.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586494154811836114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-kmpJ_OQD1M0/TYc21ENPCSI/AAAAAAAAB7s/UOxy_grsNC0/s1600/17.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 276px;" src="http://1.bp.blogspot.com/-kmpJ_OQD1M0/TYc21ENPCSI/AAAAAAAAB7s/UOxy_grsNC0/s400/17.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586494148066609442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;• Check email inbox &lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-iWCN04bP46s/TYc3DGzQosI/AAAAAAAAB78/NBRVGuQfGFE/s1600/18.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 107px;" src="http://2.bp.blogspot.com/-iWCN04bP46s/TYc3DGzQosI/AAAAAAAAB78/NBRVGuQfGFE/s400/18.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5586494389281137346" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-4743350005568360293?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/4743350005568360293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=4743350005568360293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/4743350005568360293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/4743350005568360293'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/03/bpm-11g-and-notifications.html' title='BPM 11g and Notifications'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-mPR04d8-OAo/TYcymfBIlZI/AAAAAAAAB50/UUxq3ZxqRtU/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8878471562535725514</id><published>2011-03-09T22:44:00.000-08:00</published><updated>2011-03-10T04:07:30.876-08:00</updated><title type='text'>Correlation with BPM 11g - cancelling a running instance</title><content type='html'>Scenario:&lt;br /&gt;&lt;br /&gt;My esteemed colleague Angelo and I got this example together...&lt;br /&gt;&lt;br /&gt;So what did we do?&lt;br /&gt;&lt;br /&gt;We thought up the following simple scenario - &lt;br /&gt;An order is passed on to a Salesperson for approval.&lt;br /&gt;However, the customer can cancel the order while it is in flight.&lt;br /&gt;&lt;br /&gt;So essentially we need to cancel a running BPM process based on an event -&lt;br /&gt;So while our BPM process is doing it's thing, we also want to "listen" for any relevant "cancel" messages.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-SI1XJewMhws/TXi3GIDTP7I/AAAAAAAAB5I/451ovPnikoo/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 111px;" src="http://2.bp.blogspot.com/-SI1XJewMhws/TXi3GIDTP7I/AAAAAAAAB5I/451ovPnikoo/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5582413053994155954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;So what did we do?&lt;br /&gt;&lt;br /&gt;We created a simple BPM app that included a User task to approve the order.&lt;br /&gt;The BPM app will also start an instance of the listening BPEL process.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-sk-QX8xTnfg/TXi9kGXdGfI/AAAAAAAAB5Q/vWI3b4iAGyk/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 207px;" src="http://4.bp.blogspot.com/-sk-QX8xTnfg/TXi9kGXdGfI/AAAAAAAAB5Q/vWI3b4iAGyk/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5582420166007658994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The BPM app will also contain an event handler that listens for a cancellation message from BPEL.&lt;br /&gt;&lt;br /&gt;The simple BPEL process that will listen for cancellations -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-rHRXt5VgwA8/TXi-E3rMtqI/AAAAAAAAB5c/8dsD9VlmmcQ/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 357px; height: 400px;" src="http://2.bp.blogspot.com/-rHRXt5VgwA8/TXi-E3rMtqI/AAAAAAAAB5c/8dsD9VlmmcQ/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5582420728999622306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We amended the BPEL wsdl to define the "cancelMsg" type and also included 2 new operations for the cancel - 1. to "receive the cancel", the other to do the cancel callback.&lt;br /&gt;&lt;br /&gt;We created a correlation set on the Receive activity.&lt;br /&gt;This is also leveraged by the OnMessage, which captures the cancellation and does the required callback.&lt;br /&gt;&lt;br /&gt;Full doc and JDev project at -&lt;br /&gt;&lt;br /&gt;https://docs.google.com/document/d/1tIYeEZM1kBmf2piGaeE5U0-59nGyQKaBand5kET-wUg/edit?hl=en&amp;authkey=CJrT2pYK&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;https://docs.google.com/leaf?id=0B7YrnfO7h717ZDNjYTZmYWUtMDAxMy00MDIxLWExOGYtMWY0YzI5MWQxMzVi&amp;hl=en&amp;authkey=CIaZwMQL&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8878471562535725514?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8878471562535725514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8878471562535725514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8878471562535725514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8878471562535725514'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/03/correlation-with-bpm-11g-cancelling.html' title='Correlation with BPM 11g - cancelling a running instance'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-SI1XJewMhws/TXi3GIDTP7I/AAAAAAAAB5I/451ovPnikoo/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-7937126559042457783</id><published>2011-02-23T07:45:00.000-08:00</published><updated>2011-02-23T08:19:38.310-08:00</updated><title type='text'>Invoking SOA Composite via EJB Service</title><content type='html'>Scenario - Invoke a composite via EJB passing a complex payload.&lt;br /&gt;&lt;br /&gt;My payload is as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-DG3SURqWTIE/TWUtin53JvI/AAAAAAAAB3g/L_zB9zAEpks/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 291px;" src="http://1.bp.blogspot.com/-DG3SURqWTIE/TWUtin53JvI/AAAAAAAAB3g/L_zB9zAEpks/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5576913786418702066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I create a synchronous BPEL process that accepts &lt;strong&gt;inputOrder&lt;/strong&gt; as input/output.&lt;br /&gt;&lt;br /&gt;all the BPEL process does is Assign In 2 Out.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-dSfGGUd010k/TWUutzN-7jI/AAAAAAAAB4A/v-TfmXUKsno/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 275px;" src="http://1.bp.blogspot.com/-dSfGGUd010k/TWUutzN-7jI/AAAAAAAAB4A/v-TfmXUKsno/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5576915077946076722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I then create an EJB Service (Generate Java interface from WSDL)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-Xlok-8EHlDw/TWUutsP7vpI/AAAAAAAAB34/rOiqNMtydGU/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://1.bp.blogspot.com/-Xlok-8EHlDw/TWUutsP7vpI/AAAAAAAAB34/rOiqNMtydGU/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5576915076075208338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-PW1FB2v5ySs/TWUutb82EdI/AAAAAAAAB3w/4Mb35UaLeGI/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 342px;" src="http://3.bp.blogspot.com/-PW1FB2v5ySs/TWUutb82EdI/AAAAAAAAB3w/4Mb35UaLeGI/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5576915071700177362" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wire together&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-6OT0qmKMcLw/TWUutPAs8hI/AAAAAAAAB3o/5WcqxZeqdec/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 173px;" src="http://4.bp.blogspot.com/-6OT0qmKMcLw/TWUutPAs8hI/AAAAAAAAB3o/5WcqxZeqdec/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5576915068226695698" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Review the classes that have been created.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-SwnaVYz13JA/TWUy9HEek6I/AAAAAAAAB4o/1RemvqOQAeM/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 199px;" src="http://2.bp.blogspot.com/-SwnaVYz13JA/TWUy9HEek6I/AAAAAAAAB4o/1RemvqOQAeM/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5576919739019465634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Make InputOrder and OrderType serializable&lt;br /&gt;&lt;br /&gt;public class InputOrder implements Serializable{&lt;br /&gt;public class OrderType implements Serializable{&lt;br /&gt;&lt;br /&gt;Change the interface (BPELOrderProcess) to get rid of Holder dependency (I had&lt;br /&gt;serialization issues with javax.xml.ws.Holder)&lt;br /&gt;&lt;br /&gt;  public void process(@WebParam(targetNamespace="http://www.example.org",&lt;br /&gt;      partName="payload", name="inputOrder", mode=Mode.INOUT)&lt;br /&gt;    bpelorderprocess.complexpayloadejbservice.complexpayloadejbservice_app.com.oracle.xmlns.InputOrder payload);&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;Deploy to SOA Server&lt;br /&gt;&lt;br /&gt;Check the JNDI tree using the WLS console to see if our EJB is visible.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-uElVeHWfUTE/TWUy8wQGn3I/AAAAAAAAB4g/L6qN4pmRft0/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 246px; height: 102px;" src="http://1.bp.blogspot.com/-uElVeHWfUTE/TWUy8wQGn3I/AAAAAAAAB4g/L6qN4pmRft0/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5576919732894211954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Create the EJB Client - I did this in the same project to save time -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-cpCTx-n-BHM/TWUy8uNFxOI/AAAAAAAAB4Y/CeoYiOySmrY/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 331px;" src="http://3.bp.blogspot.com/-cpCTx-n-BHM/TWUy8uNFxOI/AAAAAAAAB4Y/CeoYiOySmrY/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5576919732344702178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Actual Code -&lt;br /&gt;&lt;br /&gt;public class MyEJBClient {&lt;br /&gt;public static void main(String [] args) throws Throwable {&lt;br /&gt; try {&lt;br /&gt; final Context context = getInitialContext();&lt;br /&gt;     &lt;br /&gt;   Proxy proxy = (Proxy)context.lookup("ejb/BPELOrderProcessService");&lt;br /&gt;&lt;br /&gt;          // preparing the method to be called on the remote EJB&lt;br /&gt;          Method method =&lt;br /&gt;          BPELOrderProcess.class.getDeclaredMethod("process", new Class[] {InputOrder.class}); &lt;br /&gt; InputOrder id = new InputOrder();&lt;br /&gt; id.setKey(12345);&lt;br /&gt; id.setCustName("NiallC");&lt;br /&gt; &lt;br /&gt; OrderType ot = new OrderType();&lt;br /&gt; ot.setComments("Good Customer");&lt;br /&gt; ot.setProduct("Oracle SOA Suite 11g");&lt;br /&gt; ot.setProductGroup("FMW");&lt;br /&gt; ot.setProductKey(new Long(12345));&lt;br /&gt;&lt;br /&gt; id.setOrder(ot); &lt;br /&gt; &lt;br /&gt; InvocationHandler handler = Proxy.getInvocationHandler(proxy);&lt;br /&gt; InputOrder response = (InputOrder)handler.invoke(proxy, method, new Object[] { id }); &lt;br /&gt; } catch (Exception ex) {&lt;br /&gt; ex.printStackTrace();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt; private static Context getInitialContext() throws NamingException {&lt;br /&gt; Hashtable env = new Hashtable();&lt;br /&gt; // WebLogic Server 10.x connection details&lt;br /&gt; env.put( Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory" );&lt;br /&gt; env.put(Context.PROVIDER_URL, "t3://localhost:7001");&lt;br /&gt; return new InitialContext( env );&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Add the Weblgic Thin Client Library to the project&lt;br /&gt;&lt;br /&gt;Run the client&lt;br /&gt;&lt;br /&gt;Check the instance in &lt;strong&gt;em&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Cd1U1HlZNXc/TWUy8fOPJSI/AAAAAAAAB4Q/in9WspAY_T0/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 204px;" src="http://4.bp.blogspot.com/-Cd1U1HlZNXc/TWUy8fOPJSI/AAAAAAAAB4Q/in9WspAY_T0/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5576919728322979106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-hAEwxC1NpPg/TWUy8O7zN9I/AAAAAAAAB4I/8woKKJJazOU/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 310px; height: 400px;" src="http://3.bp.blogspot.com/-hAEwxC1NpPg/TWUy8O7zN9I/AAAAAAAAB4I/8woKKJJazOU/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5576919723950684114" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-7937126559042457783?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/7937126559042457783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=7937126559042457783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7937126559042457783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7937126559042457783'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/02/invoking-soa-composite-via-ejb-service.html' title='Invoking SOA Composite via EJB Service'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-DG3SURqWTIE/TWUtin53JvI/AAAAAAAAB3g/L_zB9zAEpks/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-2296808034559596440</id><published>2011-02-10T00:19:00.000-08:00</published><updated>2011-02-10T00:28:49.309-08:00</updated><title type='text'>Part 2: Getting Component instance state...</title><content type='html'>Leading on from the previous post - I've kicked off the process, now I want to check on the instance state.&lt;br /&gt;&lt;br /&gt;Again, a big thanks to Edwin -&lt;br /&gt;&lt;br /&gt;http://biemond.blogspot.com/2009/11/invoking-soa-suite-11g-service-from.html&lt;br /&gt;&lt;br /&gt;I added the following to my client Java class -&lt;br /&gt;&lt;br /&gt;  public String checkInstanceState(String uuid){&lt;br /&gt;   &lt;br /&gt;    //  &lt;br /&gt;    // connect to soa and find composite&lt;br /&gt;    //    &lt;br /&gt;    Hashtable jndiProps = new Hashtable();&lt;br /&gt;    jndiProps.put(Context.PROVIDER_URL, "t3://localhost:7001/soa-infra");&lt;br /&gt;    jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");&lt;br /&gt;    jndiProps.put(Context.SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;    jndiProps.put(Context.SECURITY_CREDENTIALS, "welcome1");&lt;br /&gt;    jndiProps.put("dedicated.connection", "true");&lt;br /&gt;    &lt;br /&gt;    Locator locator = null;&lt;br /&gt;    &lt;br /&gt;    try{&lt;br /&gt;       locator = LocatorFactory.createLocator(jndiProps);  &lt;br /&gt;       Composite composite = locator.lookupComposite("default/InvokeDirectBinding!1.0");  &lt;br /&gt;       CompositeInstanceFilter filter = new CompositeInstanceFilter();&lt;br /&gt;       filter.setConversationId(uuid);&lt;br /&gt;       &lt;br /&gt;       List&lt;CompositeInstance&gt; cis = composite.getInstances(filter);&lt;br /&gt;           // for each of the returned composite instances..  &lt;br /&gt;           for (CompositeInstance instance : cis) {  &lt;br /&gt;               System.out.println(" DN: " + instance.getCompositeDN() +"\n" +  &lt;br /&gt;                                  " Instance: " + instance.getId() +"\n" +  &lt;br /&gt;                                  " creation-date: " + instance.getCreationDate() +"\n" +  &lt;br /&gt;                                  " state (" + instance.getState() + "): " + getStateAsString(instance.getState()) );&lt;br /&gt;           }    &lt;br /&gt;       &lt;br /&gt;    }&lt;br /&gt;    catch (Exception e){&lt;br /&gt;       e.printStackTrace();&lt;br /&gt;    }&lt;br /&gt;    return "done";&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  private String getStateAsString(int state)  &lt;br /&gt;   {  &lt;br /&gt;           // note that this is dependent on wheter the composite state is captured or not  &lt;br /&gt;           if (state == CompositeInstance.STATE_COMPLETED_SUCCESSFULLY)  &lt;br /&gt;               return ("STATE_COMPLETED_SUCCESSFULLY");  &lt;br /&gt;           else if (state == CompositeInstance.STATE_FAULTED)  &lt;br /&gt;               return ("STATE_FAULTED");  &lt;br /&gt;           else if (state == CompositeInstance.STATE_RECOVERY_REQUIRED)  &lt;br /&gt;               return ("STATE_RECOVERY_REQUIRED");  &lt;br /&gt;           else if (state == CompositeInstance.STATE_RUNNING)  &lt;br /&gt;               return ("STATE_RUNNING");  &lt;br /&gt;           else if (state == CompositeInstance.STATE_STALE)  &lt;br /&gt;               return ("STATE_STALE");  &lt;br /&gt;           else  &lt;br /&gt;               return ("STATE_UNKNOWN");  &lt;br /&gt;      &lt;br /&gt;    &lt;br /&gt;    }  &lt;br /&gt;&lt;br /&gt;I also had to add the JRF Runtime library -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-g21RRxg1ryo/TVOhE8rG6_I/AAAAAAAAB3I/epCKlRGtrvY/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 283px;" src="http://3.bp.blogspot.com/-g21RRxg1ryo/TVOhE8rG6_I/AAAAAAAAB3I/epCKlRGtrvY/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571974270365920242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I then invoked a new instance -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-VJgakY93osk/TVOhcnLIdpI/AAAAAAAAB3Q/Iy_uCH0JJh8/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 97px;" src="http://4.bp.blogspot.com/-VJgakY93osk/TVOhcnLIdpI/AAAAAAAAB3Q/Iy_uCH0JJh8/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571974676911519378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;tested the new code ...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-vJpWVjvqvEk/TVOhtZHkRCI/AAAAAAAAB3Y/FALQQmmSZuE/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 199px;" src="http://3.bp.blogspot.com/-vJpWVjvqvEk/TVOhtZHkRCI/AAAAAAAAB3Y/FALQQmmSZuE/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571974965196244002" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-2296808034559596440?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/2296808034559596440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=2296808034559596440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2296808034559596440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2296808034559596440'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/02/part-2-getting-component-instance-state.html' title='Part 2: Getting Component instance state...'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-g21RRxg1ryo/TVOhE8rG6_I/AAAAAAAAB3I/epCKlRGtrvY/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-3712340241720012187</id><published>2011-02-09T08:49:00.000-08:00</published><updated>2011-02-09T23:35:54.320-08:00</updated><title type='text'>Invoking SOA Suite 11g Composite via Direct Binding</title><content type='html'>Scenario: I want to invoke a SOA Composite (essentially an Async BPEL process) via Direct Binding.&lt;br /&gt;&lt;br /&gt;My starting point for this was Edwin's blog (which I can highly recommend!!!)-&lt;br /&gt;http://biemond.blogspot.com/2009/11/calling-soa-suite-direct-binding.html&lt;br /&gt;&lt;br /&gt;However, I had issues with namespaces in my complex payload, requiring me to switch to the Oracle XML parser --&gt; thus this post!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm using the following xsd for my payload.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TVLGcTZ82TI/AAAAAAAAB1o/ssx69KuTD0s/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 378px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TVLGcTZ82TI/AAAAAAAAB1o/ssx69KuTD0s/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571733878558480690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 &lt;/strong&gt;- Create a SOA Composite that includes an async BPEL process with input/output types set to the &lt;strong&gt;order&lt;/strong&gt; defined above. Do not expose as a SOAP Service.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TVLHj_RycxI/AAAAAAAAB1w/nhdi6y5-eQk/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 274px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TVLHj_RycxI/AAAAAAAAB1w/nhdi6y5-eQk/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571735110106116882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2 &lt;/strong&gt;- Add a Direct Binding to the Exposed Services lane and point to the WSDL of the BPEL process.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TVLI24oVExI/AAAAAAAAB14/8txLc4f86eY/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 341px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TVLI24oVExI/AAAAAAAAB14/8txLc4f86eY/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571736534250754834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 3 &lt;/strong&gt;- Add an Assign (Input 2 Output) to the BPEL process.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TVLI3Al5SNI/AAAAAAAAB2A/eNyy_CuMFsE/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 217px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TVLI3Al5SNI/AAAAAAAAB2A/eNyy_CuMFsE/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571736536388028626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 4 &lt;/strong&gt;- Wire the Direct Binding to the BPEL Process.&lt;br /&gt;In the BPEL designer, delete the processorders_client partner link and use the Direct Binding instead.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TVLI3cNeUjI/AAAAAAAAB2I/87BlMVz30po/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 376px; height: 368px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TVLI3cNeUjI/AAAAAAAAB2I/87BlMVz30po/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571736543801791026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 5 &lt;/strong&gt;- Deploy and go to http://localhost:7001/soa-infra&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TVLLKKI7MbI/AAAAAAAAB2g/59tmD2jP51k/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 30px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TVLLKKI7MbI/AAAAAAAAB2g/59tmD2jP51k/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571739064391643570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TVLLJ0djyPI/AAAAAAAAB2Y/63ULhvjLCkQ/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 238px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TVLLJ0djyPI/AAAAAAAAB2Y/63ULhvjLCkQ/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571739058572609778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 6 &lt;/strong&gt;- Create a new project in your JDev app e.g.&lt;br /&gt;InvokeDirectBinding-Client and add the following libraries to it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TVLLJefHqbI/AAAAAAAAB2Q/9gGcDEhkXwM/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 223px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TVLLJefHqbI/AAAAAAAAB2Q/9gGcDEhkXwM/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571739052673575346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 7 &lt;/strong&gt;- Add a Java class to the project and cut and paste in the following code. Then test. Note the use of the Oracle XML parser here, I had some issues with the default one... Thanks Silviu / Santosh for the tip.&lt;br /&gt;&lt;br /&gt;package invokedirectbin;&lt;br /&gt;&lt;br /&gt;import java.io.StringReader;&lt;br /&gt;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.Hashtable;&lt;br /&gt;import java.util.Map;&lt;br /&gt;import java.util.UUID;&lt;br /&gt;&lt;br /&gt;import javax.naming.Context;&lt;br /&gt;&lt;br /&gt;import oracle.soa.api.JNDIDirectConnectionFactory;&lt;br /&gt;import oracle.soa.api.PayloadFactory;&lt;br /&gt;import oracle.soa.api.XMLMessageFactory;&lt;br /&gt;import oracle.soa.api.invocation.DirectConnection;&lt;br /&gt;import oracle.soa.api.invocation.DirectConnectionFactory;&lt;br /&gt;import oracle.soa.api.message.Message;&lt;br /&gt;import oracle.soa.api.message.Payload;&lt;br /&gt;import oracle.soa.management.facade.Locator;&lt;br /&gt;&lt;br /&gt;import oracle.xml.parser.v2.DOMParser;&lt;br /&gt;import oracle.xml.parser.v2.XMLPrintDriver;&lt;br /&gt;&lt;br /&gt;import org.w3c.dom.Element;&lt;br /&gt;&lt;br /&gt;import org.xml.sax.InputSource;&lt;br /&gt;&lt;br /&gt;public class InvokeComposite {&lt;br /&gt;    public InvokeComposite() {&lt;br /&gt;        super();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;  public void StartAsyncViaDirectBinding(){&lt;br /&gt;  //  &lt;br /&gt;  // create a direct connection to the composite&lt;br /&gt;  //    &lt;br /&gt;  Hashtable jndiProps = new Hashtable();&lt;br /&gt;  jndiProps.put(Context.PROVIDER_URL, "t3://localhost:7001/soa-infra");&lt;br /&gt;  jndiProps.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");&lt;br /&gt;  jndiProps.put(Context.SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;  jndiProps.put(Context.SECURITY_CREDENTIALS, "welcome1");&lt;br /&gt;  jndiProps.put("dedicated.connection", "true");&lt;br /&gt;&lt;br /&gt;  Locator locator = null;&lt;br /&gt;  try {&lt;br /&gt;     DirectConnectionFactory factory = JNDIDirectConnectionFactory.newInstance();&lt;br /&gt;     String serviceAddress = "soadirect:/default/InvokeDirectBinding!1.0/DirectBinding2ProcessOrders";    &lt;br /&gt;     DirectConnection dc = factory.createConnection(serviceAddress,jndiProps);&lt;br /&gt;  &lt;br /&gt;    //  Sample payload from em is as follows -&lt;br /&gt;      &lt;br /&gt;    //&lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&gt;&lt;br /&gt;    //      &lt;soap:Body xmlns:ns1="http://www.example.org"&gt;&lt;br /&gt;    //            &lt;ns1:order&gt;&lt;br /&gt;    //                  &lt;ns1:customer&gt;&lt;/ns1:customer&gt;&lt;br /&gt;    //                  &lt;ns1:customerEmail&gt;&lt;/ns1:customerEmail&gt;&lt;br /&gt;    //                  &lt;ns1:customerPhone&gt;&lt;/ns1:customerPhone&gt;&lt;br /&gt;    //                  &lt;ns1:product&gt;&lt;/ns1:product&gt;&lt;br /&gt;    //                  &lt;ns1:quantity&gt;&lt;/ns1:quantity&gt;&lt;br /&gt;    //                  &lt;ns1:unitPrice&gt;&lt;/ns1:unitPrice&gt;&lt;br /&gt;    //                  &lt;ns1:supplier&gt;&lt;/ns1:supplier&gt;&lt;br /&gt;    //                  &lt;ns1:totalPrice&gt;&lt;/ns1:totalPrice&gt;&lt;br /&gt;    //                  &lt;ns1:orderStatus&gt;&lt;/ns1:orderStatus&gt;&lt;br /&gt;    //                  &lt;ns1:comments&gt;&lt;/ns1:comments&gt;&lt;br /&gt;    //         &lt;/ns1:order&gt;&lt;br /&gt;    //     &lt;/soap:Body&gt;&lt;br /&gt;    // &lt;/soap:Envelope&gt;&lt;br /&gt;&lt;br /&gt;    String inputPayload =&lt;br /&gt;                   "&lt;ns1:order xmlns:ns1=\"http://www.example.org\"  xmlns:wsa=\"http://www.w3.org/2005/08/addressing\"&gt;\n" +&lt;br /&gt;                   "&lt;ns1:customer&gt;RenateC&lt;/ns1:customer&gt;\n" +&lt;br /&gt;                   "&lt;ns1:customerEmail&gt;rc@localhost&lt;/ns1:customerEmail&gt;\n" +&lt;br /&gt;                   "&lt;ns1:customerPhone&gt;123456&lt;/ns1:customerPhone&gt;\n" +&lt;br /&gt;                   "&lt;ns1:product&gt;iPad&lt;/ns1:product&gt;\n" +&lt;br /&gt;                   "&lt;ns1:quantity&gt;100&lt;/ns1:quantity&gt;\n" +&lt;br /&gt;                   "&lt;ns1:unitPrice&gt;500&lt;/ns1:unitPrice&gt;\n" +&lt;br /&gt;                   "&lt;ns1:supplier&gt;none&lt;/ns1:supplier&gt;\n" +&lt;br /&gt;                   "&lt;ns1:totalPrice&gt;50000&lt;/ns1:totalPrice&gt;\n" +&lt;br /&gt;                   "&lt;ns1:orderStatus&gt;pending&lt;/ns1:orderStatus&gt;\n" +&lt;br /&gt;                   "&lt;ns1:comments&gt;none&lt;/ns1:comments&gt;\n" +&lt;br /&gt;                   "&lt;/ns1:order&gt;\n";&lt;br /&gt;     System.out.println("Input = " +"\n" + inputPayload);&lt;br /&gt;    //&lt;br /&gt;    // parse using the Oracle XML parser.&lt;br /&gt;    // Thanks Silviu!&lt;br /&gt;     oracle.xml.parser.v2.DOMParser op = new DOMParser();&lt;br /&gt;     op.parse(new InputSource(new StringReader(inputPayload)));&lt;br /&gt;&lt;br /&gt;    // just a print to check it&lt;br /&gt;     XMLPrintDriver pd = new XMLPrintDriver(System.out);&lt;br /&gt;     pd.setFormatPrettyPrint(true);&lt;br /&gt;     pd.printDocument(op.getDocument());&lt;br /&gt;     &lt;br /&gt;     Map&lt;String, Element&gt; partData = new HashMap&lt;String, Element&gt;();&lt;br /&gt;     partData.put("payload", op.getDocument().getDocumentElement());&lt;br /&gt;&lt;br /&gt;    // Create the Message and pass in the payload&lt;br /&gt;    Payload&lt;Element&gt; payload = PayloadFactory.createXMLPayload(partData);  &lt;br /&gt;         &lt;br /&gt;    Message&lt;Element&gt; request = XMLMessageFactory.getInstance().createMessage();  &lt;br /&gt;    request.setPayload(payload);  &lt;br /&gt;   &lt;br /&gt;   // Define conversation ID&lt;br /&gt;    String uuid = "uuid:" + UUID.randomUUID();  &lt;br /&gt;    System.out.println("uuid = "+ uuid); &lt;br /&gt;    request.setProperty(request.CONVERSATION_ID, uuid);       &lt;br /&gt;    &lt;br /&gt;    // Invoke...&lt;br /&gt;    dc.post("process", request); &lt;br /&gt;       &lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;  e.printStackTrace();&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Payload displayed incorrectly above so here it is again -&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TVLPjfN4JfI/AAAAAAAAB3A/8g06Z2umoIw/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 102px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TVLPjfN4JfI/AAAAAAAAB3A/8g06Z2umoIw/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571743897592800754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Anyway the source code is available at&lt;br /&gt;https://docs.google.com/leaf?id=0B7YrnfO7h717ODIyNDU2MWQtOTJlOC00NTBkLWE5OTItOWRiMGM0ZGI4OTc1&amp;hl=en&amp;authkey=CIWLqqwL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TVLN30GYOZI/AAAAAAAAB2w/LVzyJHYqeBo/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 295px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TVLN30GYOZI/AAAAAAAAB2w/LVzyJHYqeBo/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571742047772621202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TVLNbe0TU3I/AAAAAAAAB2o/ijLf8xoTBKM/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 165px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TVLNbe0TU3I/AAAAAAAAB2o/ijLf8xoTBKM/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571741561023320946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TVLOS33QGDI/AAAAAAAAB24/ZoejcmCI9zE/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 327px; height: 400px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TVLOS33QGDI/AAAAAAAAB24/ZoejcmCI9zE/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5571742512639383602" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-3712340241720012187?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/3712340241720012187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=3712340241720012187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/3712340241720012187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/3712340241720012187'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/02/invoking-soa-suite-11g-composite-via.html' title='Invoking SOA Suite 11g Composite via Direct Binding'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gWwhpxFZjGs/TVLGcTZ82TI/AAAAAAAAB1o/ssx69KuTD0s/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-1715398540485998174</id><published>2011-02-01T03:00:00.000-08:00</published><updated>2011-02-01T03:12:04.213-08:00</updated><title type='text'>Weblogic classloader analysis tool</title><content type='html'>Nice feature of the latest wls release.&lt;br /&gt;&lt;br /&gt;Pick any app (e.g. em) and look at it's classloader details -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TUfqZ1YZkGI/AAAAAAAAB1c/vyoHtDqIvBk/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 198px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TUfqZ1YZkGI/AAAAAAAAB1c/vyoHtDqIvBk/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5568677193813954658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TUfqZlP9bwI/AAAAAAAAB1U/LKK0es03kYg/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 336px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TUfqZlP9bwI/AAAAAAAAB1U/LKK0es03kYg/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5568677189483589378" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-1715398540485998174?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/1715398540485998174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=1715398540485998174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1715398540485998174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1715398540485998174'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/02/weblogic-classloader-analysis-tool.html' title='Weblogic classloader analysis tool'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gWwhpxFZjGs/TUfqZ1YZkGI/AAAAAAAAB1c/vyoHtDqIvBk/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-1684712808647425415</id><published>2011-01-31T04:45:00.000-08:00</published><updated>2011-01-31T04:47:54.374-08:00</updated><title type='text'>RCU issue on SOA 11.1.1.4 on XE</title><content type='html'>just to let you know I hit the following issue when running rcu as sys/sysdba on XE.&lt;br /&gt;&lt;br /&gt;after running rcu, I logged into sqlplus as sys/sysdba and checked the object status with&lt;br /&gt;&lt;br /&gt;select object_name, object_type from dba_objects where status='INVALID';&lt;br /&gt;&lt;br /&gt;The following objects were listed -&lt;br /&gt;------------------------------------------&lt;br /&gt;package body mds_internal_common&lt;br /&gt;package body mds_internal_shredded&lt;br /&gt;package body mds_internal_utils&lt;br /&gt;&lt;br /&gt;procedure purge_runtime_with_timeout&lt;br /&gt;procedure purge_b2b_instances_down&lt;br /&gt;--------------------------------------&lt;br /&gt;I ran utlrp.sql to recompile and re-checked.&lt;br /&gt;&lt;br /&gt;the 3 mds packages were still listed as INVALID.&lt;br /&gt;&lt;br /&gt;I then logged on as DEV_MDS and re-compiled the 3 packages successfully.&lt;br /&gt;&lt;br /&gt;The main problem was that, according to the  RCU utility, everything had completed successfully. The errors were only highlighted when I attempted to start wls.&lt;br /&gt;&lt;br /&gt;However, after fixing the DB issues, I could re-start wls successfully. &lt;br /&gt;&lt;br /&gt;Naturally I didn't read the note on the otn download page -&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;If you want to use XE you can set the RCU_JDBC_TRIM_BLOCKS environment variable to TRUE *prior* to running RCU. As a reminder as to support level, when running RCU against XE you will receive a warning stating that the database version is not supported by Oracle.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-1684712808647425415?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/1684712808647425415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=1684712808647425415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1684712808647425415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1684712808647425415'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/01/rcu-issue-on-soa-11114-on-xe.html' title='RCU issue on SOA 11.1.1.4 on XE'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-3286807104445831271</id><published>2011-01-26T04:02:00.000-08:00</published><updated>2011-01-26T04:05:53.676-08:00</updated><title type='text'>SOA Suite 11.1.1.4 - soa composer not active by default</title><content type='html'>I did a developer install of SOA Suite 11.1.1.4.&lt;br /&gt;Everything is up and running on the AdminServer.&lt;br /&gt;&lt;br /&gt;I then test /soa/composer and see that it doesn't work ootb.&lt;br /&gt;&lt;br /&gt;I check in the wls console and see that the composer app has been installed but is&lt;br /&gt;not active.&lt;br /&gt;&lt;br /&gt;So just, target it to the AdminServer and start it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-3286807104445831271?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/3286807104445831271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=3286807104445831271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/3286807104445831271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/3286807104445831271'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/01/soa-suite-11114-soa-composer-not-active.html' title='SOA Suite 11.1.1.4 - soa composer not active by default'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-6627179897704507142</id><published>2011-01-25T22:26:00.000-08:00</published><updated>2011-01-26T09:55:09.902-08:00</updated><title type='text'>Setting up shared folders on Oracle SOA Virtual Box</title><content type='html'>Greetings from South Africa!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Scenario:&lt;br /&gt;&lt;br /&gt;I'm using VirtualBox 4.x with the SOA image created with a 3.x version.&lt;br /&gt;Shared folders don't work ootb.&lt;br /&gt;Essentially you have to re-install the "new" version of VirtualBox Additions -&lt;br /&gt;&lt;br /&gt;Thanks to the colleagues here in my workshop for the support!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps&lt;/strong&gt;&lt;br /&gt;I set up a shared folder as follows –&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT-_M9NkvFI/AAAAAAAAB0c/qCWPgQ9gdAM/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 333px; height: 400px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT-_M9NkvFI/AAAAAAAAB0c/qCWPgQ9gdAM/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5566377893764054098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I install Guest Additions&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TT-_blXgqzI/AAAAAAAAB0k/uMRFmdvBIpY/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 287px; height: 192px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TT-_blXgqzI/AAAAAAAAB0k/uMRFmdvBIpY/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5566378145061317426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You might get a pop-up prompting you to do a Force Unmount - so do it!&lt;br /&gt;&lt;br /&gt;Open a Terminal window in /media&lt;br /&gt;&lt;br /&gt;You should see a directory VBoxAdditions...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TT_AGwO77nI/AAAAAAAAB0s/7F80QoCRUPw/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 70px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TT_AGwO77nI/AAAAAAAAB0s/7F80QoCRUPw/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5566378886712520306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;do an su root (password -oracle)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT_AZyhEW5I/AAAAAAAAB00/eVmuasCGQo8/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 344px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT_AZyhEW5I/AAAAAAAAB00/eVmuasCGQo8/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5566379213742955410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we need to add the user oracle to the group vboxsf&lt;br /&gt;&lt;br /&gt;System --&gt; Administration --&gt; Users and Groups&lt;br /&gt; &lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TT_A6n76nZI/AAAAAAAAB1E/FI_Cfy8obBk/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TT_A6n76nZI/AAAAAAAAB1E/FI_Cfy8obBk/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5566379777838456210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT_A6ahy_MI/AAAAAAAAB08/ACeHyhJfi5Y/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 289px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT_A6ahy_MI/AAAAAAAAB08/ACeHyhJfi5Y/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5566379774239243458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Re-start the image&lt;br /&gt;&lt;br /&gt;Open a Terminal window in /media&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TT_BKpOGAeI/AAAAAAAAB1M/oZRkpA-xoiE/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TT_BKpOGAeI/AAAAAAAAB1M/oZRkpA-xoiE/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5566380053061042658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yet another way - from my colleague Lawrence -&lt;br /&gt;&lt;br /&gt;From the Oracle VM VirtualBox select the VM and go to Settings&gt;Shared Folders&lt;br /&gt;Add a share folder with a logical name like Share -&gt; C:\VM\Share&lt;br /&gt;Boot up the VM&lt;br /&gt;As root&lt;br /&gt;mkdir /mnt/share (share can be anything you want)&lt;br /&gt;mount -t vboxsf Share /mnt/share&lt;br /&gt;&lt;br /&gt;Note that the "Share" is from the is the logical name, and "share" is the directory that you are mounting. After this you can access everything in the /mnt/share directory. The mount command must be repeated when you want to use it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-6627179897704507142?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/6627179897704507142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=6627179897704507142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6627179897704507142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/6627179897704507142'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/01/setting-up-shared-folders-on-oracle-soa.html' title='Setting up shared folders on Oracle SOA Virtual Box'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gWwhpxFZjGs/TT-_M9NkvFI/AAAAAAAAB0c/qCWPgQ9gdAM/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-186487192188115887</id><published>2011-01-24T04:01:00.000-08:00</published><updated>2011-01-24T04:15:41.164-08:00</updated><title type='text'>Localhost --&gt; Virtualbox SOA image communication</title><content type='html'>Scenario:&lt;br /&gt;&lt;br /&gt;I have installed the SOA Virtual Box image and now want to be able to access it from my host (winxp) machine, as follows -&lt;br /&gt;&lt;br /&gt;- using IE &lt;br /&gt;- from JDeveloper&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1: Localhost setup&lt;/strong&gt;&lt;br /&gt;- VirtualBox 4.x installed&lt;br /&gt;- MSFT Loopback Adapter installed and running on 1.1.1.1&lt;br /&gt;- \etc\hosts entries&lt;br /&gt;    1.1.1.1 yourHostName&lt;br /&gt;    1.1.1.2 soabpm-vm&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2: VirtualBox configuration&lt;/strong&gt;&lt;br /&gt;- Start VirtualBox &lt;br /&gt;- Delete the host-only network entry&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT1tR5uSLdI/AAAAAAAAB0U/xoqHCIPKpGU/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 397px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT1tR5uSLdI/AAAAAAAAB0U/xoqHCIPKpGU/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5565724868819955154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Start the image&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 3: Image Network configuration&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;- Click on Devices --&gt; Network Adapters...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT1tBARlwbI/AAAAAAAAB0M/EC8LeNAdG-Q/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 319px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT1tBARlwbI/AAAAAAAAB0M/EC8LeNAdG-Q/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5565724578520875442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Check for eth0 connection&lt;br /&gt;  - If not found, create one.&lt;br /&gt;  - System --&gt; Administration --&gt; Network (password –oracle)&lt;br /&gt;  - Set ip address to 1.1.1.2&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT1tAvAnzRI/AAAAAAAAB0E/nsNgc8kafx8/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 367px; height: 400px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT1tAvAnzRI/AAAAAAAAB0E/nsNgc8kafx8/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5565724573886303506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Re-start the image&lt;br /&gt;- Once restarted, check that eth0 is active.&lt;br /&gt;-- System --&gt; Administration --&gt; network&lt;br /&gt;---  If not, activate &lt;br /&gt;---  Start &amp; Test SOA WLS&lt;br /&gt;----      Once running, test from browser on localhost –&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT1tAmPbuxI/AAAAAAAABz8/AouqNM2p35s/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 165px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TT1tAmPbuxI/AAAAAAAABz8/AouqNM2p35s/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5565724571532507922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 4: Create a new app server connection in JDev&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TT1tAc3G3pI/AAAAAAAABz0/dJ8zLqfOFw8/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 365px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TT1tAc3G3pI/AAAAAAAABz0/dJ8zLqfOFw8/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5565724569014558354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Test&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TT1tAHVQIwI/AAAAAAAABzs/gB2o28ZTiVQ/s1600/6.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 360px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TT1tAHVQIwI/AAAAAAAABzs/gB2o28ZTiVQ/s400/6.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5565724563235414786" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-186487192188115887?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/186487192188115887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=186487192188115887' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/186487192188115887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/186487192188115887'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/01/localhost-virtualbox-soa-image.html' title='Localhost --&gt; Virtualbox SOA image communication'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gWwhpxFZjGs/TT1tR5uSLdI/AAAAAAAAB0U/xoqHCIPKpGU/s72-c/1.GIF' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8186162771434545396</id><published>2011-01-17T08:56:00.000-08:00</published><updated>2011-01-19T04:54:12.845-08:00</updated><title type='text'>SOA Suite 11g 11.1.1.4.0 (PS3) ready for download</title><content type='html'>Check out http://www.oracle.com/technetwork/middleware/soasuite/downloads/index.html&lt;br /&gt;&lt;br /&gt;New features detailed at http://www.oracle.com/technetwork/middleware/soasuite/documentation/soa-11gr1-ps3-new-features-258135.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8186162771434545396?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8186162771434545396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8186162771434545396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8186162771434545396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8186162771434545396'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/01/soa-suite-11g-111140-ps3-ready-for.html' title='SOA Suite 11g 11.1.1.4.0 (PS3) ready for download'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-2090301405974768144</id><published>2011-01-12T23:41:00.000-08:00</published><updated>2011-01-12T23:52:49.898-08:00</updated><title type='text'>SOA Composite instances --&gt; When to purge?</title><content type='html'>Leading on from the last couple of posts -&lt;br /&gt;&lt;br /&gt;In my simple scenario a customer ordered some goods, a composite instance was initiated to do the work. In the meantime the customer cancels the order, we react by purging the instance.&lt;br /&gt;&lt;br /&gt;Bad business of course, usually we would want to capture the business condition - order cancelled. A simple solution, in my scenario, would be to have 3 outcomes from the human workflow --&gt; Approve, Reject, Cancel. The order could then be cancelled via the worklist app or via th api. Control is returned to the BPEL process which could then do what has to be done - e.g. compensation, update customer profile etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-2090301405974768144?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/2090301405974768144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=2090301405974768144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2090301405974768144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2090301405974768144'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/01/soa-composite-instances-when-to-purge.html' title='SOA Composite instances --&gt; When to purge?'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-55626908712685048</id><published>2011-01-11T06:29:00.001-08:00</published><updated>2011-01-11T06:38:53.378-08:00</updated><title type='text'>Creating a generic BPEL process to purge instances</title><content type='html'>The final piece of the puzzle...&lt;br /&gt;&lt;br /&gt;I create a composite - &lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSxqQWVGZHI/AAAAAAAAByM/UBLIt7K8qzA/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 133px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSxqQWVGZHI/AAAAAAAAByM/UBLIt7K8qzA/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5560936469000250482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TSxqQFXoO_I/AAAAAAAAByE/BLemHICy2es/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 393px; height: 400px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TSxqQFXoO_I/AAAAAAAAByE/BLemHICy2es/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5560936464447454194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I created the following process variables&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSxqQEsdXII/AAAAAAAABx8/YWEtNcuAHfE/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 326px; height: 400px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSxqQEsdXII/AAAAAAAABx8/YWEtNcuAHfE/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5560936464266386562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and added the following connection properties to composite.xml&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TSxqPwSZFrI/AAAAAAAABx0/_zUITKITEu4/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 220px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TSxqPwSZFrI/AAAAAAAABx0/_zUITKITEu4/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5560936458788345522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I added the following embedded Java to the BPEL process.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSxrLa6CklI/AAAAAAAAByk/EgZHxu_0cuc/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 352px; height: 400px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSxrLa6CklI/AAAAAAAAByk/EgZHxu_0cuc/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5560937483841213010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Hashtable jndiProps = new Hashtable();    &lt;br /&gt;      &lt;br /&gt;  String PROVIDER_URL = (String)getVariableData("v_PROVIDER_URL");     &lt;br /&gt;  String INITIAL_CONTEXT_FACTORY = (String)getVariableData("v_INITIAL_CONTEXT_FACTORY");     &lt;br /&gt;  String SECURITY_PRINCIPAL = (String)getVariableData("v_SECURITY_PRINCIPAL");     &lt;br /&gt;  String SECURITY_CREDENTIALS = (String)getVariableData("v_SECURITY_CREDENTIALS");     &lt;br /&gt;     &lt;br /&gt;  jndiProps.put(javax.naming.Context.PROVIDER_URL,PROVIDER_URL);       &lt;br /&gt;  jndiProps.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,INITIAL_CONTEXT_FACTORY);       &lt;br /&gt;  jndiProps.put(javax.naming.Context.SECURITY_PRINCIPAL, SECURITY_PRINCIPAL);       &lt;br /&gt;  jndiProps.put(javax.naming.Context.SECURITY_CREDENTIALS, SECURITY_CREDENTIALS);   &lt;br /&gt;  &lt;br /&gt;  jndiProps.put("dedicated.connection", "true");       &lt;br /&gt;  System.out.println("*** Purge composite instance... ");     &lt;br /&gt;  Locator locator = null;       &lt;br /&gt;  System.out.println("*** Purge composite instance - about to get id ");     &lt;br /&gt;   &lt;br /&gt;  String compositeID = (String)getVariableData("v_compositeID");     &lt;br /&gt;  System.out.println("*** Purge composite instance - got id " + compositeID);     &lt;br /&gt;  try {       &lt;br /&gt;      LocatorFactory.createLocator(jndiProps);      &lt;br /&gt;      locator = LocatorFactory.createLocator(jndiProps);       &lt;br /&gt;      CompositeInstanceFilter coif = new CompositeInstanceFilter();     &lt;br /&gt;      coif.setId(compositeID);     &lt;br /&gt;      List list = locator.getCompositeInstances(coif);       &lt;br /&gt;      System.out.println("*** Composite Instance " + compositeID + " about to be deleted...");     &lt;br /&gt;               &lt;br /&gt;          for(int i = 0 ; i &lt; list.size() ; i ++){     &lt;br /&gt;            CompositeInstance coi = (CompositeInstance)list.get(i);     &lt;br /&gt;            System.out.println("*** Composite Instance State = " +coi.getState());     &lt;br /&gt;            System.out.println("*** Composite Instance " + compositeID + " about to be deleted...");     &lt;br /&gt;          // locator.purgeInstance(coif);       &lt;br /&gt;      }      &lt;br /&gt;  } &lt;br /&gt;  catch (Exception e) {       &lt;br /&gt;       &lt;br /&gt;       e.printStackTrace(); &lt;br /&gt;  }      &lt;br /&gt;     locator.close();&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSxrLO71-vI/AAAAAAAAByc/2vCiZh214lk/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 230px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSxrLO71-vI/AAAAAAAAByc/2vCiZh214lk/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5560937480627550962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now kick off the cancel process –&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSxrLB_vMDI/AAAAAAAAByU/CExGI1pWK1w/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 247px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSxrLB_vMDI/AAAAAAAAByU/CExGI1pWK1w/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5560937477154222130" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-55626908712685048?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/55626908712685048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=55626908712685048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/55626908712685048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/55626908712685048'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/01/creating-generic-bpel-process-to-purge.html' title='Creating a generic BPEL process to purge instances'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gWwhpxFZjGs/TSxqQWVGZHI/AAAAAAAAByM/UBLIt7K8qzA/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-7122237215433950442</id><published>2011-01-10T22:59:00.001-08:00</published><updated>2011-01-11T00:55:55.487-08:00</updated><title type='text'>Canceling a running composite instance - example</title><content type='html'>&lt;strong&gt;Firstly I wish all of you - Health, Wealth and Happiness for 2011 and beyond!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Now it's back to work...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Scenario&lt;/strong&gt;&lt;br /&gt;File Adapter(read) --&gt; Mediator --&gt; BPEL --&gt; human workflow --&gt; DB&lt;br /&gt;Adapter(write).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 - create the composite&lt;/strong&gt;&lt;br /&gt;- I started with a simple Mediator, to begin with.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSwB9EjRlVI/AAAAAAAABwc/NHeZVpAOx9w/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560821788601062738" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 194px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSwB9EjRlVI/AAAAAAAABwc/NHeZVpAOx9w/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Here is the XSD I used&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwB84N8jlI/AAAAAAAABwM/gcvnJmUYDAk/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560821785290378834" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 249px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwB84N8jlI/AAAAAAAABwM/gcvnJmUYDAk/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- As you can see, I created a composite sensor on the OrderNr.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSwB9H8NANI/AAAAAAAABwU/ZttYAqnbbUs/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560821789510926546" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 361px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSwB9H8NANI/AAAAAAAABwU/ZttYAqnbbUs/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ok, let’s add the BPEL &amp;amp; Human Workflow components to the composite&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwC6_oMpVI/AAAAAAAABwk/z1TC2F-knUI/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560822852431422802" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 360px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwC6_oMpVI/AAAAAAAABwk/z1TC2F-knUI/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Define the Human Workflow ( I simply assign the approval task to jcooper)&lt;br /&gt;- Autogenerate task form etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Deploy and Test&lt;/strong&gt;&lt;br /&gt;- Here is my test input XML.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwB8htxnXI/AAAAAAAABwE/rwqLT_tuLj8/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560821779249864050" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 213px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwB8htxnXI/AAAAAAAABwE/rwqLT_tuLj8/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Login to sqlplus as dev_soainfra&lt;br /&gt;- execute the following&lt;br /&gt;-- select substr(composite_instance_id,1,15),&lt;br /&gt;substr( component_instance_id,1,20),&lt;br /&gt;substr( component_name, 1,20),&lt;br /&gt;substr(sensor_name,1,20),&lt;br /&gt;substr( string_value,1,20)&lt;br /&gt;from composite_sensor_value&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwD5rkNKRI/AAAAAAAABws/8i3TJIfNWs0/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560823929377728786" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 53px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwD5rkNKRI/AAAAAAAABws/8i3TJIfNWs0/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- So the composite instance id = 180001&lt;br /&gt;&lt;br /&gt;- I can now use this value to execute the following query&lt;br /&gt;-- select substr(composite_dn,1,25), state, live_instances from composite_instance where id = 180001&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TSwEtLDWX9I/AAAAAAAABw0/j8gBiX2EpaQ/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560824814003183570" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 117px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TSwEtLDWX9I/AAAAAAAABw0/j8gBiX2EpaQ/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- The STATE = 0 which indicates that the instances is open and running.&lt;br /&gt;- Other state values are --&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwFM1VonwI/AAAAAAAABw8/idm7ocH9BCY/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560825357930110722" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 357px; CURSOR: hand; HEIGHT: 148px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwFM1VonwI/AAAAAAAABw8/idm7ocH9BCY/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- We can now access the cube_instance table to get the details of the running bpel instance –&lt;br /&gt;&lt;br /&gt;-- Select cikey, state from cube_instance where cmpst_id = 180001;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSwFu9YSG1I/AAAAAAAABxE/mbIP0_LBTRE/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560825944204254034" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 65px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSwFu9YSG1I/AAAAAAAABxE/mbIP0_LBTRE/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- State = 1 means bpel instance is open and running –&lt;br /&gt;- Other state values are --&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSwGA_qO3lI/AAAAAAAABxM/q0XGE-EZYuU/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560826254054055506" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 268px; CURSOR: hand; HEIGHT: 247px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TSwGA_qO3lI/AAAAAAAABxM/q0XGE-EZYuU/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Now I check the Human Workflow tables&lt;br /&gt;-- select&lt;br /&gt;substr( title, 1,20),&lt;br /&gt;tasknumber,&lt;br /&gt;taskid,&lt;br /&gt;substr(state,1,10),&lt;br /&gt;substr(assignees,1,20)&lt;br /&gt;from wftask&lt;br /&gt;where compositeinstanceid = 180001;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwHC7AIKjI/AAAAAAAABxU/TQjFi-dlKWQ/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560827386675079730" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 209px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TSwHC7AIKjI/AAAAAAAABxU/TQjFi-dlKWQ/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-- The taskid = 44b2adae-c347-48c4-b5d9-0b76ba722c1d&lt;br /&gt;-- The task number = 200180&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 2 - Leveraging the Java API to find a particular human task&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;- To begin with, let's get all the tasks for jcooper -&lt;br /&gt;-- Method getAllTasks()&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TSwNYtE809I/AAAAAAAABxc/ekduY2-ZWg4/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560834357964100562" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 109px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TSwNYtE809I/AAAAAAAABxc/ekduY2-ZWg4/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The task 200180 is the last one in the list.&lt;br /&gt;&lt;br /&gt;- Then I look for a specific task - getSpecificTask()&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TSwUTMLWe_I/AAAAAAAABxk/hMKdgeck2iw/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5560841959814626290" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 388px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TSwUTMLWe_I/AAAAAAAABxk/hMKdgeck2iw/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;-------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;package processmyorderapi;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.Hashtable;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;import oracle.bpel.services.workflow.client.IWorkflowServiceClient;&lt;br /&gt;import oracle.bpel.services.workflow.client.IWorkflowServiceClientConstants;&lt;br /&gt;import oracle.bpel.services.workflow.client.WorkflowServiceClientFactory;&lt;br /&gt;import oracle.bpel.services.workflow.query.ITaskQueryService;&lt;br /&gt;&lt;br /&gt;import oracle.bpel.services.workflow.repos.TableConstants;&lt;br /&gt;import oracle.bpel.services.workflow.task.ITaskService;&lt;br /&gt;import oracle.bpel.services.workflow.task.model.Task;&lt;br /&gt;import oracle.bpel.services.workflow.verification.IWorkflowContext;&lt;br /&gt;&lt;br /&gt;import oracle.bpel.services.workflow.repos.Predicate;&lt;br /&gt;&lt;br /&gt;public class HwTask {&lt;br /&gt;    &lt;br /&gt;public HwTask() {&lt;br /&gt;super();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getAllTasks(String user){&lt;br /&gt;&lt;br /&gt;  Map properties = new HashMap();&lt;br /&gt;  properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_PROVIDER_URL, "t3://localhost:8001");&lt;br /&gt;  properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_CREDENTIALS, "welcome1");&lt;br /&gt;  properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;&lt;br /&gt;  try&lt;br /&gt;    {&lt;br /&gt;    //Create JAVA WorkflowServiceClient&lt;br /&gt;    IWorkflowServiceClient wfSvcClient =&lt;br /&gt;    WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.REMOTE_CLIENT, properties, null);&lt;br /&gt;&lt;br /&gt;    //Get the task query service&lt;br /&gt;    ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();&lt;br /&gt;    //Login as jcooper&lt;br /&gt;    IWorkflowContext ctx = querySvc.authenticate("jcooper","welcome1".toCharArray(),null);&lt;br /&gt;    //Set up list of columns to query&lt;br /&gt;    List queryColumns = new ArrayList();&lt;br /&gt;    queryColumns.add("TASKID");&lt;br /&gt;    queryColumns.add("TASKNUMBER");&lt;br /&gt;    queryColumns.add("TITLE");&lt;br /&gt;    queryColumns.add("OUTCOME");&lt;br /&gt;    //Query a list of tasks assigned to jcooper&lt;br /&gt;    List tasks = querySvc.queryTasks(ctx,&lt;br /&gt;    queryColumns,&lt;br /&gt;    null, //Do not query additional info&lt;br /&gt;    ITaskQueryService.AssignmentFilter.MY,&lt;br /&gt;    null, //No keywords&lt;br /&gt;    null, //No custom predicate&lt;br /&gt;    null, //No special ordering&lt;br /&gt;    0, //Do not page the query result&lt;br /&gt;    0);&lt;br /&gt;&lt;br /&gt;    //Get the task service&lt;br /&gt;    ITaskService taskSvc = wfSvcClient.getTaskService();&lt;br /&gt;    //Loop over the tasks, outputting task information, &lt;br /&gt;&lt;br /&gt;    for(int i = 0 ; i &lt; tasks.size() ; i ++)&lt;br /&gt;    {&lt;br /&gt;   &lt;br /&gt;      Task task = (Task)tasks.get(i);&lt;br /&gt;      int taskNumber = task.getSystemAttributes().getTaskNumber();&lt;br /&gt;      String title = task.getTitle();&lt;br /&gt;      String taskId = task.getSystemAttributes().getTaskId();&lt;br /&gt;      String outcome = task.getSystemAttributes().getOutcome();&lt;br /&gt;      /* now we could auto-approve tasks, if required!&lt;br /&gt;    /* if(outcome == null)&lt;br /&gt;{&lt;br /&gt;outcome = "APPROVED";&lt;br /&gt;taskSvc.updateTaskOutcome(ctx,taskId,outcome);&lt;br /&gt;}*/&lt;br /&gt;&lt;br /&gt;      System.out.println("Task ID#"+ taskId + "Task Nr#" + taskNumber+" ("+title+") is "+outcome);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;  catch (Exception e)&lt;br /&gt;  {&lt;br /&gt;    //Handle any exceptions raised here...&lt;br /&gt;    System.out.println("Caught workflow exception: "+e.getMessage());&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return "done";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;  public String getSpecificTask(String taskid){&lt;br /&gt;   System.out.println("*** getSpecificTask() looking for taskId " + taskid);&lt;br /&gt;    Map properties = new HashMap();&lt;br /&gt;    properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_PROVIDER_URL, "t3://localhost:8001");&lt;br /&gt;    properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_CREDENTIALS, "welcome1");&lt;br /&gt;    properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;&lt;br /&gt;    try&lt;br /&gt;      {&lt;br /&gt;      //Create JAVA WorflowServiceClient&lt;br /&gt;      IWorkflowServiceClient wfSvcClient =&lt;br /&gt;      WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.REMOTE_CLIENT, properties, null);&lt;br /&gt;&lt;br /&gt;      //Get the task query service&lt;br /&gt;      ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();&lt;br /&gt;      //Login as jcooper&lt;br /&gt;      IWorkflowContext ctx = querySvc.authenticate("jcooper","welcome1".toCharArray(),null);&lt;br /&gt;      //Set up list of columns to query&lt;br /&gt;      List queryColumns = new ArrayList();&lt;br /&gt;      queryColumns.add("TASKID");&lt;br /&gt;      queryColumns.add("TASKNUMBER");&lt;br /&gt;      queryColumns.add("TITLE");&lt;br /&gt;      queryColumns.add("OUTCOME");&lt;br /&gt;        &lt;br /&gt;      // add predicate for particular taskid&lt;br /&gt;        &lt;br /&gt;      Predicate predicate = new Predicate(TableConstants.WFTASK_TASKID_COLUMN,&lt;br /&gt;                                      Predicate.OP_EQ,&lt;br /&gt;                                      taskid);&lt;br /&gt;      System.out.println("*** getSpecificTask() Predicate added for taskId " + taskid);&lt;br /&gt;&lt;br /&gt;      //Query a list of tasks assigned to jcooper&lt;br /&gt;      List tasklist = querySvc.queryTasks(ctx,&lt;br /&gt;      queryColumns,&lt;br /&gt;      null, //Do not query additional info&lt;br /&gt;      ITaskQueryService.AssignmentFilter.MY,&lt;br /&gt;      null, //No keywords&lt;br /&gt;      predicate, //add custom predicate&lt;br /&gt;      null, //No special ordering&lt;br /&gt;      0, //Do not page the query result&lt;br /&gt;      0);&lt;br /&gt;&lt;br /&gt;    if (tasklist != null) { // There are tasks &lt;br /&gt;         System.out.println("Total number of tasks: " + tasklist.size()); &lt;br /&gt;         System.out.println("Tasks List: ");&lt;br /&gt;         Task task = null; &lt;br /&gt;         for (int i = 0; i &lt; tasklist.size(); i++) { &lt;br /&gt;           task = (Task) tasklist.get(i);          &lt;br /&gt;           System.out.println("Task Number: " + task.getSystemAttributes().getTaskNumber());&lt;br /&gt;           System.out.println("Task Id: " + task.getSystemAttributes().getTaskId());&lt;br /&gt;           System.out.println("Title: " + task.getTitle());&lt;br /&gt;           System.out.println("Priority: " + task.getPriority());&lt;br /&gt;           System.out.println("State: " + task.getSystemAttributes().getState());&lt;br /&gt;           System.out.println();&lt;br /&gt;           // Retrive any Optional Info specified&lt;br /&gt;           // Use task service, to perform operations on the task&lt;br /&gt;         }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;    catch (Exception e)&lt;br /&gt;    {&lt;br /&gt;      //Handle any exceptions raised here...&lt;br /&gt;      System.out.println("Caught workflow exception: "+e.getMessage());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return "done";&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;strong&gt;Step 2 - Leveraging the Java API to find and purge composite instances&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;- see method - findComposite()&lt;br /&gt;-- here we call locator.purgeInstance() to purge the instance  &lt;br /&gt;--------------------------------------------&lt;br /&gt;&lt;br /&gt;package compositeapi;&lt;br /&gt;&lt;br /&gt;import java.util.Hashtable;  &lt;br /&gt;import java.util.List;  &lt;br /&gt;import javax.naming.Context;&lt;br /&gt;&lt;br /&gt;import oracle.soa.management.facade.ComponentInstance;&lt;br /&gt;import oracle.soa.management.facade.Composite;&lt;br /&gt;import oracle.soa.management.facade.CompositeInstance;&lt;br /&gt;import oracle.soa.management.facade.Locator;  &lt;br /&gt;import oracle.soa.management.facade.LocatorFactory;&lt;br /&gt;import oracle.soa.management.facade.ServiceEngine;&lt;br /&gt;import oracle.soa.management.facade.bpel.BPELServiceEngine;&lt;br /&gt;import oracle.soa.management.util.ComponentInstanceFilter;&lt;br /&gt;import oracle.soa.management.util.CompositeInstanceFilter;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class CompositeAPI {&lt;br /&gt;  &lt;br /&gt;  private Locator locator = null; &lt;br /&gt;  &lt;br /&gt;    public CompositeAPI() {&lt;br /&gt;        super();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public void findComposite(){&lt;br /&gt;      &lt;br /&gt;      java.util.Hashtable props = new java.util.Hashtable();&lt;br /&gt;      props.put(javax.naming.Context.PROVIDER_URL, "t3://localhost:8001/soa-infra");&lt;br /&gt;      props.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");&lt;br /&gt;      props.put(javax.naming.Context.SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;      props.put(javax.naming.Context.SECURITY_CREDENTIALS, "welcome1");&lt;br /&gt;      props.put("dedicated.connection", "true");&lt;br /&gt;&lt;br /&gt;      try{&lt;br /&gt;        locator = LocatorFactory.createLocator(props);&lt;br /&gt;        CompositeInstanceFilter coif = new CompositeInstanceFilter();&lt;br /&gt;        coif.setId("180001");&lt;br /&gt;        List list = locator.getCompositeInstances(coif);  &lt;br /&gt;        System.out.println("Nr. of Composites found = " + list.size());&lt;br /&gt;        &lt;br /&gt;        for(int i = 0 ; i &lt; list.size() ; i ++){&lt;br /&gt;          CompositeInstance coi = (CompositeInstance)list.get(i);&lt;br /&gt;          System.out.println("Composite Instance Domain Name = " +coi.getCompositeDN());  &lt;br /&gt;          System.out.println("Composite Instance State = " +coi.getState());&lt;br /&gt;          System.out.println("Composite Instance Status = " +coi.getStatus());&lt;br /&gt;          &lt;br /&gt;          locator.purgeInstance(coif);  &lt;br /&gt;           &lt;br /&gt;        }&lt;br /&gt;         &lt;br /&gt;       &lt;br /&gt;        // Component Instance Filter usage&lt;br /&gt;          &lt;br /&gt;        ComponentInstanceFilter cif = new ComponentInstanceFilter(); &lt;br /&gt;        cif.setCompositeInstanceId("180001");  &lt;br /&gt;        List l = locator.getComponentInstances(cif);&lt;br /&gt;        &lt;br /&gt;        System.out.println("Instance found = " + l.size());  &lt;br /&gt;        &lt;br /&gt;          for(int i = 0 ; i &lt; l.size() ; i ++){&lt;br /&gt;            ComponentInstance ci = (ComponentInstance)l.get(i);&lt;br /&gt;           System.out.println("Component Instance ID = " +ci.getCompositeInstanceId());  &lt;br /&gt;           ServiceEngine se = ci.getServiceEngine();&lt;br /&gt;           System.out.println("*** Engine Type " + se.getEngineType());   &lt;br /&gt;              System.out.println("DN = " + ci.getCompositeDN());   &lt;br /&gt;          }&lt;br /&gt;          &lt;br /&gt;        String compositeDN = "default/ProcessMyOrder!1.0";&lt;br /&gt;        Composite composite = locator.lookupComposite(compositeDN);&lt;br /&gt;        System.out.println("*** got composite "+ composite.toString());  &lt;br /&gt;        &lt;br /&gt;        // Purge&lt;br /&gt;        &lt;br /&gt;      }&lt;br /&gt;      catch(Exception e){&lt;br /&gt;        e.printStackTrace();&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;strong&gt;Step 3 - Check the DB &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I run the selects again -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TSwa985vmnI/AAAAAAAABxs/iABqbcCZ2Fw/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 190px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TSwa985vmnI/AAAAAAAABxs/iABqbcCZ2Fw/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5560849291518384754" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-7122237215433950442?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/7122237215433950442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=7122237215433950442' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7122237215433950442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7122237215433950442'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2011/01/canceling-running-composite-instance.html' title='Canceling a running composite instance - example'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gWwhpxFZjGs/TSwB9EjRlVI/AAAAAAAABwc/NHeZVpAOx9w/s72-c/1.GIF' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-2059530558323745401</id><published>2010-12-18T00:02:00.000-08:00</published><updated>2011-01-07T07:21:40.359-08:00</updated><title type='text'>Canceling a running composite in SOA Suite 11g</title><content type='html'>Simple scenario -&lt;br /&gt;&lt;br /&gt;An order XYZ is being processed in a composite that includes the following&lt;br /&gt;components-&lt;br /&gt;File Adapter(read) --&gt; Mediator --&gt; BPEL --&gt; human workflow --&gt; DB&lt;br /&gt;Adapter(write).&lt;br /&gt;&lt;br /&gt;In the meantime the customer cancels the order XYZ by calling the call center.&lt;br /&gt;The order db is updated accordingly via the call center app, but now we&lt;br /&gt;need to kill the soa composite instance that's still running.&lt;br /&gt;&lt;br /&gt;I could create a composite sensor based on the unique Order ID.&lt;br /&gt;The info is then written to the SOA_INFRA table composite_sensor_value&lt;br /&gt;&lt;br /&gt;From this table I can then get the COMPOSITE_INSTANCE_ID value.&lt;br /&gt;I can save this pair - Order ID and COMPOSITE_INSTANCE_ID to the DB.&lt;br /&gt;&lt;br /&gt;Now we know which composite is processing Order ID XYZ. &lt;br /&gt;&lt;br /&gt;Regarding cancelling the running process -&lt;br /&gt;&lt;br /&gt;We can use the COMPOSITE_INSTANCE_ID to query &lt;br /&gt;the cube_instance table.&lt;br /&gt;&lt;br /&gt;e.g. select * from cube_instance where cmpst_id = xxx;&lt;br /&gt;&lt;br /&gt;I can then do the usual purge.&lt;br /&gt;&lt;br /&gt;But how should we model this from an architectural perspective?&lt;br /&gt;My OCS colleague, Markus, suggested a generic composite that takes care of&lt;br /&gt;the "cancellation" of all running SOA composite instances.&lt;br /&gt;&lt;br /&gt;So we could have the user cancellation call to the call center triggering an event that our generic composite processes.&lt;br /&gt;&lt;br /&gt;So essentially we have the following -&lt;br /&gt;&lt;br /&gt;1. Create an event via the EDN-Framework. &lt;br /&gt;1.1. The payload contains the info required (orderID, CompositeID etc.) to&lt;br /&gt;find the appropriate running instance.&lt;br /&gt;&lt;br /&gt;2. Event is picked up by a Mediator which routes on to a BPEL process that does&lt;br /&gt;the actual purging.&lt;br /&gt;&lt;br /&gt;Example to follow after the holidays.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-2059530558323745401?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/2059530558323745401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=2059530558323745401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2059530558323745401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2059530558323745401'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/12/canceling-running-composite-in-soa.html' title='Canceling a running composite in SOA Suite 11g'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8720912021556092289</id><published>2010-12-08T01:11:00.000-08:00</published><updated>2010-12-08T02:46:07.861-08:00</updated><title type='text'>Human Workflow API Part 3 - ITaskQueryService.AssignmentFilter</title><content type='html'>leading on from the previous post...&lt;br /&gt;&lt;br /&gt;We have a couple of roles in HW.&lt;br /&gt;For example, the user that actually does the "approving" e.g. jverne.&lt;br /&gt;&lt;br /&gt;Also we have the process owner e.g. cdickens.&lt;br /&gt;&lt;br /&gt;We can leverage the Java API to process the HW tasks from both perspectives.&lt;br /&gt;&lt;br /&gt;We just need to set the ITaskQueryService.AssignmentFilter appropriately.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TP9NIthu9VI/AAAAAAAABtI/iCRiTLtuHEM/s1600/filter.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5548238077999117650" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 379px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TP9NIthu9VI/AAAAAAAABtI/iCRiTLtuHEM/s400/filter.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    //Query a list of tasks assigned to jcooper&lt;br /&gt;    List tasks = querySvc.queryTasks(ctx,&lt;br /&gt;    queryColumns,&lt;br /&gt;    optionalInfo, // Payload&lt;br /&gt;    ITaskQueryService.AssignmentFilter.OWNER,&lt;br /&gt;    null, //No keywords&lt;br /&gt;    null, //No custom predicate&lt;br /&gt;    null, //No special ordering&lt;br /&gt;    0, //Do not page the query result&lt;br /&gt;    0);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8720912021556092289?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8720912021556092289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8720912021556092289' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8720912021556092289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8720912021556092289'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/12/oracle-human-workflow-part-3.html' title='Human Workflow API Part 3 - ITaskQueryService.AssignmentFilter'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gWwhpxFZjGs/TP9NIthu9VI/AAAAAAAABtI/iCRiTLtuHEM/s72-c/filter.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-3456863626053832243</id><published>2010-11-26T05:06:00.000-08:00</published><updated>2010-11-26T05:13:27.951-08:00</updated><title type='text'>Human Workflow Java API Part 2</title><content type='html'>Continuing on from the previous post...&lt;br /&gt;&lt;br /&gt;The payload I tested with is as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TO-xU304gLI/AAAAAAAABs4/Tfri-2oxKLw/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5543844638457626802" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 247px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TO-xU304gLI/AAAAAAAABs4/Tfri-2oxKLw/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now I want to access the &lt;strong&gt;custName&lt;/strong&gt; value in the payload.&lt;br /&gt;&lt;br /&gt;Here's the code snippet(thanks to my colleaue Mireille) -&lt;br /&gt;&lt;br /&gt;Element el= task.getPayloadAsElement();&lt;br /&gt;String custName = null;&lt;br /&gt;custName = getElementValue(el, "custName");&lt;br /&gt;if(el != null){&lt;br /&gt;System.out.println("Payload customer name = " + custName);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;System.out.println("Payload is null");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static String getElementValue(Element pElement, String pElementName){&lt;br /&gt;String value=null;&lt;br /&gt;NodeList myNodeList = pElement.getElementsByTagName(pElementName);&lt;br /&gt;Element myElement = (Element)myNodeList.item(0);&lt;br /&gt;NodeList myChildNodeList = myElement.getChildNodes();&lt;br /&gt;for (int i=0; i&lt;mychildnodelist.getlength();&gt; {&lt;br /&gt;value = ((Node)myChildNodeList.item( i )).getNodeValue().trim();&lt;br /&gt;if( value.equals("")  value.equals("\r") ){&lt;br /&gt;continue;&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return value;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Testing...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TO-yRnFnrQI/AAAAAAAABtA/GEmJ6ZouhSY/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 154px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TO-yRnFnrQI/AAAAAAAABtA/GEmJ6ZouhSY/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5543845681936444674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The complete Java class is as follows -&lt;br /&gt;&lt;br /&gt;package com.niall.hwclient;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;import oracle.bpel.services.workflow.client.IWorkflowServiceClient;&lt;br /&gt;import oracle.bpel.services.workflow.client.IWorkflowServiceClientConstants;&lt;br /&gt;import oracle.bpel.services.workflow.client.WorkflowServiceClientFactory;&lt;br /&gt;import oracle.bpel.services.workflow.query.ITaskQueryService;&lt;br /&gt;import oracle.bpel.services.workflow.task.ITaskService;&lt;br /&gt;import oracle.bpel.services.workflow.task.model.Task;&lt;br /&gt;import oracle.bpel.services.workflow.verification.IWorkflowContext;&lt;br /&gt;&lt;br /&gt;import org.w3c.dom.Element;&lt;br /&gt;import org.w3c.dom.Node;&lt;br /&gt;import org.w3c.dom.NodeList;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class HwTask {&lt;br /&gt;public HwTask() {&lt;br /&gt;super();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getTaskdetails(String user){&lt;br /&gt;&lt;br /&gt;Map properties = new HashMap();&lt;br /&gt;properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_PROVIDER_URL, "t3://localhost:8001");&lt;br /&gt;properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_CREDENTIALS, "welcome1");&lt;br /&gt;properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;//Create JAVA WorflowServiceClient&lt;br /&gt;IWorkflowServiceClient wfSvcClient =&lt;br /&gt;WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.REMOTE_CLIENT, properties, null);&lt;br /&gt;&lt;br /&gt;//Get the task query service&lt;br /&gt;ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();&lt;br /&gt;//Login as jcooper&lt;br /&gt;IWorkflowContext ctx = querySvc.authenticate("cdoyle","welcome1".toCharArray(),null);&lt;br /&gt;//Set up list of columns to query&lt;br /&gt;List queryColumns = new ArrayList();&lt;br /&gt;queryColumns.add("TASKID");&lt;br /&gt;queryColumns.add("TASKNUMBER");&lt;br /&gt;queryColumns.add("TITLE");&lt;br /&gt;queryColumns.add("OUTCOME");&lt;br /&gt;&lt;br /&gt;// also get the payload&lt;br /&gt;List optionalInfo = new ArrayList();&lt;br /&gt;optionalInfo.add(ITaskQueryService.OptionalInfo.PAYLOAD);&lt;br /&gt;//&lt;br /&gt;//Query a list of tasks assigned to jcooper&lt;br /&gt;List tasks = querySvc.queryTasks(ctx,&lt;br /&gt;queryColumns,&lt;br /&gt;optionalInfo, // Payload&lt;br /&gt;ITaskQueryService.AssignmentFilter.MY,&lt;br /&gt;null, //No keywords&lt;br /&gt;null, //No custom predicate&lt;br /&gt;null, //No special ordering&lt;br /&gt;0, //Do not page the query result&lt;br /&gt;0);&lt;br /&gt;//Get the task service&lt;br /&gt;ITaskService taskSvc = wfSvcClient.getTaskService();&lt;br /&gt;//Loop over the tasks, outputting task information, and approving any&lt;br /&gt;//tasks whose outcome has not been set...&lt;br /&gt;&lt;br /&gt;for(int i = 0 ; i &lt; tasks.size() ; i ++)&lt;br /&gt;{&lt;br /&gt;System.out.println("In task loop...");&lt;br /&gt;Task task = (Task)tasks.get(i);&lt;br /&gt;int taskNumber = task.getSystemAttributes().getTaskNumber();&lt;br /&gt;String title = task.getTitle();&lt;br /&gt;String taskId = task.getSystemAttributes().getTaskId();&lt;br /&gt;String outcome = task.getSystemAttributes().getOutcome();&lt;br /&gt;&lt;br /&gt;// Get the payload&lt;br /&gt;Element el= task.getPayloadAsElement();&lt;br /&gt;String custName = null;&lt;br /&gt;custName = getElementValue(el, "custName");&lt;br /&gt;if(el != null){&lt;br /&gt;System.out.println("Payload customer name = " + custName);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;System.out.println("Payload is null");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* if(outcome == null)&lt;br /&gt;{&lt;br /&gt;outcome = "APPROVED";&lt;br /&gt;taskSvc.updateTaskOutcome(ctx,taskId,outcome);&lt;br /&gt;}*/&lt;br /&gt;&lt;br /&gt;System.out.println("Task #"+taskNumber+" ("+title+") is "+outcome);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;catch (Exception e)&lt;br /&gt;{&lt;br /&gt;//Handle any exceptions raised here...&lt;br /&gt;System.out.println("Caught workflow exception: "+e.getMessage());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return "done";&lt;br /&gt;}&lt;br /&gt;public static String getElementValue(Element pElement, String pElementName){&lt;br /&gt;String value=null;&lt;br /&gt;NodeList myNodeList = pElement.getElementsByTagName(pElementName);&lt;br /&gt;Element myElement = (Element)myNodeList.item(0);&lt;br /&gt;NodeList myChildNodeList = myElement.getChildNodes();&lt;br /&gt;for (int i=0; i&lt;mychildnodelist.getlength();&gt; {&lt;br /&gt;value = ((Node)myChildNodeList.item( i )).getNodeValue().trim();&lt;br /&gt;if( value.equals("")  value.equals("\r") ){&lt;br /&gt;continue;&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return value;&lt;br /&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-3456863626053832243?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/3456863626053832243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=3456863626053832243' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/3456863626053832243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/3456863626053832243'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/11/human-workflow-java-api-part-2.html' title='Human Workflow Java API Part 2'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gWwhpxFZjGs/TO-xU304gLI/AAAAAAAABs4/Tfri-2oxKLw/s72-c/1.GIF' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-1555645142932282254</id><published>2010-11-25T06:08:00.000-08:00</published><updated>2010-11-25T06:18:30.863-08:00</updated><title type='text'>Oracle Human Workflow Service Java API</title><content type='html'>Simple scenario - &lt;br /&gt;&lt;br /&gt;I want to query the open tasks for demo user jcooper -&lt;br /&gt;&lt;br /&gt;The core of the code below is taken from the SOA Developers Guide available at &lt;br /&gt;http://download.oracle.com/docs/cd/E14571_01/integration.1111/e10224.pdf&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've just added in the jndi stuff and the libraries required.&lt;br /&gt; &lt;br /&gt;package com.niall.hwclient;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;import oracle.bpel.services.workflow.client.IWorkflowServiceClient;&lt;br /&gt;import oracle.bpel.services.workflow.client.IWorkflowServiceClientConstants;&lt;br /&gt;import oracle.bpel.services.workflow.client.WorkflowServiceClientFactory;&lt;br /&gt;import oracle.bpel.services.workflow.query.ITaskQueryService;&lt;br /&gt;import oracle.bpel.services.workflow.task.ITaskService;&lt;br /&gt;import oracle.bpel.services.workflow.task.model.Task;&lt;br /&gt;import oracle.bpel.services.workflow.verification.IWorkflowContext;&lt;br /&gt;&lt;br /&gt;public class HwTask {&lt;br /&gt;    public HwTask() {&lt;br /&gt;        super();&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public String getTaskdetails(String user){&lt;br /&gt;     &lt;br /&gt;      Map properties = new HashMap();&lt;br /&gt;      properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_PROVIDER_URL, "t3://localhost:8001");&lt;br /&gt;      properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_CREDENTIALS, "welcome1");&lt;br /&gt;      properties.put(IWorkflowServiceClientConstants.CONNECTION_PROPERTY.EJB_SECURITY_PRINCIPAL, "weblogic");&lt;br /&gt;&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;      //Create JAVA WorflowServiceClient&lt;br /&gt;      IWorkflowServiceClient wfSvcClient =&lt;br /&gt;      WorkflowServiceClientFactory.getWorkflowServiceClient(WorkflowServiceClientFactory.REMOTE_CLIENT, properties, null);&lt;br /&gt;&lt;br /&gt;      //Get the task query service&lt;br /&gt;      ITaskQueryService querySvc = wfSvcClient.getTaskQueryService();&lt;br /&gt;      //Login as jcooper&lt;br /&gt;      IWorkflowContext ctx = querySvc.authenticate("jcooper","welcome1".toCharArray(),null);&lt;br /&gt;      //Set up list of columns to query&lt;br /&gt;      List queryColumns = new ArrayList();&lt;br /&gt;      queryColumns.add("TASKID");&lt;br /&gt;      queryColumns.add("TASKNUMBER");&lt;br /&gt;      queryColumns.add("TITLE");&lt;br /&gt;      queryColumns.add("OUTCOME");&lt;br /&gt;      //Query a list of tasks assigned to jcooper&lt;br /&gt;      List tasks = querySvc.queryTasks(ctx,&lt;br /&gt;      queryColumns,&lt;br /&gt;      null, //Do not query additional info&lt;br /&gt;      ITaskQueryService.AssignmentFilter.MY,&lt;br /&gt;      null, //No keywords&lt;br /&gt;      null, //No custom predicate&lt;br /&gt;      null, //No special ordering&lt;br /&gt;      0, //Do not page the query result&lt;br /&gt;      0);&lt;br /&gt;      //Get the task service&lt;br /&gt;      ITaskService taskSvc = wfSvcClient.getTaskService();&lt;br /&gt;      //Loop over the tasks, outputting task information, and approving any&lt;br /&gt;      //tasks whose outcome has not been set...&lt;br /&gt; &lt;br /&gt;      for(int i = 0 ; i &lt; tasks.size() ; i ++)&lt;br /&gt;      {&lt;br /&gt;          System.out.println("In task loop...");&lt;br /&gt;      Task task = (Task)tasks.get(i);&lt;br /&gt;      int taskNumber = task.getSystemAttributes().getTaskNumber();&lt;br /&gt;      String title = task.getTitle();&lt;br /&gt;      String taskId = task.getSystemAttributes().getTaskId();&lt;br /&gt;      String outcome = task.getSystemAttributes().getOutcome();&lt;br /&gt;     /* if(outcome == null)&lt;br /&gt;      {&lt;br /&gt;      outcome = "APPROVED";&lt;br /&gt;      taskSvc.updateTaskOutcome(ctx,taskId,outcome);&lt;br /&gt;      }*/&lt;br /&gt;          &lt;br /&gt;      System.out.println("Task #"+taskNumber+" ("+title+") is "+outcome);&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    catch (Exception e)&lt;br /&gt;    {&lt;br /&gt;      //Handle any exceptions raised here...&lt;br /&gt;      System.out.println("Caught workflow exception: "+e.getMessage());&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    return "done";&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;JDev project library settings -&lt;br /&gt;&lt;br /&gt; &lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TO5vILtMWJI/AAAAAAAABsg/xxAlZ1xlDzM/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 288px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TO5vILtMWJI/AAAAAAAABsg/xxAlZ1xlDzM/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5543490377711638674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TO5vVtd_chI/AAAAAAAABso/QCuAj-U_Slk/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 272px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TO5vVtd_chI/AAAAAAAABso/QCuAj-U_Slk/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5543490610112983570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Test -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TO5wK79EVhI/AAAAAAAABsw/8Zy2zKMOhOc/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 241px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TO5wK79EVhI/AAAAAAAABsw/8Zy2zKMOhOc/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5543491524534490642" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-1555645142932282254?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/1555645142932282254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=1555645142932282254' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1555645142932282254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1555645142932282254'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/11/oracle-human-workflow-service-java-api.html' title='Oracle Human Workflow Service Java API'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gWwhpxFZjGs/TO5vILtMWJI/AAAAAAAABsg/xxAlZ1xlDzM/s72-c/3.GIF' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8514125983100763070</id><published>2010-11-22T10:08:00.000-08:00</published><updated>2010-11-23T00:13:07.912-08:00</updated><title type='text'>BPM Signal Events and EDN Part 2</title><content type='html'>Now we will create another Business Event at the composite level – OrderProcessedEvent&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq0X4gTHMI/AAAAAAAABq8/M_b3SofszRM/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542440613830663362" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 283px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq0X4gTHMI/AAAAAAAABq8/M_b3SofszRM/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq0XLMWPZI/AAAAAAAABq0/wM4ELJodpKc/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542440601667386770" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 334px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq0XLMWPZI/AAAAAAAABq0/wM4ELJodpKc/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq0WeiV_aI/AAAAAAAABqs/ZYD1CpR7BNE/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542440589680049570" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 263px; CURSOR: hand; HEIGHT: 351px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq0WeiV_aI/AAAAAAAABqs/ZYD1CpR7BNE/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The new event surfaces in the Business Catalogue.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOq06R7yorI/AAAAAAAABrE/fg_pMSCNQDE/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542441204772414130" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 238px; CURSOR: hand; HEIGHT: 337px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOq06R7yorI/AAAAAAAABrE/fg_pMSCNQDE/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Return to the BPM Design editor and set the implementation type of the End Event to Signal.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq32DOOQ4I/AAAAAAAABrU/-lXmYAnTTkk/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542444430638596994" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 262px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq32DOOQ4I/AAAAAAAABrU/-lXmYAnTTkk/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOq3yE7XvcI/AAAAAAAABrM/nHbnmHZMYjM/s1600/6.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542444362376920514" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 232px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOq3yE7XvcI/AAAAAAAABrM/nHbnmHZMYjM/s400/6.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we have no errors in our process.&lt;br /&gt;&lt;br /&gt;Create the required process variables so that it is runnable.&lt;br /&gt;&lt;br /&gt;Add a new Business Object of type Order.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TOq4ED_I6-I/AAAAAAAABrc/pfXGELeXaIQ/s1600/7.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542444671361936354" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 256px; CURSOR: hand; HEIGHT: 273px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TOq4ED_I6-I/AAAAAAAABrc/pfXGELeXaIQ/s400/7.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add a Process Data Object variable of this type&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOq4XaNUG6I/AAAAAAAABrw/uzT5ZIOf6Tc/s1600/8.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542445003744484258" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 252px; CURSOR: hand; HEIGHT: 188px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOq4XaNUG6I/AAAAAAAABrw/uzT5ZIOf6Tc/s400/8.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Set the Data Associations for Start and End&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOq4_GWRcnI/AAAAAAAABsA/OjjB4Py0wsY/s1600/10.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542445685608116850" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 199px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOq4_GWRcnI/AAAAAAAABsA/OjjB4Py0wsY/s400/10.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ok, so now as soon as the order has been processed, a Mediator component will pick this up and write the order to a file. Here we will leverage the File Adapter(Write) we created earlier.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq5gw2TQ1I/AAAAAAAABsI/5hAXWDXT9RE/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 296px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq5gw2TQ1I/AAAAAAAABsI/5hAXWDXT9RE/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5542446263952425810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We then wire this to the File Adapter(Write)&lt;br /&gt;Don't forget to create the required transformation in the Mediator.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOq4f-ns9OI/AAAAAAAABr4/SHPJ-5MtR5w/s1600/9.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542445150957794530" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 246px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOq4f-ns9OI/AAAAAAAABr4/SHPJ-5MtR5w/s400/9.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Deploy and Test&lt;br /&gt;&lt;br /&gt;Sample input file to be dropped into the /in directory&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOt3fVa5cbI/AAAAAAAABsQ/QzLWqmFaeb4/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 205px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOt3fVa5cbI/AAAAAAAABsQ/QzLWqmFaeb4/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5542655146619138482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Result&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOt3fWf4zSI/AAAAAAAABsY/s_tv3vWyBQM/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 90px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOt3fWf4zSI/AAAAAAAABsY/s_tv3vWyBQM/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5542655146908503330" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8514125983100763070?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8514125983100763070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8514125983100763070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8514125983100763070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8514125983100763070'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/11/bpm-signal-events-and-edn-part-2.html' title='BPM Signal Events and EDN Part 2'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gWwhpxFZjGs/TOq0X4gTHMI/AAAAAAAABq8/M_b3SofszRM/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8325475601526372760</id><published>2010-11-22T06:33:00.001-08:00</published><updated>2010-11-22T07:19:02.911-08:00</updated><title type='text'>BPM Signal Events and Oracle EDN</title><content type='html'>Simple scenario –&lt;br /&gt;&lt;br /&gt;A new order arrives via file and kicks off the BPM Order process.&lt;br /&gt;This can be easily modelled in Oracle SOA Suite 11g.&lt;br /&gt;Our order has the following xsd –&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOp_qBTZ06I/AAAAAAAABpU/66wVgWXCB8g/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542382651313869730" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 374px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOp_qBTZ06I/AAAAAAAABpU/66wVgWXCB8g/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Create a couple of directories on the file system&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOp_on7lICI/AAAAAAAABpM/KXTS4PRkYeg/s1600/1.5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542382627323191330" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 162px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOp_on7lICI/AAAAAAAABpM/KXTS4PRkYeg/s400/1.5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Create a BPM Application in JDeveloper&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOqIKNuKH6I/AAAAAAAABp8/1nLWXV0yYgM/s1600/2.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542392000496148386" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 187px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOqIKNuKH6I/AAAAAAAABp8/1nLWXV0yYgM/s400/2.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Go to the Composite view&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOqIGwIH9gI/AAAAAAAABp0/9NN0o48_pcY/s1600/3.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542391941012387330" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 320px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOqIGwIH9gI/AAAAAAAABp0/9NN0o48_pcY/s400/3.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create a file adapter – (Read) based on the XSD – pointing to /in directory&lt;br /&gt;Create a file adapter – (Write) based on the XSD – pointing to /out directory&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOqIGaaI6LI/AAAAAAAABps/XBwdZt4f1Nw/s1600/4.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542391935182366898" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 216px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOqIGaaI6LI/AAAAAAAABps/XBwdZt4f1Nw/s400/4.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add a Mediator to pick up the read order&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOqIF93n0SI/AAAAAAAABpk/5KMQFAgifX0/s1600/5.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542391927521399074" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 230px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOqIF93n0SI/AAAAAAAABpk/5KMQFAgifX0/s400/5.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add a routing rule to publish an event&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOqIDuGjcbI/AAAAAAAABpc/-VxsjJuQJmA/s1600/6.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542391888929321394" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 221px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOqIDuGjcbI/AAAAAAAABpc/-VxsjJuQJmA/s400/6.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create the event definition&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOqJFkYBB8I/AAAAAAAABqk/5Fcfi42gYSw/s1600/7.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542393020189575106" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 252px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TOqJFkYBB8I/AAAAAAAABqk/5Fcfi42gYSw/s400/7.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOqJE3o3MJI/AAAAAAAABqc/MP1p_7UI964/s1600/8.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542393008180637842" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 278px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOqJE3o3MJI/AAAAAAAABqc/MP1p_7UI964/s400/8.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Switch to the BPM Project view&lt;br /&gt;&lt;br /&gt;The event has been automatically added to the Business catalogue.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TOqJEyFt0UI/AAAAAAAABqU/CbXksz_Aj3w/s1600/9.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542393006691045698" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 247px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TOqJEyFt0UI/AAAAAAAABqU/CbXksz_Aj3w/s400/9.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Right-mouse click on the Start icon and change the type to Signal&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOqJETSFh2I/AAAAAAAABqM/wYWtk-nnRag/s1600/10.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542392998421432162" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 384px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TOqJETSFh2I/AAAAAAAABqM/wYWtk-nnRag/s400/10.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOqJD71-16I/AAAAAAAABqE/Pb3DGiaumyw/s1600/11.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5542392992129537954" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TOqJD71-16I/AAAAAAAABqE/Pb3DGiaumyw/s400/11.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No we have EDN kicking off the BPM process via a Signal event.&lt;br /&gt;I'll flesh this process out in the next post!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8325475601526372760?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8325475601526372760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8325475601526372760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8325475601526372760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8325475601526372760'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/11/bpm-signal-events-and-oracle-edn.html' title='BPM Signal Events and Oracle EDN'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gWwhpxFZjGs/TOp_qBTZ06I/AAAAAAAABpU/66wVgWXCB8g/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-1030200330928599689</id><published>2010-11-19T12:13:00.000-08:00</published><updated>2010-11-19T12:22:10.002-08:00</updated><title type='text'>JCAPS - SOA Suite 11g Interoperability/Migration</title><content type='html'>Greetings from South Africa!&lt;br /&gt;&lt;br /&gt;Just spent a couple of days around Capetown and am now up in Hermanus whale watching.&lt;br /&gt;Certainly beats the November cold of southern Germany!&lt;br /&gt;&lt;br /&gt;Regarding the above, apart from standard integration via web services and JMS, tighter integration can be achieved using the SOA Suite 11g Spring component described in the last post. Essentially we can wrap the JCAPS JCD as a Spring component and leverage it's functionality directly in our composite. Please ping me if you're interested in more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-1030200330928599689?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/1030200330928599689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=1030200330928599689' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1030200330928599689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/1030200330928599689'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/11/jcaps-soa-suite-11g-interoperability.html' title='JCAPS - SOA Suite 11g Interoperability/Migration'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-2077180679116749267</id><published>2010-10-25T02:16:00.001-07:00</published><updated>2010-10-25T08:50:22.572-07:00</updated><title type='text'>Spring &amp; BPEL extension functions in SOA Suite 11g PS2</title><content type='html'>Last December I uploaded a doc detailing a simple Spring lab - here now is an example based on Patchset 2.&lt;br /&gt;&lt;br /&gt;To begin with you may need to download the JDev Spring extension (Menu --&gt; Help --&gt; Check for Updates).&lt;br /&gt;&lt;br /&gt;An excellent intro to Spring is the official doc at http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/pdf/spring-framework-reference.pdf&lt;br /&gt;&lt;br /&gt;Ok, so now back to our simple example - &lt;br /&gt;&lt;br /&gt;In this example we will have a Java class that does some simple SOA Composite logging for us. We will leverage the BPEL XPath extension functions as detailed in Appendix B of the SOA Suite Developers Guide - available at http://download.oracle.com/docs/cd/E14571_01/integration.1111/e10224/bp_appx_functs.htm#CHDECDHG&lt;br /&gt;&lt;br /&gt;This is based on an excellent example from Clemens Utschig - so vielen Dank!&lt;br /&gt;  &lt;br /&gt;I'm going to use the following -&lt;br /&gt;&lt;br /&gt;ora:getDomainId()&lt;br /&gt;ora:getECID()&lt;br /&gt;&lt;br /&gt;ora:getCompositeName()&lt;br /&gt;ora:getCompositeInstanceId()&lt;br /&gt;&lt;br /&gt;ora:getComponentName()&lt;br /&gt;ora:getComponentInstanceId()&lt;br /&gt;&lt;br /&gt;ora:getElement()&lt;br /&gt;&lt;br /&gt;Steps -&lt;br /&gt;&lt;br /&gt;1. Create the Java Interface for the logger&lt;br /&gt;2. Create the Java class that implements the interface&lt;br /&gt;3. Spring-enable &lt;br /&gt;4. Expose the Spring component as an SCA Service&lt;br /&gt;5. Create a SOA Composite with a BPEL process&lt;br /&gt;6. Invoke the Spring component from BPEL&lt;br /&gt;7. Deploy and Test&lt;br /&gt;&lt;strong&gt;1. Create the Java Interface for the logger&lt;/strong&gt;&lt;br /&gt;1.1. Create a new generic application in JDev - LoggingWithSpringApp&lt;br /&gt;1.2. Name the project - LoggingWithSpring&lt;br /&gt;1.3. Create the Java interface - ILogger - package name my.company.com&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TMWdfJL9M1I/AAAAAAAABnE/qEd4rTr4p00/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 378px; height: 244px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TMWdfJL9M1I/AAAAAAAABnE/qEd4rTr4p00/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532000875662095186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1.4. Add a log() method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public void log(String domainID, String ecid, String compositeName,&lt;br /&gt;                    String compositeInstanceID,String componentName,&lt;br /&gt;                    String componentInstanceID, String elem );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Create the Java class that implements the interface&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWde_XEu3I/AAAAAAAABm8/A9PeabW6Kac/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 399px; height: 392px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWde_XEu3I/AAAAAAAABm8/A9PeabW6Kac/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532000873024371570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2.1. Implement the log() method.&lt;br /&gt;&lt;br /&gt;    public void log(String domainID, String ecid, String compositeName,&lt;br /&gt;                    String compositeInstanceID, String componentName,&lt;br /&gt;                    String componentInstanceID, String elem) {&lt;br /&gt;        &lt;br /&gt;        StringBuffer msg = new StringBuffer();&lt;br /&gt;        msg.append("[Domain ID] ").append(domainID).append("[ECID]").append(ecid).&lt;br /&gt;            append("[Composite Name]").append(compositeName).append("[Composite Instance ID]").&lt;br /&gt;            append(componentInstanceID).append("[Component Name]").append(componentName).&lt;br /&gt;            append("[Component Instance ID]").append(componentInstanceID).append("[Input Element]").&lt;br /&gt;            append(elem);&lt;br /&gt;        System.out.println(msg.toString());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Spring-enable &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;3.1. Create a new Spring Bean configuration in the project&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWdehH1x5I/AAAAAAAABm0/WLKHCxQgtgI/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 189px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWdehH1x5I/AAAAAAAABm0/WLKHCxQgtgI/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532000864907413394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3.2. call it logger-context.xml&lt;br /&gt;&lt;br /&gt;3.3. Select Spring 2.5 Core in the component palette&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWdeo-BTxI/AAAAAAAABms/JM2fD7OLuWk/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 179px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWdeo-BTxI/AAAAAAAABms/JM2fD7OLuWk/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532000867013709586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.4. Drag a bean from the Spring 2.5 Core component palette&lt;br /&gt;&lt;br /&gt;3.5. set name and class as below&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWdeU5OtHI/AAAAAAAABmk/e4rbaplvOmE/s&lt;br /&gt;1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 275px; height: 400px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWdeU5OtHI/AAAAAAAABmk/e4rbaplvOmE/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532000861624906866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Expose the Spring component as an SCA Service&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;4.1. Change the palette to Weblogic SCA and drag &amp; drop  a Service&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TMWf5UWbKEI/AAAAAAAABns/9WY_WlIy_7M/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 308px; height: 172px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TMWf5UWbKEI/AAAAAAAABns/9WY_WlIy_7M/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532003524358645826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4.2. Set as follows -&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TMWf44cXSXI/AAAAAAAABnk/Qs2GZd41jD8/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 393px; height: 173px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TMWf44cXSXI/AAAAAAAABnk/Qs2GZd41jD8/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532003516867365234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. Create a SOA Composite with a BPEL process&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;5.1. File --&gt; New --&gt; SOA Composite --&gt; Composite with BPEL process&lt;br /&gt;5.2. call the composite - LoggingWithSpringComposite&lt;br /&gt;5.3. Create the BPEL process&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TMWf4GdmHfI/AAAAAAAABnc/OjHw71zn8X4/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 273px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TMWf4GdmHfI/AAAAAAAABnc/OjHw71zn8X4/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532003503450758642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5.4. Go to the Composite Editor view and drop a Spring Context component.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TMWf33H7o2I/AAAAAAAABnU/FBK2YkOGbBM/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 211px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TMWf33H7o2I/AAAAAAAABnU/FBK2YkOGbBM/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532003499333362530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5.5. Make the Java class and interface.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TMWf3WHVF3I/AAAAAAAABnM/Kbf45perat8/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 320px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TMWf3WHVF3I/AAAAAAAABnM/Kbf45perat8/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532003490472466290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5.6. Wire together.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWj5FrX5II/AAAAAAAABoU/NFwoFP3Of7A/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 257px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWj5FrX5II/AAAAAAAABoU/NFwoFP3Of7A/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532007918466491522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. Invoke the Spring component from BPEL&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;6.1. add an Invoke activity to the BPEL process to call the logger&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TMWkI6Ftq1I/AAAAAAAABo0/e779NgiPKF4/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 395px; height: 400px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TMWkI6Ftq1I/AAAAAAAABo0/e779NgiPKF4/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532008190233652050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.2. Add an Assign activity to set the call arguments&lt;br /&gt;6.3. See below for the 7 assigns&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TMWkIik2dHI/AAAAAAAABos/t5nF_kGy2N4/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 374px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TMWkIik2dHI/AAAAAAAABos/t5nF_kGy2N4/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532008183921800306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWkIdLylUI/AAAAAAAABok/Q2EmA2UlQDY/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 370px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TMWkIdLylUI/AAAAAAAABok/Q2EmA2UlQDY/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532008182474511682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6.4. add an Assign after the Invoke to set input to output&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TMWkHijMevI/AAAAAAAABoc/5TZNCbsYRhc/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 364px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TMWkHijMevI/AAAAAAAABoc/5TZNCbsYRhc/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532008166734985970" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7. Deploy and Test&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;7.1. Deploy ot SOA Suite and test via EM.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TMWnIWS0QfI/AAAAAAAABpE/8OqLNUMrdf0/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 278px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TMWnIWS0QfI/AAAAAAAABpE/8OqLNUMrdf0/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532011479159816690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;View results in server log&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TMWnIOHwiWI/AAAAAAAABo8/AriVq_uPJAc/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 33px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TMWnIOHwiWI/AAAAAAAABo8/AriVq_uPJAc/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5532011476965951842" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-2077180679116749267?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/2077180679116749267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=2077180679116749267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2077180679116749267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/2077180679116749267'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/10/leveraging-spring-in-soa-suite-11g-ps2.html' title='Spring &amp; BPEL extension functions in SOA Suite 11g PS2'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_gWwhpxFZjGs/TMWdfJL9M1I/AAAAAAAABnE/qEd4rTr4p00/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-5670444408742644456</id><published>2010-10-12T12:39:00.000-07:00</published><updated>2010-10-12T12:41:18.953-07:00</updated><title type='text'>Bruce Silver on Oracle BPM 11g</title><content type='html'>Makes for very interesting reading -&lt;br /&gt;&lt;br /&gt;http://www.oracle.com/us/corporate/analystreports/infrastructure/bruce-silver-bpm-suite-11g-083869.pdf&lt;br /&gt;&lt;br /&gt;To quote from the report -&lt;br /&gt;"Oracle not only is first out of the gate with BPMN 2.0 support, but sets the competitive bar extremely high for a long time to come."&lt;br /&gt;&lt;br /&gt;Cheers Bruce!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-5670444408742644456?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/5670444408742644456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=5670444408742644456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/5670444408742644456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/5670444408742644456'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/10/bruce-silver-on-oracle-bpm-11g.html' title='Bruce Silver on Oracle BPM 11g'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-8337293348461857196</id><published>2010-10-12T10:36:00.000-07:00</published><updated>2010-10-14T04:34:55.637-07:00</updated><title type='text'>Leveraging BPM Project templates</title><content type='html'>BPM project templates are stored in MDS. You already have a database based MDS&lt;br /&gt;installed with SOA Suite (DEV_MDS).&lt;br /&gt;&lt;br /&gt;In the following simple scenario we will leverage this to work with project templates. We will create a template in JDev and consume it in Process Composer.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1. - Create a Project template in JDev&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;One thing all BPM projects need are Services.&lt;br /&gt;So this is what our template could contain. So lets begin by creating a new project in JDeveloper of type BPM Template.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TLSerwW2g6I/AAAAAAAABmU/cIUUVZnnMhM/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TLSerwW2g6I/AAAAAAAABmU/cIUUVZnnMhM/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5527217117242753954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TLServEyBaI/AAAAAAAABmM/kFf9uK2akjc/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 303px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TLServEyBaI/AAAAAAAABmM/kFf9uK2akjc/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5527217116898526626" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Add content to the Business Catalog - currently Business Objects, Human Tasks, Services and Rules etc. are visible in the context of Process Composer.&lt;br /&gt;&lt;br /&gt;Create a DB based MDS connection (DEV_MDS schema)&lt;br /&gt;&lt;br /&gt;Right click on the project and select --&gt; Publish to BPM MDS&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TLSerPmv5vI/AAAAAAAABl8/snwDmAZBwmo/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 212px; height: 400px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TLSerPmv5vI/AAAAAAAABl8/snwDmAZBwmo/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5527217108451059442" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;View the MDS repository after publishing.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TLSerGhAZmI/AAAAAAAABl0/Vz3AbjkdnbI/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 335px; height: 400px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TLSerGhAZmI/AAAAAAAABl0/Vz3AbjkdnbI/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5527217106011055714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now open the web-based Process composer e.g. http://localhost:8001/bpm/composer&lt;br /&gt;and create a new project based on a template.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TLSfUGr81SI/AAAAAAAABmc/Vz5Prx2KHH0/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 331px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TLSfUGr81SI/AAAAAAAABmc/Vz5Prx2KHH0/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5527217810431595810" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-8337293348461857196?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/8337293348461857196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=8337293348461857196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8337293348461857196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/8337293348461857196'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/10/leveraging-bpm-project-templates.html' title='Leveraging BPM Project templates'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_gWwhpxFZjGs/TLSerwW2g6I/AAAAAAAABmU/cIUUVZnnMhM/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-628477615313391580</id><published>2010-10-06T22:58:00.000-07:00</published><updated>2010-10-12T10:22:59.362-07:00</updated><title type='text'>SF at the weekend &amp; Development Frameworks - your thoughts on them...</title><content type='html'>I've just returned from a pleasant sojourn in SF. I'm there quite often and this time I decided to make proper use of my weekend. So for those of you looking for some suggestions above and beyond the usually tourist stuff here's my 2 cents -&lt;br /&gt;&lt;br /&gt;1. Farmers Market - Saturday morning: Embarcadero (Ferry Building) - great organic fruit and veg from the California valley. Also plenty of food and drink stalls - great place for healthy indulgence.&lt;br /&gt;&lt;br /&gt;2. Botanic Gardens - just off Martin Luther King drive - well worth the visit even in Autumn.&lt;br /&gt;&lt;br /&gt;3. Commonwealth restaurant Mission St:  http://commonwealthsf.com/&lt;br /&gt;If crispy pig ears, carrot, radish, chili are your thing then this is the place to be. If not, it's still the place to be with plenty of alternatives.&lt;br /&gt;&lt;br /&gt;4. Sunday Morning: Flea markets. I always like to visit the one in Bernal Heights - Alemany Flea Market - 100 Alemany (at Putnam) San Francisco, CA 94110. Also there is a monthly one at Candlestick Park (Candlestick Park Antiques &amp; Collectibles Faire.) Check the web for dates.&lt;br /&gt;&lt;br /&gt;5. Later: Drive up to Bolinas - pass Stinson beach and a few kms later you're there. &lt;br /&gt;Stop by my friend David who sells his art there - http://davidjaap.com/about.html&lt;br /&gt;&lt;br /&gt;Now back to work...&lt;br /&gt;&lt;br /&gt;Thinking about developmment tools &amp; frameworks - which to use and when.&lt;br /&gt;I'm getting some ideas together comparing some offerings. Currently I'm looking at &lt;br /&gt;&lt;br /&gt;- ADF&lt;br /&gt;- Java FX&lt;br /&gt;- Ruby on Rails&lt;br /&gt;&lt;br /&gt;and would greatly appreciate your input - any heuristics you may have on these or others that you currently use.&lt;br /&gt;&lt;br /&gt;for example -&lt;br /&gt;&lt;br /&gt;ADF: &lt;br /&gt;- MVC / JSF&lt;br /&gt;- supports 4GL style development (ADF BC)&lt;br /&gt;- etc.&lt;br /&gt;&lt;br /&gt;Looking fwd to your input!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-628477615313391580?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/628477615313391580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=628477615313391580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/628477615313391580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/628477615313391580'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/10/development-frameworks-your-thoughts-on.html' title='SF at the weekend &amp; Development Frameworks - your thoughts on them...'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-7833327485538431516</id><published>2010-09-22T02:14:00.000-07:00</published><updated>2010-09-22T02:24:52.062-07:00</updated><title type='text'>Oracle Service Registry and OSB 11g Part 2</title><content type='html'>So now we have OSR and OSB installed. It is now time to get them talking to each other!&lt;br /&gt;&lt;br /&gt;Startup OSB/OSR&lt;br /&gt;Login to the OSB console, click on System Administration to create a new UDDI&lt;br /&gt;registry entry.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TJnKEim0-YI/AAAAAAAABlE/ovOBwfdolNo/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 328px; height: 400px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TJnKEim0-YI/AAAAAAAABlE/ovOBwfdolNo/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5519664997677201794" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJnKEX1jYeI/AAAAAAAABk8/JO-i8quyO3g/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 385px; height: 400px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJnKEX1jYeI/AAAAAAAABk8/JO-i8quyO3g/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5519664994786173410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Create a simple OSB service&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Create a simple web service using JDeveloper&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJnKEKDzliI/AAAAAAAABk0/usyGBBJV-Rg/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 351px; height: 400px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJnKEKDzliI/AAAAAAAABk0/usyGBBJV-Rg/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5519664991087859234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJnKD3l1SwI/AAAAAAAABks/_iwh04r4ieY/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 306px; height: 400px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJnKD3l1SwI/AAAAAAAABks/_iwh04r4ieY/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5519664986130303746" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJnKDYIiLWI/AAAAAAAABkk/Vx1e3ziqdDc/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 231px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJnKDYIiLWI/AAAAAAAABkk/Vx1e3ziqdDc/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5519664977685917026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Test the Proxy Service&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJnK796wOgI/AAAAAAAABls/02TszpkjInE/s1600/1.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 355px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJnK796wOgI/AAAAAAAABls/02TszpkjInE/s400/1.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5519665949901339138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Publish to OSR &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJnK7n1pshI/AAAAAAAABlk/J68IFUuDA8M/s1600/2.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 388px; height: 400px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJnK7n1pshI/AAAAAAAABlk/J68IFUuDA8M/s400/2.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5519665943974359570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJnK7KQDTnI/AAAAAAAABlc/plNsqUssTKc/s1600/3.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 301px; height: 400px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJnK7KQDTnI/AAAAAAAABlc/plNsqUssTKc/s400/3.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5519665936032026226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Re-publish&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJnK63oNchI/AAAAAAAABlU/aWMP5pnrtHs/s1600/4.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 184px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJnK63oNchI/AAAAAAAABlU/aWMP5pnrtHs/s400/4.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5519665931033080338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Login to OSR –&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TJnK6aTlvtI/AAAAAAAABlM/J_LsJOwpSlQ/s1600/5.GIF"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 193px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TJnK6aTlvtI/AAAAAAAABlM/J_LsJOwpSlQ/s400/5.GIF" border="0" alt=""id="BLOGGER_PHOTO_ID_5519665923161964242" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-7833327485538431516?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/7833327485538431516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=7833327485538431516' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7833327485538431516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7833327485538431516'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/09/oracle-service-registry-and-osb-part-2.html' title='Oracle Service Registry and OSB 11g Part 2'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gWwhpxFZjGs/TJnKEim0-YI/AAAAAAAABlE/ovOBwfdolNo/s72-c/1.GIF' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-7189668252956237295</id><published>2010-09-22T00:45:00.000-07:00</published><updated>2010-09-22T00:48:13.445-07:00</updated><title type='text'>Pre-built Virtual Machine for SOA Suite and BPM Suite 11g</title><content type='html'>If you don't want to go thru the whole install routine, but would like to get up and running immediately with Oracle SOA Suite 11g PS2 incl. BAM, B2B and BPM. then I suggest you try out the following -&lt;br /&gt; &lt;br /&gt;http://www.oracle.com/technetwork/middleware/soasuite/learnmore/vmsoa-172279.html&lt;br /&gt;&lt;br /&gt;The feedback I've had so far is excellent!&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-7189668252956237295?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/7189668252956237295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=7189668252956237295' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7189668252956237295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/7189668252956237295'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/09/pre-built-virtual-machine-for-soa-suite.html' title='Pre-built Virtual Machine for SOA Suite and BPM Suite 11g'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-40801242859953600</id><published>2010-09-20T23:28:00.000-07:00</published><updated>2010-09-20T23:34:09.709-07:00</updated><title type='text'>Getting Started With Oracle BPM Suite 11g</title><content type='html'>Excellent title from Heidi Buelow et al. now available from Packt Press&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TJhRxJJDi_I/AAAAAAAABkc/HMEVEeebTD0/s1600/1.GIF"&gt;&lt;img id="BLOGGER_PHOTO_ID_5519251248051882994" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 303px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TJhRxJJDi_I/AAAAAAAABkc/HMEVEeebTD0/s400/1.GIF" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;https://www.packtpub.com/getting-started-with-oracle-bpm-suite-11gr1-hands-on-tutorial/book&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2931801055574939054-40801242859953600?l=niallcblogs.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://niallcblogs.blogspot.com/feeds/40801242859953600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2931801055574939054&amp;postID=40801242859953600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/40801242859953600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2931801055574939054/posts/default/40801242859953600'/><link rel='alternate' type='text/html' href='http://niallcblogs.blogspot.com/2010/09/getting-started-with-oracle-bpm-suite.html' title='Getting Started With Oracle BPM Suite 11g'/><author><name>Niall Commiskey</name><uri>http://www.blogger.com/profile/18194777332788452768</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_gWwhpxFZjGs/R6CTCVPlOxI/AAAAAAAAADc/QiAgAyzQ5GI/S220/Newgrange.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_gWwhpxFZjGs/TJhRxJJDi_I/AAAAAAAABkc/HMEVEeebTD0/s72-c/1.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2931801055574939054.post-7579199908757285482</id><published>2010-09-16T22:52:00.000-07:00</published><updated>2010-09-18T05:40:16.410-07:00</updated><title type='text'>Oracle Service Registry and OSB11g</title><content type='html'>Simple scenario - customer has installed OSB 11g and now wants to leverage OSR.&lt;br /&gt;&lt;br /&gt;So the pre-requisites are fulfilled -&lt;br /&gt;&lt;br /&gt;Oracle DB e.g. XE already installed&lt;br /&gt;OSB 11g already installed&lt;br /&gt;-- WLS - oepe111150_wls1033_win32.exe&lt;br /&gt;-- OSB - ofm_osb_generic_11.1.1.3.0_disk1_1of1.zip&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TJSvdGfr6SI/AAAAAAAABhU/oUcblSax44E/s1600/1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 276px; height: 240px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TJSvdGfr6SI/AAAAAAAABhU/oUcblSax44E/s400/1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518228357930281250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;OSR will be installed in a separate WLS domain.&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;If you need to install in the same domain then please refer to -&lt;br /&gt;http://blogs.oracle.com/governance/2010/05/oracle_service_registry_11gr1.html&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Install OSR&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJSvc3DpU0I/AAAAAAAABhM/HctT_cPvo1s/s1600/2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 201px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJSvc3DpU0I/AAAAAAAABhM/HctT_cPvo1s/s400/2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518228353786139458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_gWwhpxFZjGs/TJSvcm99z_I/AAAAAAAABhE/kj3O-FwuKs4/s1600/3.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 376px;" src="http://2.bp.blogspot.com/_gWwhpxFZjGs/TJSvcm99z_I/AAAAAAAABhE/kj3O-FwuKs4/s400/3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518228349467348978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSvckrX21I/AAAAAAAABg8/ouUEZ_awbP8/s1600/4.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 240px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSvckrX21I/AAAAAAAABg8/ouUEZ_awbP8/s400/4.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518228348852493138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSvcSbIWII/AAAAAAAABg0/P8mcks7OFws/s1600/5.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 324px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSvcSbIWII/AAAAAAAABg0/P8mcks7OFws/s400/5.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518228343952529538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJSwKRLnN-I/AAAAAAAABh8/B8y_1IZoXjU/s1600/1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 310px;" src="http://3.bp.blogspot.com/_gWwhpxFZjGs/TJSwKRLnN-I/AAAAAAAABh8/B8y_1IZoXjU/s400/1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518229133892990946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSwKH0xATI/AAAAAAAABh0/y8gjC-6fjh4/s1600/2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 311px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSwKH0xATI/AAAAAAAABh0/y8gjC-6fjh4/s400/2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518229131381244210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TJSwJyFrjqI/AAAAAAAABhs/QDNATz2SnUk/s1600/3.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 310px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TJSwJyFrjqI/AAAAAAAABhs/QDNATz2SnUk/s400/3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518229125546610338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_gWwhpxFZjGs/TJSwJh1ARMI/AAAAAAAABhk/Op5swRWiJUI/s1600/4.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 314px;" src="http://1.bp.blogspot.com/_gWwhpxFZjGs/TJSwJh1ARMI/AAAAAAAABhk/Op5swRWiJUI/s400/4.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518229121181697218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Point to XE JDBC driver&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSwJeAQ9VI/AAAAAAAABhc/7Z6iyBdfU4Q/s1600/5.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 235px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSwJeAQ9VI/AAAAAAAABhc/7Z6iyBdfU4Q/s400/5.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518229120155186514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSwx1t-o2I/AAAAAAAABik/OFhpaflpvrA/s1600/1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 326px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSwx1t-o2I/AAAAAAAABik/OFhpaflpvrA/s400/1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518229813715706722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSwxl5DkJI/AAAAAAAABic/c3M9R3hClOw/s1600/2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 351px;" src="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSwxl5DkJI/AAAAAAAABic/c3M9R3hClOw/s400/2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5518229809467199634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_gWwhpxFZjGs/TJSwxZXYV
