<!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;">
    Non JPA transaction management for JBPM 5.3.0 or how to integrate JBPM with current application that use HibernateTransactionManager ?
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/cybiks">Anatoliy Kalenskiy</a> in <i>jBPM</i> - <a href="https://community.jboss.org/message/757060#757060">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 style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I have an application - Spring+Hibernate.</p><p>All transactions management described in spring config:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p> &lt;bean id="transactionManager"</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; class="org.springframework.orm.hibernate4.HibernateTransactionManager"&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="dataSource" ref="dataSource"/&gt;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;property name="sessionFactory" ref="sessionFactory"/&gt;</p><p>&#160;&#160;&#160; &lt;/bean&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; &lt;!-- enables the configuration of transactional behavior based on annotations --&gt;</p><p>&#160;&#160;&#160; &lt;tx:annotation-driven transaction-manager="transactionManager"/&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>So in code we just use:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java">@Transactional(propagation = Propagation.REQUIRES_NEW)
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> handleEvent(Event event) <font color="navy">{</font>
&#160;&#160;&#160;&#160; List&lt;EventAction&gt; eventActions =&#160; event.getEventactions();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>for</b></font>(EventAction action : eventActions) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; actions.run();
&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
<font color="navy">}</font>
</code></pre><p>&#160; So all actions runs in one transaction. Now we want to use&#160; JBPM process to run such actions.</p><p>We create some jbpm process com.example.process and&#160; rewrite our code to :</p><pre class="jive-pre"><code class="jive-code jive-java">@Transactional(propagation = Propagation.REQUIRES_NEW)
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> handleEvent(Event event) <font color="navy">{</font>
&#160;&#160;&#160;&#160; List&lt;EventAction&gt; eventActions =&#160; event.getEventactions();
&#160;&#160;&#160;&#160; Map&lt;String, EventAction&gt; actions = <font color="navy"><b>new</b></font> HashMap&lt;String, EventAction&gt;();
&#160;
&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>for</b></font>(EventAction action : eventActions) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; actions.put(action.getDisplayName(), action);
&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Map&lt;String, Object&gt; params = <font color="navy"><b>new</b></font> HashMap&lt;String, Object&gt;();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; params.put(<font color="red">"event"</font>, event);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; params.put(<font color="red">"actions"</font>, actions);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ksession.startProcess(<font color="red">"com.example.process"</font>, params);
<font color="navy">}</font>
</code></pre><p>&#160; </p><p>The main Idea to run each actions in order depending on some specisic order (by DisplayName). So my diagram of the process consist of sequential Service task which hadler looks like:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><pre class="jive-pre"><code class="jive-code jive-java"><font color="navy"><b>public</b></font> <font color="navy"><b>class</b></font> EventActionHandler <font color="navy"><b>implements</b></font> WorkItemHandler <font color="navy">{</font>
&#160;&#160;&#160; @Override
&#160;&#160;&#160; <font color="navy"><b>public</b></font> <font color="navy"><b>void</b></font> executeWorkItem(WorkItem workItem, WorkItemManager workItemManager) <font color="navy">{</font>
&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; String displayName= (String) workItem.getParameter(<font color="red">"DisplayName"</font>);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; Map&lt;String, EventAction&gt; actions = ( Map&lt;String, EventAction&gt;)&#160; workItem.getParameter(<font color="red">"actions"</font>);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy"><b>try</b></font> <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (actions.get(displayName)).run();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println(<font color="red">"run "</font>+displayName+<font color="red">" done"</font>);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font> <font color="navy"><b>catch</b></font> (Exception e) <font color="navy">{</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; System.out.println(<font color="red">"Exception "</font>+displayName+<font color="red">" : "</font> + e);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <font color="navy">}</font>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; workItemManager.completeWorkItem(workItem.getId(),<font color="navy"><b>null</b></font>);
&#160;&#160;&#160; <font color="navy">}</font>
...
 <font color="navy">}</font>
