<!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="https://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;">
    jBPM5.3 LocalHumanTaskService
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/ghuazh">hua zhong</a> in <i>jBPM</i> - <a href="https://community.jboss.org/message/739520#739520">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hi, all</p><p>I'm using jBPM5.3 final in our project, and&#160; try to use local human task handler.</p><p>I got too many problems need someone help me.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>1. to start a process:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java">Map&lt;String, Object&gt; params = <font color="navy"><b>new</b></font> HashMap&lt;String, Object&gt;();
params.put(<font color="red">"act_rule_launcher"</font>, <font color="red">"krisv"</font>);
params.put(<font color="red">"act_rule_dept_manager"</font>, <font color="red">"john"</font>);
params.put(<font color="red">"act_checker"</font>, <font color="red">"mary"</font>);
params.put(<font color="red">"act_approver"</font>, <font color="red">"tracy"</font>);
&#160; 
StatefulKnowledgeSession ksession = BPM.getBPMService().getSession(<font color="red">"com.tmt"</font>);
HTWorkItemHandler handler = <font color="navy"><b>new</b></font> HTWorkItemHandler(ksession);
ksession.getWorkItemManager().registerWorkItemHandler(<font color="red">"Human Task"</font>, handler);
ksession.startProcess(<font color="red">"com.tmt.ProjectPlanApproval"</font>, params);
</code></pre><p>HTWorkItemHandler is a local work item extends AbstractHTWorkItemHandler.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Exception: </p><pre class="jive-pre"><code class="jive-code">0&#160;&#160;&#160; 03/06 18:06:18,379[UIThread [1gpcqnco5rnu6n5d7u3otffrb]] ERROR hibernate.transaction.JDBCTransaction.toggleAutoCommit&#160; - Could not toggle autocommit
java.sql.SQLException: autocommit is not allowed on a resource enlisted in a global transaction
&#160;&#160;&#160; at bitronix.tm.resource.jdbc.JdbcConnectionHandle.setAutoCommit(JdbcConnectionHandle.java:177)
&#160;&#160;&#160; at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source)
&#160;&#160;&#160; at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
&#160;&#160;&#160; at java.lang.reflect.Method.invoke(Unknown Source)
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I guess maybe I need to change persistence.xml to use JTA?</p><p>&lt;persistence-unit name="org.jbpm.task"&gt; </p><p>change to:</p><p>&lt;persistence-unit name="org.jbpm.task" transaction-type="JTA"&gt; </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>After that, It's ok. but soon I got the 2nd problem, see below.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>2. complete a task</p><pre class="jive-pre"><code class="jive-code jive-java">HTTaskService service = BPM.getHumanTaskService().getTaskService();
List&lt;TaskSummary&gt; tasks = service.getTasksAssignedAsPotentialOwner(userId,<font color="red">"en-UK"</font>);
<font color="navy"><b>if</b></font>(tasks.isEmpty())<font color="navy">{</font>
 <font color="navy"><b>return</b></font>;
<font color="navy">}</font>
<font color="navy"><b>for</b></font>(<font color="navy"><b>int</b></font> i =0;i&lt;tasks.size();i++)<font color="navy">{</font>
 TaskSummary task = tasks.get(i);
 System.out.println(userId+<font color="red">"&gt;&gt;"</font>+task.getId()+task.getName());
<font color="navy">}</font>
<font color="navy"><b>long</b></font> taskId = tasks.get(0).getId();
service.start(taskId, userId);
service.complete(taskId, userId,<font color="navy"><b>null</b></font>);
</code></pre><p>HTTaskService is a taskservice extends LocalTaskService.</p><p>BPM.getHumanTaskService().getTaskService() will return a new HTTaskService from a org.jbpm.task.service.TaskService.</p><p>in my application only one org.jbpm.task.service.TaskService will created, every HTTaskService whil use it.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>service.start is ok.</p><p>but when service complete, it brings a new exception:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java">javax.persistence.TransactionRequiredException: No active JTA transaction on joinTransaction call
&#160;&#160;&#160; at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:458)
&#160;&#160;&#160; at org.hibernate.ejb.AbstractEntityManagerImpl.joinTransaction(AbstractEntityManagerImpl.java:431)
&#160;&#160;&#160; at org.drools.persistence.jpa.JpaPersistenceContextManager.beginCommandScopedEntityManager(JpaPersistenceContextManager.java:83)
&#160;&#160;&#160; at org.jbpm.persistence.processinstance.JPAProcessInstanceManager.getProcessInstance(JPAProcessInstanceManager.java:75)
&#160;&#160;&#160; at org.jbpm.process.instance.ProcessRuntimeImpl.getProcessInstance(ProcessRuntimeImpl.java:204)
&#160;&#160;&#160; at org.drools.common.AbstractWorkingMemory.getProcessInstance(AbstractWorkingMemory.java:1100)
&#160;&#160;&#160; at org.drools.impl.StatefulKnowledgeSessionImpl.getProcessInstance(StatefulKnowledgeSessionImpl.java:297)
&#160;&#160;&#160; at org.drools.persistence.jpa.processinstance.JPAWorkItemManager.completeWorkItem(JPAWorkItemManager.java:117)
&#160;&#160;&#160; at com.sg.bpm.service.task.HTWorkItemHandler$TaskCompletedHandler.execute(HTWorkItemHandler.java:165)
&#160;&#160;&#160; at org.jbpm.task.service.local.LocalTaskService$SimpleEventTransport.trigger(LocalTaskService.java:307)
&#160;&#160;&#160; at org.jbpm.task.event.MessagingTaskEventListener.taskCompleted(MessagingTaskEventListener.java:73)
&#160;&#160;&#160; at org.jbpm.task.event.TaskEventSupport.fireTaskCompleted(TaskEventSupport.java:46)
&#160;&#160;&#160; at org.jbpm.task.service.TaskServiceSession.postTaskCompleteOperation(TaskServiceSession.java:502)
&#160;&#160;&#160; at org.jbpm.task.service.TaskServiceSession.taskOperation(TaskServiceSession.java:468)
&#160;&#160;&#160; at org.jbpm.task.service.local.LocalTaskService.complete(LocalTaskService.java:80)
</code></pre><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I test task client of HornetQ, everything is ok. but how to use local service?</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/739520#739520">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in jBPM at <a href="https://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>