<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Re: In memory TaskClient without Mina or JMS
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/daniele.ulrich">Daniele Ulrich</a> in <i>jBPM</i> - <a href="http://community.jboss.org/message/610954#610954">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>I did it this way (although it is possible to work directly with the locally instantiated TaskService, see at the end):</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left">This has, however, some drawbacks: all events from the task service can only be recevied by a client that registers locally (in jvm) to the task service. And I'm working on a good solution for a proper JTA integration (injected EntityManager)&#160; to support an integration within an appserver. </p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left"><p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">/*</p><p align="left">$Id: LocalHumanTaskHandler.java 234 2011-06-20 06:24:39Z <span style="text-decoration: underline;">Daniele</span> $</p><p align="left">*/</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">package</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">ch.niceneasy.process.handler;</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.jbpm.process.workitem.wsht.WSHumanTaskHandler;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.jbpm.task.service.TaskClient;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.jbpm.task.service.TaskService;</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">/**</p><p align="left">* The class LocalHumanTaskHandler allows to use Human Tasks on a local</p><p align="left">* connection to the task service.</p><p align="left">*/</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">public</p></strong></strong><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">class</strong></strong><span style="color: #000000; font-size: 10pt;"> LocalHumanTaskHandler </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">extends</strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">WSHumanTaskHandler {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* Instantiates a new local human task handler.</p><p align="left">* </p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@param</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">taskService</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the task service (locally instantiated, singleton)</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">LocalHumanTaskHandler(TaskService taskService) {</span></div></p><span style="font-size: 10pt;"><p align="left">InJVMConnector inJVMConnector = </p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">new</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">InJVMConnector(taskService);</span></div></p><span style="font-size: 10pt;"><p align="left">TaskClient taskClient = </p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">new</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">TaskClient(inJVMConnector);</span></div></p><span style="font-size: 10pt;"><p align="left">inJVMConnector.setTaskClient(taskClient);</p><p align="left">setClient(taskClient);</p><p align="left">}</p><p align="left">}</p></span></p></p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div class="mcePaste" id="_mcePaste" style="position: absolute; top: 0px; left: 0px;"></div><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">/*</p><p align="left">$Id: InJVMConnector.java 234 2011-06-20 06:24:39Z <span style="text-decoration: underline;">Daniele</span> $</p><p align="left">*/</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">package</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">ch.niceneasy.process.handler;</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">java.io.IOException;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">java.util.HashMap;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">java.util.Map;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">java.util.concurrent.atomic.AtomicInteger;</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.drools.SystemEventListenerFactory;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.drools.task.service.ResponseHandler;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.jbpm.task.service.BaseHandler;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.jbpm.task.service.SessionWriter;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.jbpm.task.service.TaskClient;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.jbpm.task.service.TaskClientConnector;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.jbpm.task.service.TaskClientHandler;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.jbpm.task.service.TaskServerHandler;</span></div></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">import</p></strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">org.jbpm.task.service.TaskService;</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">/**</p><p align="left">* The class InJVMConnector is a replacement for the <span style="text-decoration: underline;">mina</span> or<div align="left"><span style="text-decoration: underline;">hornetq</span></div></p><p align="left">* TaskClientConnectors. It allows an in</p></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">JVM connection by implementing the</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* TaskClientConnector interface. Although it is also possible to use</p><p align="left">* TaskService and TaskServiceSession directly, this approach stays<div align="left"><span style="text-decoration: underline;">stricly</span></div></p><p align="left">* compatible to the <span style="text-decoration: underline;">jbpm</span></p></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">human</span><span style="color: #7f7f9f; font-size: 10pt;">-</span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">task framework.</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* </p><p align="left">* Tested on JBoss AS 6.1 with multiple <span style="text-decoration: underline;">datasources</span>, I had to remove the persistence.xml and</p><p align="left">* orm.xml from the <span style="text-decoration: underline;">jpb</span></p></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">human</span><span style="color: #7f7f9f; font-size: 10pt;">-</span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">task.jar and replace it as follows:</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* </p><p align="left">* </p></span><p align="left"><div align="left"><span style="color: #7f7f9f; font-size: 10pt;"><div align="left"><span style="color: #7f7f9f; font-size: 10pt;">&lt;pre&gt;</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* ...</p><p align="left">* &amp;lt;persistence</p></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">unit name="org.jbpm.task" transaction</span><span style="color: #7f7f9f; font-size: 10pt;">-</span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">type="RESOURCE_LOCAL"&amp;gt;</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* &amp;lt;non</p></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="text-decoration: underline;"><span style="color: #3f5fbf; font-size: 10pt; text-decoration: underline;"><span style="color: #3f5fbf; font-size: 10pt; text-decoration: underline;">jta</span></span></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">data</span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">source&amp;gt;java:/org.jbpm.task&amp;lt;/non</span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="text-decoration: underline;"><span style="color: #3f5fbf; font-size: 10pt; text-decoration: underline;"><span style="color: #3f5fbf; font-size: 10pt; text-decoration: underline;">jta</span></span></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">data</span><span style="color: #7f7f9f; font-size: 10pt;">-</span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">source&amp;gt;</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* &amp;lt;mapping</p></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">file&amp;gt;META</span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">INF/<span style="text-decoration: underline;">orm</span></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">jbpm.xml&amp;lt;/mapping</span><span style="color: #7f7f9f; font-size: 10pt;">-</span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">file&amp;gt;</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* ...</p><p align="left">* </p></span><p align="left"><div align="left"><span style="color: #7f7f9f; font-size: 10pt;"><div align="left"><span style="color: #7f7f9f; font-size: 10pt;">&lt;/pre&gt;</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* </p><p align="left">* As the persistence layer of <span style="text-decoration: underline;">jbpm</span></p></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">human</span><span style="color: #7f7f9f; font-size: 10pt;">-</span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">task performs local transactions (explicit commits), </span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the <span style="text-decoration: underline;">datasource</span> has to be defined as follows:</p><p align="left">* </p><p align="left">* </p></span><p align="left"><div align="left"><span style="color: #7f7f9f; font-size: 10pt;"><div align="left"><span style="color: #7f7f9f; font-size: 10pt;">&lt;pre&gt;</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* ...</p><p align="left">* &amp;lt;no</p></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="text-decoration: underline;"><span style="color: #3f5fbf; font-size: 10pt; text-decoration: underline;"><span style="color: #3f5fbf; font-size: 10pt; text-decoration: underline;">tx</span></span></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="text-decoration: underline;"><span style="color: #3f5fbf; font-size: 10pt; text-decoration: underline;"><span style="color: #3f5fbf; font-size: 10pt; text-decoration: underline;">datasource</span></span></span>&amp;gt;</p></span></div></span></div></p><p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* &amp;lt;<span style="text-decoration: underline;">jndi</span><span style="color: #7f7f9f; font-size: 10pt;">-</span><span style="color: #3f5fbf; font-size: 10pt;">name&amp;gt;org.jbpm.task&amp;lt;/<span style="text-decoration: underline;">jndi</span></span><span style="color: #7f7f9f; font-size: 10pt;">-</span><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">name&amp;gt;</span></div></span></div></p></span><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* ...</p><p align="left">*<div align="left"><span style="color: #7f7f9f; font-size: 10pt;"><div align="left"><span style="color: #7f7f9f; font-size: 10pt;">&lt;/pre&gt;</span></div></span></div></p></span></p><p><span style="color: #7f0055; font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* </p><p align="left">*/</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;"><p align="left">public</p></strong></strong><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">class</strong></strong><span style="color: #000000; font-size: 10pt;"> InJVMConnector </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">implements</strong></strong><p align="left"><div align="left"><span style="color: #000000; font-size: 10pt;">TaskClientConnector {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/** The task client. */</span></div></span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">private</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">TaskClient taskClient;</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/** The task server handler. */</span></div></span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">private</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">TaskServerHandler taskServerHandler;</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/** The counter. */</span></div></span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">private</strong></strong><span style="font-size: 10pt;"> AtomicInteger counter = </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">new</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">AtomicInteger();</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/** The local handler. */</span></div></span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">private</strong></strong><span style="font-size: 10pt;"> LocalHandler localHandler = </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">new</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">LocalHandler();</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* Instantiates a new in <span style="text-decoration: underline;">jvm</span> connector.</p><p align="left">* </p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@param</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">taskService</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the task service</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">InJVMConnector(TaskService taskService) {</span></div></p><span style="font-size: 10pt;"><p align="left">taskServerHandler = </p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">new</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">TaskServerHandler(taskService,</span></div></p><span style="font-size: 10pt;"><p align="left">SystemEventListenerFactory.getSystemEventListener());</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;">/*</span></div></span></div></p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">* (non-<span style="text-decoration: underline;">Javadoc</span>)</p><p align="left">* </p><p align="left">* @see org.jbpm.task.service.TaskClientConnector#connect()</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #646464; font-size: 10pt;">@</span><p align="left"><div align="left"><span style="font-size: 10pt;">Override</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">boolean</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">connect() {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">return</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">true</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">;</span></div></p><span style="font-size: 10pt;"><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;">/*</span></div></span></div></p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">* (non-<span style="text-decoration: underline;">Javadoc</span>)</p><p align="left">* </p><p align="left">* @see org.jbpm.task.service.TaskClientConnector#connect(java.lang.String,</p><p align="left">* <span style="text-decoration: underline;">int</span>)</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #646464; font-size: 10pt;">@</span><p align="left"><div align="left"><span style="font-size: 10pt;">Override</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">boolean</strong></strong><span style="font-size: 10pt;"> connect(String address, </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">int</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">port) {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">return</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">connect();</span></div></p><span style="font-size: 10pt;"><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;">/*</span></div></span></div></p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">* (non-<span style="text-decoration: underline;">Javadoc</span>)</p><p align="left">* </p><p align="left">* @see org.jbpm.task.service.TaskClientConnector#disconnect()</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #646464; font-size: 10pt;">@</span><p align="left"><div align="left"><span style="font-size: 10pt;">Override</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">void</strong></strong><span style="font-size: 10pt;"> disconnect() </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">throws</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">Exception {</span></div></p><span style="font-size: 10pt;"><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;">/*</span></div></span></div></p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">* (non-<span style="text-decoration: underline;">Javadoc</span>)</p><p align="left">* </p><p align="left">* @see org.jbpm.task.service.TaskClientConnector#write(java.lang.Object)</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #646464; font-size: 10pt;">@</span><p align="left"><div align="left"><span style="font-size: 10pt;">Override</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">void</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">write(Object message) {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">try</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">{</span></div></p><span style="font-size: 10pt;"><p align="left">taskServerHandler</p><p align="left">.messageReceived(</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">new</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">LocalSessionWriter(), message);</span></div></p><span style="font-size: 10pt;"><p align="left">} </p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">catch</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">(Exception e) {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #3f7f5f; font-size: 10pt;">// </span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">TODO</strong></strong><p align="left"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;">Auto-generated catch block</span></div></span></div></p><span style="font-size: 10pt;"><p align="left">e.printStackTrace();</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;">/*</span></div></span></div></p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">* (non-<span style="text-decoration: underline;">Javadoc</span>)</p><p align="left">* </p><p align="left">* @see org.jbpm.task.service.TaskClientConnector#getHandler()</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #646464; font-size: 10pt;">@</span><p align="left"><div align="left"><span style="font-size: 10pt;">Override</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">BaseHandler getHandler() {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">return</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">localHandler;</span></div></p><span style="font-size: 10pt;"><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;">/*</span></div></span></div></p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">* (non-<span style="text-decoration: underline;">Javadoc</span>)</p><p align="left">* </p><p align="left">* @see org.jbpm.task.service.TaskClientConnector#getName()</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #646464; font-size: 10pt;">@</span><p align="left"><div align="left"><span style="font-size: 10pt;">Override</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">String getName() {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">return</strong></strong><span style="font-size: 10pt;"> </span><span style="color: #2a00ff; font-size: 10pt;">"localConnection"</span><p align="left"><div align="left"><span style="font-size: 10pt;">;</span></div></p><span style="font-size: 10pt;"><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;">/*</span></div></span></div></p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">* (non-<span style="text-decoration: underline;">Javadoc</span>)</p><p align="left">* </p><p align="left">* @see org.jbpm.task.service.TaskClientConnector#getCounter()</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #646464; font-size: 10pt;">@</span><p align="left"><div align="left"><span style="font-size: 10pt;">Override</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">AtomicInteger getCounter() {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">return</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">counter;</span></div></p><span style="font-size: 10pt;"><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* Gets the task client.</p><p align="left">* </p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@return</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">the task client</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">TaskClient getTaskClient() {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">return</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">taskClient;</span></div></p><span style="font-size: 10pt;"><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* Sets the task client.</p><p align="left">* </p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@param</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">taskClient</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the new task client</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">void</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">setTaskClient(TaskClient taskClient) {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">this</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">.taskClient = taskClient;</span></div></p><span style="font-size: 10pt;"><p align="left">localHandler.setClient(taskClient);</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* The Class LocalSessionWriter.</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">class</strong></strong><span style="font-size: 10pt;"> LocalSessionWriter </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">implements</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">SessionWriter {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;">/*</span></div></span></div></p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">* (non-<span style="text-decoration: underline;">Javadoc</span>)</p><p align="left">* </p><p align="left">* @see org.jbpm.task.service.SessionWriter#write(java.lang.Object)</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><span style="color: #646464; font-size: 10pt;">@</span><p align="left"><div align="left"><span style="font-size: 10pt;">Override</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">void</strong></strong><span style="font-size: 10pt;"> write(Object message) </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">throws</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">IOException {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">try</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">{</span></div></p><span style="font-size: 10pt;"><p align="left">localHandler.messageReceived(</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">null</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">, message);</span></div></p><span style="font-size: 10pt;"><p align="left">} </p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">catch</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">(Exception e) {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">throw</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">new</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">IOException(e);</span></div></p><span style="font-size: 10pt;"><p align="left">}</p><p align="left">}</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* The Class LocalHandler.</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">class</strong></strong><span style="font-size: 10pt;"> LocalHandler </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">implements</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">BaseHandler {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/** The handler. */</span></div></span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">private</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">TaskClientHandler handler;</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/** The response handlers. */</span></div></span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">protected</strong></strong><span style="font-size: 10pt;"> Map&lt;Integer, ResponseHandler&gt; responseHandlers = </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">new</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">HashMap&lt;Integer, ResponseHandler&gt;();</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* Instantiates a new local handler.</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">LocalHandler() {</span></div></p><span style="font-size: 10pt;"><p align="left">handler = </p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">new</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">TaskClientHandler(responseHandlers,</span></div></p><span style="font-size: 10pt;"><p align="left">SystemEventListenerFactory.getSystemEventListener());</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;"><div align="left"><span style="color: #3f7f5f; font-size: 10pt;">/*</span></div></span></div></p><span style="color: #3f7f5f; font-size: 10pt;"><p align="left">* (non-<span style="text-decoration: underline;">Javadoc</span>)</p><p align="left">* </p><p align="left">* @see org.jbpm.task.service.BaseHandler#addResponseHandler(int,</p><p align="left">* org.drools.task.service.ResponseHandler)</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">void</strong></strong><span style="font-size: 10pt;"> addResponseHandler(</span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">int</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">id, ResponseHandler responseHandler) {</span></div></p><span style="font-size: 10pt;"><p align="left">responseHandlers.put(id, responseHandler);</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* Gets the client.</p><p align="left">* </p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@return</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">the client</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">TaskClient getClient() {</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">return</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">handler.getClient();</span></div></p><span style="font-size: 10pt;"><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* Sets the client.</p><p align="left">* </p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@param</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">client</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the new client</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">void</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">setClient(TaskClient client) {</span></div></p><span style="font-size: 10pt;"><p align="left">handler.setClient(client);</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* Exception caught.</p><p align="left">* </p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@param</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">writer</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the writer</p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@param</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">cause</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the cause</p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@throws</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">Exception</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the exception</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">void</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">exceptionCaught(SessionWriter writer, Throwable cause)</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">throws</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">Exception {</span></div></p><span style="font-size: 10pt;"><p align="left">handler.exceptionCaught(writer, cause);</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">/**</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* Message received.</p><p align="left">* </p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@param</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">writer</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the writer</p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@param</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">message</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the message</p><p align="left">* </p></span><strong style="color: #7f9fbf; font-size: 10pt;"><strong style="color: #7f9fbf; font-size: 10pt;">@throws</strong></strong><p align="left"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;"><div align="left"><span style="color: #3f5fbf; font-size: 10pt;">Exception</span></div></span></div></p><span style="color: #3f5fbf; font-size: 10pt;"><p align="left">* the exception</p><p align="left">*/</p></span><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><span style="font-size: 10pt;"> </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">void</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">messageReceived(SessionWriter writer, Object message)</span></div></p><span style="font-size: 10pt;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">throws</strong></strong><p align="left"><div align="left"><span style="font-size: 10pt;">Exception {</span></div></p><span style="font-size: 10pt;"><p align="left">handler.messageReceived(writer, message);</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;"> &#160;</p><p align="left"><span style="font-size: 10pt;">Get user task locally:</span></p><p align="left"><br/><p>/* @Singleton @Startup KnowledgeBaseBean { @Postconstruct ....*/</p><span style=": ; color: #3f7f5f; font-size: 2;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p align="left"><p><span style=": ; font-size: 2;"><p>KnowledgeBaseBean </p></span><span style="color: #0000c0; font-size: 10pt;">knowledgeBaseBean </span><p><span style="font-size: 10pt;">;&#160;&#160; <br/><br/></span><a class="jive-link-anchor-small">#</a><a class="jive-link-anchor-small">#</a></p><span style=": ; font-size: 2;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">public</strong></strong><p align="left"><span style="font-size: 10pt;"> List&lt;TaskSummary&gt; getOpenTasks() {<span style="font-size: 2;"><p align="left">TaskServiceSession session = </p></span></span></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">null</strong></strong><p align="left"><span style="font-size: 10pt;">;<span style="font-size: 2;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></span></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">try</strong></strong><p align="left"><span style="font-size: 10pt;"> {<span style="font-size: 2;"><p align="left">session = </p></span></span></p><span style="color: #0000c0; font-size: 10pt;">knowledgeBaseBean</span><p align="left"><span style="font-size: 10pt;">.getTaskServiceSession();<span style="font-size: 2;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></span></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">return</strong></strong><span style="font-size: 10pt;"> session.getTasksAssignedAsPotentialOwner(</span><span style="color: #2a00ff; font-size: 10pt;">"mary"</span><span style="font-size: 10pt;">, </span><span style="color: #2a00ff; font-size: 10pt;">"en-UK"</span><p align="left"><span style="font-size: 10pt;">);<span style="font-size: 2;"><p align="left">} </p></span></span></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">finally</strong></strong><p align="left"><span style="font-size: 10pt;"> {<span style="font-size: 2;"><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p></span></span></p><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">if</strong></strong><span style="font-size: 10pt;"> (session != </span><strong style="color: #7f0055; font-size: 10pt;"><strong style="color: #7f0055; font-size: 10pt;">null</strong></strong><p align="left"><span style="font-size: 10pt;">) {<p align="left">session.dispose();</p><p align="left">}</p><p align="left">}</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>}</p></span></p></p></p><span style="font-size: 2;"><p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;"> &#160;</p><p align="left">Cheers, Daniele </p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;"> &#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;"> &#160;</p><p align="left" style="min-height: 8pt; height: 8pt; padding: 0px;"> &#160;</p></p></span></span><br/> <p align="left"><span style="color: #646464; font-size: 10pt;"><p align="left"><span style="color: #646464; font-size: 10pt;">@Inject</span></p></span></p></p></span></p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/610954#610954">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in jBPM at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2034">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>