</code></pre><p> So each Service Task has it display name and this display name defines order . All works fine. I even can debug it. But now I want to see current status of the process -which one Service Task is executing now.</p><p> I what to use for it JBPM console. I have configured all war-s from jbpm-installer_5.3.0 to use my Oracle schema. And I can see my process in JBPM Console -&gt; process-&gt; Process Overview .</p><p>But I whant to see current instances of such processes. As I understand (to store in DB nessesary data for process instancess) I should do steps described in :</p><p>jbpm-5.3.0.Final-docs/jbpm-docs/html_single/index.html</p><h2 class="title"><a class="jive-link-anchor-small">19.3. Spring</a></h2><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>After words :</p><p><a class="jive-link-anchor-small">The following example shows a slightly more complex example, where the session is configured to use persistence (JPA using an in-memory database) and transaction (using the Spring transaction manager).</a></p><p>I've done it and my configuration is:</p><pre class="jive-pre"><code class="jive-code jive-xml"><span class="jive-xml-tag">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
<span class="jive-xml-tag"><span>&lt;beans xmlns="</span><a class="jive-link-external-small" href="http://www.springframework.org/schema/beans" target="_blank">http://www.springframework.org/schema/beans</a><span>"
&#160;&#160;&#160;&#160;&#160;&#160; xmlns:xsi="</span><a class="jive-link-external-small" href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a><span>"
&#160;&#160;&#160;&#160;&#160;&#160; xmlns:jbpm="</span><a class="jive-link-external-small" href="http://drools.org/schema/drools-spring" target="_blank">http://drools.org/schema/drools-spring</a><span>"
&#160;&#160;&#160;&#160;&#160;&#160; xsi:schemaLocation="</span><a class="jive-link-external-small" href="http://www.springframework.org/schema/beans" target="_blank">http://www.springframework.org/schema/beans</a><span> </span><a class="jive-link-external-small" href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" target="_blank">http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</a><span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><a class="jive-link-external-small" href="http://drools.org/schema/drools-spring" target="_blank">http://drools.org/schema/drools-spring</a><span> </span><a class="jive-link-external-small" href="http://drools.org/schema/drools-spring.xsd" target="_blank">http://drools.org/schema/drools-spring.xsd</a><span> "&gt;</span></span>
&#160; 
&#160;&#160;&#160; <span class="jive-xml-tag">&lt;bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;property name="dataSource" ref="dataSource"/&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;property name="persistenceUnitName" value="org.jbpm.persistence.jpa"/&gt;</span>
&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/bean&gt;</span>

&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;bean id="JPAtxManager" class="org.springframework.orm.jpa.JpaTransactionManager"&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;property name="entityManagerFactory" ref="entityManagerFactory"/&gt;</span>
&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/bean&gt;</span>

&#160;&#160;&#160; <span class="jive-xml-tag">&lt;jbpm:kbase id="kbase"&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;jbpm:resources&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;jbpm:resource type="BPMN2" source="classpath:Events.bpmn"/&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/jbpm:resources&gt;</span>
&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/jbpm:kbase&gt;</span>
&#160;&#160;&#160; <span class="jive-xml-tag">&lt;jbpm:ksession id="ksession" type="stateful" kbase="kbase"&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;jbpm:configuration&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;jbpm:work-item-handlers&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;jbpm:work-item-handler name="Event Action" ref="eventActionHandler"/&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/jbpm:work-item-handlers&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;jbpm:jpa-persistence&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;jbpm:transaction-manager ref="JPAtxManager"/&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;jbpm:entity-manager-factory ref="entityManagerFactory"/&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/jbpm:jpa-persistence&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/jbpm:configuration&gt;</span>
&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/jbpm:ksession&gt;</span>

