<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Upthrust &#187; BPEL</title>
	<atom:link href="http://blog.mpathirage.com/tag/bpel/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mpathirage.com</link>
	<description>This is the weblog of Milinda Pathirage</description>
	<lastBuildDate>Mon, 29 Aug 2011 02:00:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>WSO2 BPS Dynamic SOAP Header Handling</title>
		<link>http://blog.mpathirage.com/2010/12/14/wso2-bps-dynamic-soap-header-handling/</link>
		<comments>http://blog.mpathirage.com/2010/12/14/wso2-bps-dynamic-soap-header-handling/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 17:18:09 +0000</pubDate>
		<dc:creator>Milinda Lakmal</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[wso2 bps]]></category>

		<guid isPermaLink="false">http://blog.mpathirage.com/?p=706</guid>
		<description><![CDATA[When dealing with &#8220;Activity based Correlation&#8221; for WSO2 BAM, we had to send &#8220;Activity ID&#8221; header coming to the WSO2 BPS to other consecutive external service invocation in same process. Dynamic SOAP header handling feature in Apache ODE was very useful in this scenario. You can use this feature to situation like this where your [...]]]></description>
			<content:encoded><![CDATA[<p>When dealing with &#8220;<strong>A<em>ctivity based Correlation</em></strong>&#8221; for WSO2 BAM, we had to send &#8220;<strong><em>Activity ID</em></strong>&#8221; header coming to the <a href="http://wso2.com/products/business-process-server/">WSO2 BPS</a> to other consecutive external service invocation in same process. <a href="http://ode.apache.org/headers-handling.html" target="_blank"><strong><em>Dynamic SOAP header handling</em></strong></a> feature in <a href="http://ode.apache.org" target="_blank">Apache ODE</a> was very useful in this scenario. You can use this feature to situation like this where your process WSDL and external service WSDL doesn&#8217;t define any SOAP headers and but you need to send incoming SOAP headers across partners in a process.</p>
<p>Current implementation of dynamic SOAP header handling is not that much perfect in WSO2 BPS&#8217; ODE integration layer. There is a bug when you don&#8217;t have a SOAP header element specified in source message(Message we extract the SOAP header element to copy in to other message), so you must be careful when using this feature. But there will be more fixes to this in the future and this feature is available on <a href="http://dist.wso2.org/products/bps/2.0.2/wso2bps-2.0.2.zip" target="_blank">WSO2 BPS 2.0.2</a>. Please feel free to report any issues you found in this feature.</p>
<p>You can download a sample from <a href="http://blog.mpathirage.com/wp-content/uploads/2010/12/DynamicHeaderHandling.zip" target="_blank">here</a>. This sample shows how you can copy incoming SOAP Header in request message to the response message. But you can use this same mechanism to copy SOAP Header elements from request message to external service invokes and also to copy SOAP Header elements in the responses from external services to other out going messages from the BPEL process. The above sample expect you to send a SOAP header element with the local name &#8220;ActivityId&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mpathirage.com/2010/12/14/wso2-bps-dynamic-soap-header-handling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WSO2 Carbon Studio</title>
		<link>http://blog.mpathirage.com/2010/07/30/wso2-carbon-studio/</link>
		<comments>http://blog.mpathirage.com/2010/07/30/wso2-carbon-studio/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 17:05:36 +0000</pubDate>
		<dc:creator>Milinda Lakmal</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[carbon studio]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[wso2 carbon]]></category>

		<guid isPermaLink="false">http://blog.mpathirage.com/?p=528</guid>
		<description><![CDATA[WSO2 Carbon Studio is a fully tooling environment which facilitate you to develop, test, deploy and test WSO2 Carbon Artifacts. WSO2 tooling team recently released the 14th milestone of Carbon Studio with numerous features like; Support for creating Carbon Application(cApp) projects which includes Axis2 services, BPEL processes, ESB proxy services, Gadgets, Data Services and etc.. [...]]]></description>
			<content:encoded><![CDATA[<p><strong><em><a href="http://builder.wso2.org/~carbon/carbon_studio-1.0.0/M14/documentation/" target="_blank">WSO2 Carbon Studio</a></em></strong> is a fully tooling environment which facilitate you to develop, test, deploy and test WSO2 Carbon Artifacts.</p>
<div id="attachment_539" class="wp-caption alignnone" style="width: 510px"><a href="http://blog.mpathirage.com/wp-content/uploads/2010/07/global_partnerlink.png"><img class="size-full wp-image-539           " title="global_partnerlink" src="http://blog.mpathirage.com/wp-content/uploads/2010/07/global_partnerlink.png" alt="WSO2 Carbon Studio - BPEL Editor" width="500" height="313" /></a><p class="wp-caption-text">WSO2 Carbon Studio - BPEL Editor</p></div>
<p>WSO2 tooling team recently released the 14th milestone of Carbon Studio with numerous features like;</p>
<ul>
<li>Support for creating Carbon Application(cApp) projects which includes Axis2 services, BPEL processes, ESB proxy services, Gadgets, Data Services and etc..</li>
<li>Also it includes Governance Registry plugin which will helpful when working with WSO2 Governance Registry</li>
</ul>
<p>Please refer <a href="http://builder.wso2.org/~carbon/carbon_studio-1.0.0/M14/documentation/" target="_blank">documentation</a> for installation guide and guides on various tools integrated in to Carbon Studio.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mpathirage.com/2010/07/30/wso2-carbon-studio/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Invoking Secured(WS-Security) Partner Services in WSO2 BPS</title>
		<link>http://blog.mpathirage.com/2010/07/29/invoking-securedws-security-partner-services-in-wso2-bps/</link>
		<comments>http://blog.mpathirage.com/2010/07/29/invoking-securedws-security-partner-services-in-wso2-bps/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 03:11:24 +0000</pubDate>
		<dc:creator>Milinda Lakmal</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[WS-Security]]></category>

		<guid isPermaLink="false">http://blog.mpathirage.com/?p=521</guid>
		<description><![CDATA[WS-BPEL is used in Web Services based Service Oriented Architectures to Create business processes from Web Services and Human Activities which span across organizations Create complex services from other less complex services from heterogeneous environments Create application integration flows from various existing and new applications based Web Services In most cases we utilize the existing [...]]]></description>
			<content:encoded><![CDATA[<p>WS-BPEL is used in Web Services based Service Oriented Architectures to</p>
<ul>
<li>Create business processes from Web Services and Human Activities which span across organizations</li>
<li>Create complex services from other less complex services from heterogeneous environments</li>
<li>Create application integration flows from various existing and new applications based Web Services</li>
</ul>
<p>In most cases we utilize the existing services available, to implement business processes. And there can be situations that those available services are secured using WS-Security.</p>
<p>WS-BPEL 2.0 specification doesn&#8217;t define a standard way of handling this type scenarios. And WS-BPEL handles the Web Services at the port-type level. So BPEL engine implementations has there own ways to handle this kind of situation.</p>
<p>We use Apache ODE in WSO2 BPS and we have separate integration layer written based on ODE-Axis2 integration layer. There is a slight difference between WSO2 BPS 1.1.1 and WSO2 BPS 2.0.0 when it comes to configuring WS-Security for partner services. In WSO2 BPS 1.1.1, user needs to create a separate file called package-config.xml which contains endpoint configuration information while in 2.0.0 we have extended deploy.xml to support these configuration. But both these mechanisms share same configuration elements and only difference is the place we keep them.</p>
<p>Users can use Policy XML compatible with Apache Rampart or services.xml file which compatible with Axis2 and contains security policies compatible with Rampart to configure WS-Security for partner services.</p>
<h3>How to configure security for partner endpoints?</h3>
<h4><span style="text-decoration: underline;">WSO2 BPS 1.1.1</span></h4>
<p>You need to create a separate file called package-config.xml which looks like following, and put it in the root of your BPEL package.</p>
<p><script src="http://gist.github.com/497087.js?file=gistfile1.xml"></script> </p>
<p>In this package configuration file we have &#8216;endpoints&#8217; element which contains configurations of all the endpoints exposed by BPEL process and invoke by BPEL process. When configuring endpoints you need to specify <strong>serviceName</strong>, <strong>servicePort</strong> and <strong>serviceNS</strong> attributes according to the configurations in deploy.xml. For example if you want to call secured CreditRatingPL partner link(CreditRating service partner service) in following deploy.xml file, endpoint configuration will look like above example.  <script src="http://gist.github.com/497095.js?file=gistfile1.xml"></script></p>
<p>To configure security you can use either a policy XML or services.xml file. And policy configurations are same as configuring security for normal Axis2 based service clients using Rampart. There are Rampart specific policy extension elements which let you configure key stores, user name &#8211; password pairs and password callback classes.</p>
<p>You can put the policy XML files and services.xml files in BPEL package or in anywhere in the file system and put the correct location in <strong>location</strong> attribute. If your password callback classes are in a separate JAR, you can put them on the BPS_HOME/repository/components/lib directory.</p>
<p>You can download sample BPEL package for WSO2 BPS 1.1.1 which shows you how to configure security from <a href="http://blog.mpathirage.com/wp-content/uploads/2010/07/LoanProcess.zip" target="_blank">here</a>.</p>
<h4><span style="text-decoration: underline;">WSO2 BPS 2.0.0</span></h4>
<p>The main difference in version 2.0.0 is you can specify security and other endpoint configuration parameters directly in deploy.xml file. For example to configure security for CreditRatingPL partner link, you can directly specify endpoint configuration inside &#8216;service&#8217; element as follows. In this case you don&#8217;t need to specify service name or port name, because they are already available in the parent element(&#8216;service&#8217;).<br />
<script src="http://gist.github.com/497106.js?file=gistfile1.xml"></script></p>
<p>You can download sample BPEL package from <a href="http://blog.mpathirage.com/wp-content/uploads/2010/07/LoanProcess_Version2.zip" target="_blank">here</a>.</p>
<p><strong>Resources</strong></p>
<ul>
<li><a href="http://wso2.org/library/234" target="_blank">Secure Web Services with Apache Rampart</a></li>
<li><a href="http://blog.rampartfaq.com/" target="_blank">Rampart FAQ blog</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.mpathirage.com/2010/07/29/invoking-securedws-security-partner-services-in-wso2-bps/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Extending WSO2 BPS 2.0.0 With Custom XPath Functions</title>
		<link>http://blog.mpathirage.com/2010/06/20/extending-wso2-bps-2-0-0-with-custom-xpath-functions/</link>
		<comments>http://blog.mpathirage.com/2010/06/20/extending-wso2-bps-2-0-0-with-custom-xpath-functions/#comments</comments>
		<pubDate>Sun, 20 Jun 2010 13:06:41 +0000</pubDate>
		<dc:creator>Milinda Lakmal</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[Apache ODE]]></category>
		<category><![CDATA[saxon]]></category>
		<category><![CDATA[wso2 bps]]></category>
		<category><![CDATA[XPath]]></category>

		<guid isPermaLink="false">http://blog.mpathirage.com/?p=465</guid>
		<description><![CDATA[Latest release(version 2.0.0) of WSO2 BPS, includes a fix for supporting custom XPath functions based on Saxon. There was a class loading issue in the previous releases of WSO2 BPS, which breaks the custom XPath function support. Now you can write your own custom XPath extension functions as described in Saxon&#8217;s extensibility documentation, deploy them [...]]]></description>
			<content:encoded><![CDATA[<p>Latest release(version 2.0.0) of <a href="http://wso2.org/bps" target="_blank">WSO2 BPS</a>, includes a fix for supporting custom XPath functions based on <a href="http://saxon.sourceforge.net/" target="_blank">Saxon</a>. There was a class loading issue in the previous releases of WSO2 BPS, which breaks the custom XPath function support.</p>
<p>Now you can write your own custom XPath extension functions as described in <a href="http://www.saxonica.com/documentation9.1/extensibility/intro.html" target="_blank">Saxon&#8217;s extensibility</a> documentation, deploy them on WSO2 BPS and use them in you process definitions.</p>
<p>To deploy your XPath extensions in WSO2 BPS, you need to copy them into the BPS_HOME/repository/components/lib directory.</p>
<p>When writing XPath extension functions, there are some special cases. For example, if you want to pass a BPEL variable(WSDL Message or XSD Element type) into your extension functions, in simplest way, you need to use net.sf.saxon.om.NodeInfo as the parameter type. According to Saxon documentations DOM Node as the input parameter also should work when you want to get a XML element as the input. but I couldn&#8217;t get it to work when I am doing tests. And if you need to access XPath processing context, you need to have XPathContext as the first parameter to your function. When you want to return XML elements from your extension functions, you can use return type as org.w3c.dom.Node.</p>
<p>When returning XML elements, please make sure to create them using DOM AI tried to create DOM from a string like following. But failed when evaluating XPath on the return value as well as converting that DOM to AXIOM OM when sending response back to the BPEL process caller at the integration layer.</p>
<p><script src="http://gist.github.com/445823.js?file=gistfile1.pde"></script> Here is the final sample extension source.   <script src="http://gist.github.com/445825.js?file=gistfile1.pde"></script></p>
<p>And here is how you can use that extension inside BPEL process definition. In this sample, I am creating the response XML using this custom XPath function.</p>
<p><script src="http://gist.github.com/445827.js?file=gistfile1.xml"></script></p>
<p>If you have any questions on custom XPath function in WSO2 BPS, please feel free to put comment on this post. You can use extension written following above guidelines in Apache ODE also. In Apache ODE case you need to copy extension JAR into Apache ODE web application&#8217;s lib directory or relevant place in your JBI based Apache ODE deployment.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mpathirage.com/2010/06/20/extending-wso2-bps-2-0-0-with-custom-xpath-functions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WSO2 Business Process Server v2.0.0 Released!!!</title>
		<link>http://blog.mpathirage.com/2010/06/14/wso2-business-process-server-v2-0-0-released/</link>
		<comments>http://blog.mpathirage.com/2010/06/14/wso2-business-process-server-v2-0-0-released/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 10:16:26 +0000</pubDate>
		<dc:creator>Milinda Lakmal</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[wso2 bps]]></category>

		<guid isPermaLink="false">http://blog.mpathirage.com/?p=444</guid>
		<description><![CDATA[WSO2 released the latest version of it&#8217;s BPEL based process server, last Saturday(12th June 2010). WSO2 added WS-Human Task based BPEL4People support to this version of WSO2 BPS. Currently BPEL4People support is at it&#8217;s early stage and upcoming releases will provide users with comprehensive human and process integration through improved human task engine. New features [...]]]></description>
			<content:encoded><![CDATA[<p>WSO2 released the latest version of it&#8217;s BPEL based process server, last Saturday(12th June 2010). WSO2 added WS-Human Task based BPEL4People support to this version of WSO2 BPS. Currently BPEL4People support is at it&#8217;s early stage and upcoming releases will provide users with comprehensive human and process integration through improved human task engine. New features in this release includes,</p>
<ul>
<li>BPEL4People and WS-HumanTask Support(Experimental)</li>
<li>Instance cleanup scheduled task for production deployments</li>
<li>Component manager to install and uninstall features (provisioning support)</li>
<li>External service invocation via JMS</li>
<li>XPath extension support</li>
</ul>
<p>in addition to various bug fixes to underline BPEL engine(Apache ODE). You can download new release from <a href="http://wso2.org/downloads/bps" target="_blank">Oxygen Tank&#8217;s download page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mpathirage.com/2010/06/14/wso2-business-process-server-v2-0-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WSO2 BPS Instance Cleanup Task</title>
		<link>http://blog.mpathirage.com/2010/05/31/wso2-bps-instance-cleanup-task/</link>
		<comments>http://blog.mpathirage.com/2010/05/31/wso2-bps-instance-cleanup-task/#comments</comments>
		<pubDate>Mon, 31 May 2010 12:18:33 +0000</pubDate>
		<dc:creator>Milinda Lakmal</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[wso2 bps]]></category>

		<guid isPermaLink="false">http://blog.mpathirage.com/?p=379</guid>
		<description><![CDATA[Previous releases of WSO2 BPS provides facilities to, configure instance cleanup upon successful or faulty completion of process instances. But this is not suitable for production environments, because business people often need to look back and investigate their process flows, specially in failure scenarios. To provide users with more convenient instance cleanup mechanism, we introduced a new [...]]]></description>
			<content:encoded><![CDATA[<p>Previous releases of <a href="http://wso2.org/bps" target="_blank">WSO2 BPS</a> provides facilities to, configure instance cleanup upon successful or faulty completion of process instances. But this is not suitable for production environments, because business people often need to look back and investigate their process flows, specially in failure scenarios.</p>
<p>To provide users with more convenient instance cleanup mechanism, we introduced a new scheduled task which do instance cleanup,  to the next release of WSO2 BPS. You can find this feature on latest <a href="http://builder.wso2.org/~carbon/releases/carbon/3.0.0/4RC18/" target="_blank">WSO2 BPS 2.0.0 previews</a>. This task will delete successfully completed instances and instances with faulty completions at a given time, and users can configure time of day which instance cleanup task should run. In addition to schedule time, users can configure life time of instance data for successful completions and faulty completions. These configuration parameters must be specified in bps.xml file located in BPS_HOME/repository/conf directory.</p>
<p>Sample bps.xml file with instance cleanup enabled will look like following;</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tns:WSO2BPS</span> <span style="color: #000066;">xmlns:tns</span>=<span style="color: #ff0000;">&quot;http://wso2.org/bps/config&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- Database Configuration for WSO2 BPS BPEL Engine's Persistence Storage &nbsp;--&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tns:DataBaseConfig</span> <span style="color: #000066;">mode</span>=<span style="color: #ff0000;">&quot;EMBEDDED&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tns:DataBaseConfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">&lt;!-- OpenJPA specific configuration properties --&gt;</span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tns:OpenJPAConfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tns:property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;openjpa.FlushBeforeQueries&quot;</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tns:OpenJPAConfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tns:ProcessInstanceCleanupConfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tns:completed</span> <span style="color: #000066;">lifeTime</span>=<span style="color: #ff0000;">&quot;1&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tns:failed</span> <span style="color: #000066;">lifeTime</span>=<span style="color: #ff0000;">&quot;2&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;tns:scheduledTime</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;20:00:00&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tns:ProcessInstanceCleanupConfig<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/tns:WSO2BPS<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<p><strong>Future of instance cleanup </strong></p>
<p>We are planning to implement support process vise configuration for instance cleanup, where users can specify instance data life time for each and every process.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mpathirage.com/2010/05/31/wso2-bps-instance-cleanup-task/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WSO2 BPS Process Instance Data Cleanup</title>
		<link>http://blog.mpathirage.com/2010/05/10/wso2-bps-process-instance-data-cleanup/</link>
		<comments>http://blog.mpathirage.com/2010/05/10/wso2-bps-process-instance-data-cleanup/#comments</comments>
		<pubDate>Mon, 10 May 2010 11:01:07 +0000</pubDate>
		<dc:creator>Milinda Lakmal</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[Apache ODE]]></category>
		<category><![CDATA[wso2 bps]]></category>

		<guid isPermaLink="false">http://blog.mpathirage.com/?p=321</guid>
		<description><![CDATA[What is process instance data? When process instance start it&#8217;s execution, there are various types of information needs to be tracked and stored. For example when process receives a message process engine will create a process instance for execution and process engine must store the input message to it&#8217;s during the life time of process instance to use in [...]]]></description>
			<content:encoded><![CDATA[<p><strong>What is process instance data?</strong></p>
<p>When process instance start it&#8217;s execution, there are various types of information needs to be tracked and stored. For example when process receives a message process engine will create a process instance for execution and process engine must store the input message to it&#8217;s during the life time of process instance to use in intermediate steps. Like that there are various informations stored in <a href="http://wso2.org/bps" target="_blank">WSO2 BPS</a>&#8216;s persistence storage or when process is in-memory those information will be maintained as normal Java Objects.</p>
<p>Process instance in WSO2 BPS keep tracks of instance state, instance variables, messages, message properties, information about message exchanges, correlations and information about execution events. So when persistence is enabled for processes all the above information will be stored in the <a href="http://wso2.org/bps" target="_blank">WSO2 BPS</a> persistence storage. So during their life time process instances will accumulate considerable amount of data in persistence storage.</p>
<p>From the above process instance data, messages and variable take a large percentage of space from persistence storage or from memory. BPEL processes heavily depends on the message they exchanged between partners and clients. In the middle of the process life cycle there can be various data manipulations and all those information also stored in persistence storage. These XML messages can be sizable ones some times.</p>
<p>So during the life time of the process engine, it can accumulate huge amount of data and this will directly effect the database performance and then to performance of BPEL engine it self. This happens because WSO2 BPS BPEL engine is tightly coupled with persistence storage for persistence processes.</p>
<p>To preserve the performance level we want, we may some time need to clean the above described instance data from WSO2 BPS BPEL engine&#8217;s persistence storage.</p>
<p><strong>Configuring Instance Data Cleanup</strong></p>
<p>BPEL packages deployed in WSO2 BPS must contain configuration file called &#8220;<a href="http://wso2.org/project/bps/1.1.1/docs/user_guide.html#ProcessDeployment-Deployment-Descriptor" target="_blank">deploy.xml</a>&#8221; which is local to that BPEL package and contain configuration information related to processes. In that file we can specify process instance data cleanup configuration per process.</p>
<p>In the WSO2 BPS 1.1.1 we only provide support for deletion of instance data after process instance is finished. And you can specify whether to delete instance data at successful completion or completion with failure or in both cases. And you can also fine tune the instance data cleanup based on instance data categories.</p>
<p>There five different categories of instance data:</p>
<ul>
<li>instance &#8211; Contains informations like created date, last active date, process id, instance state, root scope id and execution state(Data in ODE_PROCESS_INSTANCE table of WSO2 BPS persistence storage). Execution state column of ODE_PROCESS_INSTANCE contains JACOB Execution Queue as a byte array.</li>
<li>variables &#8211; Process instance scope information, XML values of the variables and partner link variables. Contents of the tables ODE_SCOPE, ODE_XML_DATA and ODE_PARTNER_LINK</li>
<li>messages &#8211; Information about incoming and out going messages, message exchanges information and message exchange properties. Contents of the tables ODE_MESSAGE, ODE_MESSAGE_ROUTE, ODE_MEX_PROPS and ODE_MESSAGE_EXCHANGE</li>
<li>correlations &#8211; Information about correlations.Contents of the DE_CORRELATION_SET, ODE_CORSET_PROP tables.</li>
<li><a href="http://wso2.org/project/bps/1.1.1/docs/user_guide.html#Using-Events" target="_blank">events</a> &#8211; Contents of the ODE_EVENTS table.</li>
</ul>
<p><span style="text-decoration: underline;">How to Configure</span></p>
<p>Here is a sample deploy.xml file.</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:350px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;deploy</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://www.apache.org/ode/schemas/dd/2007/03&quot;</span></span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:pns</span>=<span style="color: #ff0000;">&quot;http://ode/bpel/unit-test&quot;</span> </span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:credit</span>=<span style="color: #ff0000;">&quot;http://wso2.org/bps/samples/CreditRating&quot;</span></span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:wns</span>=<span style="color: #ff0000;">&quot;http://ode/bpel/unit-test.wsdl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;process</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;pns:HelloWorld3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;active<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/active<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;invoke</span> <span style="color: #000066;">partnerLink</span>=<span style="color: #ff0000;">&quot;CreditPartnerLink&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;credit:CreditRatingService&quot;</span> <span style="color: #000066;">port</span>=<span style="color: #ff0000;">&quot;CreditRatingPort&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/invoke<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;provide</span> <span style="color: #000066;">partnerLink</span>=<span style="color: #ff0000;">&quot;helloPartnerLink&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;wns:HelloService&quot;</span> <span style="color: #000066;">port</span>=<span style="color: #ff0000;">&quot;HelloPort&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/provide<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cleanup</span> <span style="color: #000066;">on</span>=<span style="color: #ff0000;">&quot;success&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>all<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cleanup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cleanup</span> <span style="color: #000066;">on</span>=<span style="color: #ff0000;">&quot;failure&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>messages<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>correlations<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cleanup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/process<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/deploy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<p>As shown in the above example you can specify the &#8216;cleanup&#8217; configuration under &#8216;process&#8217; element of deploy.xml file. And the cleanup configuration&#8217;s XML schema is given below.</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:350px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;cleanup&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">maxOccurs</span>=<span style="color: #ff0000;">&quot;3&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;dd:tCleanup&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:complexType</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;tCleanup&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:element</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;category&quot;</span> <span style="color: #000066;">default</span>=<span style="color: #ff0000;">&quot;all&quot;</span> <span style="color: #000066;">minOccurs</span>=<span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #000066;">maxOccurs</span>=<span style="color: #ff0000;">&quot;unbounded&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:simpleType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:restriction</span> <span style="color: #000066;">base</span>=<span style="color: #ff0000;">&quot;xs:string&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:enumeration</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;instance&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:enumeration</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;variables&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:enumeration</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;messages&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:enumeration</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;correlations&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:enumeration</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;events&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:enumeration</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;all&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:restriction<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:simpleType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:element<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:sequence<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:attribute</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;on&quot;</span> <span style="color: #000066;">use</span>=<span style="color: #ff0000;">&quot;required&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:simpleType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:restriction</span> <span style="color: #000066;">base</span>=<span style="color: #ff0000;">&quot;xs:string&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:enumeration</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;success&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:enumeration</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;failure&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;xs:enumeration</span> <span style="color: #000066;">value</span>=<span style="color: #ff0000;">&quot;always&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:restriction<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:simpleType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:attribute<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/xs:complexType<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<p>Let&#8217;s look at some examples of instance data cleanup.</p>
<p><span style="text-decoration: underline;">Cleaning up all the data on successful or failed instances</span></p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;deploy</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://www.apache.org/ode/schemas/dd/2007/03&quot;</span></span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:pns</span>=<span style="color: #ff0000;">&quot;http://ode/bpel/unit-test&quot;</span> </span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:credit</span>=<span style="color: #ff0000;">&quot;http://wso2.org/bps/samples/CreditRating&quot;</span></span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:wns</span>=<span style="color: #ff0000;">&quot;http://ode/bpel/unit-test.wsdl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;process</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;pns:HelloWorld3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;active<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/active<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;invoke</span> <span style="color: #000066;">partnerLink</span>=<span style="color: #ff0000;">&quot;CreditPartnerLink&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;credit:CreditRatingService&quot;</span> <span style="color: #000066;">port</span>=<span style="color: #ff0000;">&quot;CreditRatingPort&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/invoke<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;provide</span> <span style="color: #000066;">partnerLink</span>=<span style="color: #ff0000;">&quot;helloPartnerLink&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;wns:HelloService&quot;</span> <span style="color: #000066;">port</span>=<span style="color: #ff0000;">&quot;HelloPort&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/provide<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cleanup</span> <span style="color: #000066;">on</span>=<span style="color: #ff0000;">&quot;always&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/process<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/deploy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<p><span style="text-decoration: underline;">Cleaning up all the data on successful completion of instances</span></p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;deploy</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://www.apache.org/ode/schemas/dd/2007/03&quot;</span></span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:pns</span>=<span style="color: #ff0000;">&quot;http://ode/bpel/unit-test&quot;</span> </span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:credit</span>=<span style="color: #ff0000;">&quot;http://wso2.org/bps/samples/CreditRating&quot;</span></span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:wns</span>=<span style="color: #ff0000;">&quot;http://ode/bpel/unit-test.wsdl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;process</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;pns:HelloWorld3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;active<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/active<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;invoke</span> <span style="color: #000066;">partnerLink</span>=<span style="color: #ff0000;">&quot;CreditPartnerLink&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;credit:CreditRatingService&quot;</span> <span style="color: #000066;">port</span>=<span style="color: #ff0000;">&quot;CreditRatingPort&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/invoke<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;provide</span> <span style="color: #000066;">partnerLink</span>=<span style="color: #ff0000;">&quot;helloPartnerLink&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;wns:HelloService&quot;</span> <span style="color: #000066;">port</span>=<span style="color: #ff0000;">&quot;HelloPort&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/provide<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cleanup</span> <span style="color: #000066;">on</span>=<span style="color: #ff0000;">&quot;success&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>all<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cleanup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/process<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/deploy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<p><span style="text-decoration: underline;">Cleaning up all the data on successful completions and messages and correlations of faulty completions</span></p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:350px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;deploy</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://www.apache.org/ode/schemas/dd/2007/03&quot;</span></span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:pns</span>=<span style="color: #ff0000;">&quot;http://ode/bpel/unit-test&quot;</span> </span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:credit</span>=<span style="color: #ff0000;">&quot;http://wso2.org/bps/samples/CreditRating&quot;</span></span><br />
<span style="color: #009900;">&nbsp; &nbsp; <span style="color: #000066;">xmlns:wns</span>=<span style="color: #ff0000;">&quot;http://ode/bpel/unit-test.wsdl&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;process</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;pns:HelloWorld3&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;active<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/active<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;invoke</span> <span style="color: #000066;">partnerLink</span>=<span style="color: #ff0000;">&quot;CreditPartnerLink&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;credit:CreditRatingService&quot;</span> <span style="color: #000066;">port</span>=<span style="color: #ff0000;">&quot;CreditRatingPort&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/invoke<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;provide</span> <span style="color: #000066;">partnerLink</span>=<span style="color: #ff0000;">&quot;helloPartnerLink&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;service</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;wns:HelloService&quot;</span> <span style="color: #000066;">port</span>=<span style="color: #ff0000;">&quot;HelloPort&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/provide<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cleanup</span> <span style="color: #000066;">on</span>=<span style="color: #ff0000;">&quot;success&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>all<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cleanup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;cleanup</span> <span style="color: #000066;">on</span>=<span style="color: #ff0000;">&quot;failure&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>messages<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>correlations<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/category<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/cleanup<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/process<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/deploy<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<p><strong>Effect of process instance data cleanup</strong></p>
<p>If you run WSO2 BPS without any cleanup of process instance data, it&#8217;ll effect the performance of database and then the throughput of WSO2 BPS. Response time of the process instances will also increase due to this. The best way to avoid this type of performance degradation is by configuring processes to cleanup process instance at completion. You can also write your own tools using instance management API to delete process instances periodically.</p>
<p><strong>Future of instance data cleanup</strong></p>
<p>In the latest version of WSO2 BPS we only provide deletion of process instance data after process instance execution is finished. But this is not enough in production environment. Users may need to keep the instance data for some time for auditing purposes and delete process instance data after several days. For example they may want to keep successful process instance information 3 days and failed process instance information 5 days. Also they may want to change this configuration process wise. So we are planning to introduce this support in next version(2.0) of WSO2 BPS.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mpathirage.com/2010/05/10/wso2-bps-process-instance-data-cleanup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WS-Discovery and Service Orchestration</title>
		<link>http://blog.mpathirage.com/2010/04/30/ws-discovery-and-service-orchestration/</link>
		<comments>http://blog.mpathirage.com/2010/04/30/ws-discovery-and-service-orchestration/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 15:33:23 +0000</pubDate>
		<dc:creator>Milinda Lakmal</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[ws-discovery]]></category>
		<category><![CDATA[wso2 bps]]></category>
		<category><![CDATA[wso2 carbon]]></category>

		<guid isPermaLink="false">http://blog.mpathirage.com/?p=303</guid>
		<description><![CDATA[What is WS-Discovery? WS-Discovery defines a discovery protocol for locating services. The primary scenario for discovery is a client searching for one or more target services. There are two modes of operations define in WS-Discovery protocol, named ad-hoc and managed. In ad-hoc mode clients send probe messages to multicast group and services that match the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>What is WS-Discovery?</strong></p>
<p><a rel="nofollow" href="http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01" target="_blank">WS-Discovery</a> defines a discovery protocol for locating services. The primary scenario for discovery is a client searching for one or more target services. There are two modes of operations define in WS-Discovery protocol, named ad-hoc and managed.</p>
<p>In ad-hoc mode clients send probe messages to multicast group and services that match the probe send a response directly to client. To reduce the network load, there is a another way of doing this by service sending announcement to the same multicast group when he joined the network. In this case clients who listening to the multicast group can detect  newly available service without repeated probing.</p>
<p>In managed mode this protocol introduces discovery proxy which resides in-between client and the service. And this method extends the reach of protocol beyond ad-hoc network. In managed mode, target services send unicast announcement messages to discovery proxy and clients send unicast probe and resolve messages to discovery proxy. Also there are ways to reduce the network traffic also in managed mode.</p>
<p><strong>WS-Discovery in WSO2 Carbon</strong></p>
<p>WSO2 Carbon&#8217;s latest release has separate component which take care about discovering services deployed in other WSO2 Carbon based products and which implements WS-Discovery specification, a discovery protocol for locating services. Even though earlier I said you can discover services deployed in other WSO2 Carbon based servers, if you have a service deployment environment from another vendor and it has discovery protocol implements you&#8217;ll be able to discover service deployed in that server through this component.</p>
<p>You can find a tutorial describing <a rel="nofollow" href="http://charithaka.blogspot.com/2010/04/ws-discovery-with-wso2-carbon.html" target="_blank">how to use WS-Discovery</a> feature comes with latest WSO2 Carbon based products.</p>
<p><strong>Benefits for WSO2 BPS</strong></p>
<p>WS-Discovery becomes handy, when it comes to service orchestration product like <a href="http://wso2.org/bps" target="_blank">WSO2 BPS</a>. WSO2 BPS can utilize the functionality provides by the WS-Discovery component to auto discover endpoints which implement certain type of service. Also we can come up with a deployment wizard where users can dynamically discover and change the service endpoints at deployment time. And these kind features will be really helpful when migrating processes from development environment to production environments.</p>
<p>If we can integrate discovery proxy with the BPEL editor, user will be able to directly search the services he wants and compose a process out of those services.</p>
<p>We are planning to integrate WS-discovery into a future release of WSO2 BPS(not to the upcoming release), so that our users will get a fully dynamic deployment experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mpathirage.com/2010/04/30/ws-discovery-and-service-orchestration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WSO2 Business Process Server 1.1.0 Released!</title>
		<link>http://blog.mpathirage.com/2009/11/20/wso2-business-process-server-1-1-0-released/</link>
		<comments>http://blog.mpathirage.com/2009/11/20/wso2-business-process-server-1-1-0-released/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 04:14:09 +0000</pubDate>
		<dc:creator>Milinda Lakmal</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[WSO2]]></category>
		<category><![CDATA[Apache ODE]]></category>
		<category><![CDATA[wso2 bps]]></category>

		<guid isPermaLink="false">http://blog.mpathirage.com/?p=177</guid>
		<description><![CDATA[WSO2 Business Process Server team released the latest version(1.1.0) of WSO2 BPS yesterday 19th November 2009.  As the successor of WSO2 BPS 1.0.1, WSO2 BPS 1.1.0 comes with handful of new features which will make process developer&#8217;s life easier. WSO2 BPS 1.1.0 uses revision of Apache ODE trunk which is going to be the future [...]]]></description>
			<content:encoded><![CDATA[<p><a title="WSO2 Business Process Server 1.1.0" href="http://wso2.org/projects/bps" target="_blank">WSO2 Business Process Server</a> team released the latest version(1.1.0) of WSO2 BPS yesterday 19th November 2009.  As the successor of WSO2 BPS 1.0.1, WSO2 BPS 1.1.0 comes with handful of new features which will make process developer&#8217;s life easier.</p>
<p>WSO2 BPS 1.1.0 uses revision of <a title="Apache ODE" href="http://ode.apache.org" target="_blank">Apache ODE</a> trunk which is going to be the future of Apache ODE BPEL engine as it BPEL engine. In addition to that there are several bug fixes to the Apache ODE like fixing <a href="http://en.wikipedia.org/wiki/ECMAScript_for_XML" target="_blank">E4X</a> <a title="E4X Extension for BPEL" href="http://ceur-ws.org/Vol-438/paper16.pdf" target="_blank">extension</a> support when using <a title="Apache OpenJPA" href="http://openjpa.apache.org/" target="_blank">OpenJPA</a> data access objects. WSO2 BPS 1.1.0 comes with a completely new integration layer for Apache ODE which integrated ODE with <a title="WSO@ Carbon" href="http://wso2.org/projects/carbon" target="_blank">WSO2 Carbon</a> platform. Now the previously unsecured BPEL management API is completely secured based on WSO2 Carbon authentication mechanism and new version has a completely re-written Web service API for managing your BPEL engine. There are some improvements to be done on the management API and those will be available with the upcoming releases.</p>
<p>By leveraging the extension mechanism of new ODE engine, now you can extend WSO2 BPS&#8217;s BPEL language by introducing your own extension to BPEL language and deploying them on WSO2 BPS.</p>
<p>This version of WSO2 BPS has the provisioning support based in Equinox P2; now users can extend the BPS by installing features available in WSO2 Carbon P2 repositories. For example by installing mediation feature, you&#8217;ll be able to do service mediation using WSO2 BPS.</p>
<p><strong>Here is the list of new features available in WSO2 BPS 1.1.0</strong></p>
<ul>
<li>Apache ODE trunk&#8217;s revision is used as the BPEL Engine</li>
<li>New WSO2 Carbon integration layer for Apache ODE</li>
<li>BPEL Process Versioning Support</li>
<li>Support for invoking secured(Using WS-Security) partner services.</li>
<li>Experimental clustering support</li>
<li>Invoke activity recovery support through management console</li>
<li>E4X based data manipulation support for BPEL assignments</li>
<li>BPEL Extension support for extending WS-BPEL language</li>
<li><a title="Equinox P2" href="http://wiki.eclipse.org/P2" target="_blank">Equinox P2</a> based provisioning support &#8211;  extend your BPS instance by installing new P2 features [5].</li>
</ul>
<p>You can download this release at <a title="Download WSO2 BPS 1.1.0" href="http://wso2.org/downloads/bps" target="_blank">http://wso2.org/downloads/bps</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mpathirage.com/2009/11/20/wso2-business-process-server-1-1-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disable Apache ODE&#8217;s Activity Recovery If Process Follows Request-Response Style</title>
		<link>http://blog.mpathirage.com/2009/09/11/disable-apache-odes-activity-recovery-if-process-follows-request-response-style/</link>
		<comments>http://blog.mpathirage.com/2009/09/11/disable-apache-odes-activity-recovery-if-process-follows-request-response-style/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 16:23:59 +0000</pubDate>
		<dc:creator>Milinda Lakmal</dc:creator>
				<category><![CDATA[BPEL]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Apache ODE]]></category>

		<guid isPermaLink="false">http://blog.mpathirage.com/?p=138</guid>
		<description><![CDATA[Most of the time business process are long running and implemented in asynchronous style. But there may be situations that we are using synchronous business process which are not long running. So client expect a response  back from the server without a time out. This response can be a SOAP fault. The main thing is, [...]]]></description>
			<content:encoded><![CDATA[<p>Most of the time business process are long running and implemented in asynchronous style. But there may be situations that we are using synchronous business process which are not long running. So client expect a response  back from the server without a time out. This response can be a SOAP fault. The main thing is, clients must get a response back even process failed during execution.</p>
<p>Apache ODE has this nice feature called <a title="ODE Activity Recovery" href="http://ode.apache.org/activity-failure-and-recovery.html" target="_blank">activity recovery support for BPEL</a> invoke activities. If external service invoke failed due to unavailability of end point, due to a SOAP fault or domain name resolution error, user can retry this activity after the errors in external services are fixed.</p>
<p>If the process operations are synchronous, client will get time out error if invoke activity failed during execution in normal case. This not good thing for synchronous operation. Client must get a fault as a response if invoke activity failed during synchronous operation. So you if your process operations are synchronous and you need fault reponse if invoke activity failed during process execution, you need to disable activity recovery feature and set fault on failure to true. This can be done using following code snippet in a BPEL scope which has invoke activity.</p>
<div class="codecolorer-container xml default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ext:failureHandling</span> <span style="color: #000066;">xmlns:ext</span>=<span style="color: #ff0000;">&quot;http://ode.apache.org/activityRecovery&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ext:faultOnFailure<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ext:faultOnFailure<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ext:failureHandling<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<p>Here is a sample BPEL process that use the above feature.</p>
<p><a target="_blank" href="http://blog.mpathirage.com/wp-content/uploads/2009/09/SOAPFaultTest.zip" title="Download Source"><br />
<img style="border:0px;" class="aligncenter" width="161" height="41" alt="Download Source" src="http://blog.mpathirage.com/wp-content/uploads/2009/07/box_download.png" title="Download Source"/><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mpathirage.com/2009/09/11/disable-apache-odes-activity-recovery-if-process-follows-request-response-style/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