&#160;&#160;&#160; <span class="jive-xml-tag">&lt;bean id="eventActionHandler" class="com.example.events.EventActionHandler"&gt;</span>
&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/bean&gt;</span>
<span class="jive-xml-tag">&lt;/beans&gt;</span>
</code></pre><p>As you can see I use the same datasource as used in my application .</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>My persistance file is:</p><pre class="jive-pre"><code class="jive-code jive-xml"><span class="jive-xml-tag">&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;</span>
<span class="jive-xml-tag"><span>&lt;persistence version="1.0"
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; xsi:schemaLocation="</span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence" target="_blank">http://java.sun.com/xml/ns/persistence</a><span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" target="_blank">http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd</a><span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence/orm" target="_blank">http://java.sun.com/xml/ns/persistence/orm</a><span> 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" target="_blank">http://java.sun.com/xml/ns/persistence/orm_1_0.xsd</a><span>"
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns:orm="</span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence/orm" target="_blank">http://java.sun.com/xml/ns/persistence/orm</a><span>"
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns:xsi="</span><a class="jive-link-external-small" href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a><span>"
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; xmlns="</span><a class="jive-link-external-small" href="http://java.sun.com/xml/ns/persistence" target="_blank">http://java.sun.com/xml/ns/persistence</a><span>"&gt;</span></span>

&#160; <span class="jive-xml-tag">&lt;persistence-unit name="org.jbpm.persistence.jpa" &gt;</span>
&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;provider&gt;</span>org.hibernate.ejb.HibernatePersistence<span class="jive-xml-tag">&lt;/provider&gt;</span>
&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;mapping-file&gt;</span>META-INF/JBPMorm.xml<span class="jive-xml-tag">&lt;/mapping-file&gt;</span>
&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;mapping-file&gt;</span>META-INF/ProcessInstanceInfo.hbm.xml<span class="jive-xml-tag">&lt;/mapping-file&gt;</span>

&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;class&gt;</span>org.drools.persistence.info.SessionInfo<span class="jive-xml-tag">&lt;/class&gt;</span>
&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;class&gt;</span>org.jbpm.persistence.processinstance.ProcessInstanceInfo<span class="jive-xml-tag">&lt;/class&gt;</span>
&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;class&gt;</span>org.drools.persistence.info.WorkItemInfo<span class="jive-xml-tag">&lt;/class&gt;</span>

&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;properties&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;property name="hibernate.max_fetch_depth" value="3"/&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;property name="hibernate.hbm2ddl.auto" value="update"/&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;property name="hibernate.show_sql" value="false"/&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/&gt;</span>
&#160;&#160;&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/properties&gt;</span>
&#160;&#160;&#160;&#160; <span class="jive-xml-tag">&lt;/persistence-unit&gt;</span>
 <span class="jive-xml-tag">&lt;/persistence&gt;</span>
</code></pre><p>When I launch JBOSS I can&#160; see:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>19:24:14,006 WARN&#160; [org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager] (eventProcessingTimerFactoryBean) Unable to begin transaction: java.lang.NullPointerException</p><p>&#160;&#160;&#160; at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:696) [spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE]</p><p>&#160;&#160;&#160; at org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.getStatus(DroolsSpringTransactionManager.java:131) [drools-spring-5.4.0.Final.jar:5.4.0.Final]</p><p>&#160;&#160;&#160; at org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:45) [drools-spring-5.4.0.Final.jar:5.4.0.Final]</p><p>&#160;&#160;&#160; at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347) [drools-persistence-jpa-5.4.0.Final.jar:5.4.0.Final]</p><p>&#160;&#160;&#160; at org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223) [drools-core-5.4.0.Final.jar:5.4.0.Final]</p><p>&#160;&#160;&#160; at com.example.EventHandlerImpl.EventHandlerImpl.handleEvent(EventHandlerImpl.java:84) [classes:]</p><p>&#160;&#160;&#160; at sun.reflect.GeneratedMethodAccessor658.invoke(Unknown Source) [:1.6.0_29]</p><p>&#160;&#160;&#160; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [rt.jar:1.6.0_29]</p><p>&#160;&#160;&#160; at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_29]</p><p>&#160;&#160;&#160;&#160; ...</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>19:24:14,065 ERROR [org.drools.persistence.SingleSessionCommandService] (eventProcessingTimerFactoryBean) Could not commit session: java.lang.RuntimeException: Unable to begin transaction</p><p>&#160;&#160;&#160; at org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:56) [drools-spring-5.4.0.Final.jar:5.4.0.Final]</p><p>&#160;&#160;&#160; at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347) [drools-persistence-jpa-5.4.0.Final.jar:5.4.0.Final]</p><p>&#160;&#160;&#160; at org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223) [drools-core-5.4.0.Final.jar:5.4.0.Final]</p><p>&#160;&#160;&#160;&#160; at om.example.EventHandlerImpl.EventHandlerImpl.handleEvent(EventHandlerImpl.java:84) [classes:]</p><p>&#160;&#160;&#160; ...</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Caused by: java.lang.NullPointerException</p><p>&#160;&#160;&#160; at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:696) [spring-tx-3.1.1.RELEASE.jar:3.1.1.RELEASE]</p><p>&#160;&#160;&#160; at org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.getStatus(DroolsSpringTransactionManager.java:131) [drools-spring-5.4.0.Final.jar:5.4.0.Final]</p><p>&#160;&#160;&#160; at org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:45) [drools-spring-5.4.0.Final.jar:5.4.0.Final]</p><p>&#160;&#160;&#160; ... 40 more</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>19:24:17,761 ERROR [stderr] (eventProcessingTimerFactoryBean) java.lang.RuntimeException: Unable to begin transaction</p><p>19:24:17,765 ERROR [stderr] (eventProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:56)</p><p>19:24:17,767 ERROR [stderr] (eventProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at org.drools.persistence.SingleSessionCommandService.execute(SingleSessionCommandService.java:347)</p><p>19:24:17,769 ERROR [stderr] (eventProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at org.drools.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:223)</p><p>..</p><p>19:24:17,771 ERROR [stderr] (eventProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at eterra.ca.core.gate.alternative.impl.GateEventHandlerImpl.handleGateEventJBPM(GateEventHandlerImpl.java:141)</p><p>19:24:17,775 ERROR [stderr] (eventProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at eterra.ca.core.gate.alternative.impl.GateEventHandlerImpl.handleGateEvent(GateEventHandlerImpl.java:84)</p><p>19:24:17,777 ERROR [stderr] (eventProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at sun.reflect.GeneratedMethodAccessor658.invoke(Unknown Source)</p><p>19:24:17,779 ERROR [stderr] (eventProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)</p><p>19:24:17,781 ERROR [stderr] (eventProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at java.lang.reflect.Method.invoke(Method.java:597)</p><p>19:24:17,841 ERROR [stderr] (gateProcessingTimerFactoryBean) Caused by: java.lang.NullPointerException</p><p>19:24:17,842 ERROR [stderr] (gateProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:696)</p><p>19:24:17,844 ERROR [stderr] (gateProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.getStatus(DroolsSpringTransactionManager.java:131)</p><p>19:24:17,846 ERROR [stderr] (gateProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; at org.drools.container.spring.beans.persistence.DroolsSpringTransactionManager.begin(DroolsSpringTransactionManager.java:45)</p><p>19:24:17,847 ERROR [stderr] (gateProcessingTimerFactoryBean)&#160;&#160;&#160;&#160; ... 40 more</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>So what should I do with it? Looks like problems is in two dirfferent transaction managers.&#160; How can I configure in spring to use one TM for both application and JBPM stuff?</p><p>Looks like &lt;jbpm:configuration&gt; has only &lt;jbpm:jpa-persistence&gt; tag inside ? How can I configure my application in right way?</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/757060#757060">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>