I got a bit further on this: it appears that for 5.1 there are a couple of extra mapped classes:<br><br>&lt;class&gt;org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo&lt;/class&gt;    &lt;class&gt;org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable&lt;/class&gt;<br>
<br>This got me much further, but no success yet: the tables are created in the database, but apparently at the point some data is inserted an error occurs, see below.<br>I&#39;ve updated BTM to 1.3.3, but that didn&#39;t help.<br>
<br>Any ideas? <br>Thanks, <br>Nol<br><br>Mar 25, 2010 11:00:33 PM bitronix.tm.journal.DiskJournal open<br>WARNING: active log file is unclean, previous server crash ?<br>Mar 25, 2010 11:00:33 PM bitronix.tm.recovery.Recoverer run<br>
INFO: recovery committed 0 dangling transaction(s) and rolled back 0 aborted transaction(s) on 1 resource(s) [jdbc/processInstanceDS] (restricted to serverId &#39;192.168.178.32&#39;)<br>line 2:47 mismatched character &#39;&lt;EOF&gt;&#39; expecting &#39;\n&#39;<br>
Hibernate: insert into SessionInfo (dirty, lastModificationDate, rulesByteArray, startDate) values (?, ?, ?, ?)<br>Mar 25, 2010 11:00:35 PM bitronix.tm.BitronixTransaction fireAfterCompletionEvent<br>WARNING: Synchronization.afterCompletion() call failed for a DeferredReleaseSynchronization of a JdbcPooledConnection from datasource jdbc/processInstanceDS in state NOT_ACCESSIBLE wrapping com.mysql.jdbc.jdbc2.optional.JDBC4MysqlXAConnection@1d3c66d8<br>
java.lang.IllegalArgumentException: null source<br>    at java.util.EventObject.&lt;init&gt;(EventObject.java:38)<br>    at javax.sql.StatementEvent.&lt;init&gt;(StatementEvent.java:39)<br>    at com.mysql.jdbc.jdbc2.optional.JDBC4PreparedStatementWrapper.close(JDBC4PreparedStatementWrapper.java:70)<br>
    at bitronix.tm.resource.jdbc.JdbcPooledConnection.stateChanging(JdbcPooledConnection.java:205)<br>    at bitronix.tm.resource.common.AbstractXAStatefulHolder.fireStateChanging(AbstractXAStatefulHolder.java:61)<br>    at bitronix.tm.resource.common.AbstractXAStatefulHolder.setState(AbstractXAStatefulHolder.java:30)<br>
    at bitronix.tm.resource.common.DeferredReleaseSynchronization.afterCompletion(DeferredReleaseSynchronization.java:33)<br>    at bitronix.tm.BitronixTransaction.fireAfterCompletionEvent(BitronixTransaction.java:416)<br>
    at bitronix.tm.BitronixTransaction.rollback(BitronixTransaction.java:227)<br>    at bitronix.tm.BitronixTransactionManager.rollback(BitronixTransactionManager.java:104)<br>    at org.drools.persistence.session.SingleSessionCommandService.&lt;init&gt;(SingleSessionCommandService.java:128)<br>
    at org.drools.persistence.jpa.impl.JPAKnowledgeServiceProviderImpl.newStatefulKnowledgeSession(JPAKnowledgeServiceProviderImpl.java:44)<br>    at org.drools.persistence.jpa.JPAKnowledgeService.newStatefulKnowledgeSession(JPAKnowledgeService.java:93)<br>
    at pilot.tests.DroolFlowPersistenceTest.main(DroolFlowPersistenceTest.java:60)<br>java.lang.RuntimeException: Could not commit session<br>    at org.drools.persistence.session.SingleSessionCommandService.&lt;init&gt;(SingleSessionCommandService.java:133)<br>
    at org.drools.persistence.jpa.impl.JPAKnowledgeServiceProviderImpl.newStatefulKnowledgeSession(JPAKnowledgeServiceProviderImpl.java:44)<br>    at org.drools.persistence.jpa.JPAKnowledgeService.newStatefulKnowledgeSession(JPAKnowledgeService.java:93)<br>
    at pilot.tests.DroolFlowPersistenceTest.main(DroolFlowPersistenceTest.java:60)<br>Caused by: java.lang.IllegalArgumentException: null source<br>    at java.util.EventObject.&lt;init&gt;(EventObject.java:38)<br>    at javax.sql.StatementEvent.&lt;init&gt;(StatementEvent.java:39)<br>
    at com.mysql.jdbc.jdbc2.optional.JDBC4PreparedStatementWrapper.close(JDBC4PreparedStatementWrapper.java:70)<br>    at org.hibernate.jdbc.AbstractBatcher.closePreparedStatement(AbstractBatcher.java:563)<br>    at org.hibernate.jdbc.AbstractBatcher.closeStatement(AbstractBatcher.java:291)<br>
    at org.hibernate.id.insert.AbstractReturningDelegate.releaseStatement(AbstractReturningDelegate.java:82)<br>    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:60)<br>
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2186)<br>    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2666)<br>    at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)<br>
    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)<br>    at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)<br>    at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)<br>
    at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)<br>    at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)<br>
    at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)<br>    at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)<br>
    at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)<br>    at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:645)<br>    at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:619)<br>
    at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:623)<br>    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)<br>    at org.drools.persistence.session.SingleSessionCommandService.&lt;init&gt;(SingleSessionCommandService.java:118)<br>
    ... 3 more<br><br><br><br><br><br><br><div class="gmail_quote">On Thu, Mar 25, 2010 at 5:47 PM, Nol de Wit <span dir="ltr">&lt;<a href="mailto:noldewit@gmail.com">noldewit@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi,<br>
<br>
(using Droolw Flow 5.1.M1)<br>
<br>
I&#39;ve made a reasonably simple Drool Flow model, containing a ForEach,<br>
a split and  and a couple of actions. Without Persistence it works<br>
nicely: I start it with one variable/parameter, a class I call Report<br>
with 4 Lines of data . Each of the lines get&#39;s worked on correctly in<br>
the ForEach.<br>
<br>
Next I want to add Persistence to the model; I made a persistence.xml,<br>
which is based on the one as shown in chapter 5 of the online Drools<br>
Flow documentation. See below.<br>
<br>
I changed the H2 db to a mysql DB.<br>
<br>
The firs call (after creating the datasource) in my test now gives an<br>
exception. See the call and exception below.<br>
<br>
1) what&#39;s wrong? I think my persistence.xml is correct. So what is the<br>
error trying to tell me? Is saying that I should map my parameters<br>
data (Report and Line)? I just read an article from salaboy about<br>
variable persistence 5.1, but I&#39;m not using that...<br>
<br>
2) What puzzles me is the link between the persistence.xml (containing<br>
mapping info), and the datasource (containing the credentials of the<br>
DB). In the doc and PerformanceTest.java class in the examples I don&#39;t<br>
see any link. Is creating the DataSource enough to get it in JNDI?<br>
<br>
Thanks,<br>
Nol<br>
<br>
<br>
Some of my code and config:<br>
<br>
// See makeDataSource() below<br>
PoolingDataSource ds = makeDataSource();<br>
<br>
// this call gives an exception:<br>
EntityManagerFactory emf =<br>
        Persistence.createEntityManagerFactory( &quot;nl.dnb.avb.drools.jpa&quot; );<br>
<br>
<br>
25-mrt-2010 14:30:00 org.hibernate.cfg.AnnotationBinder bindClass<br>
INFO: Binding entity from annotated class:<br>
org.drools.persistence.processinstance.WorkItemInfo<br>
25-mrt-2010 14:30:00 org.hibernate.cfg.annotations.EntityBinder bindTable<br>
INFO: Bind entity org.drools.persistence.processinstance.WorkItemInfo<br>
on table WorkItemInfo<br>
javax.persistence.PersistenceException: [PersistenceUnit:<br>
nl.dnb.avb.drools.jpa] Unable to configure EntityManagerFactory<br>
        at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:265)<br>
        at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)<br>
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)<br>
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)<br>
        at pilot.tests.DroolFlowPersistenceTest.main(DroolFlowPersistenceTest.java:41)<br>
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or<br>
@ManyToMany targeting an unmapped class:<br>
org.drools.persistence.processinstance.ProcessInstanceInfo.variables[org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo]<br>
        at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1071)<br>
        at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:602)<br>
        at org.hibernate.cfg.annotations.MapBinder$1.secondPass(MapBinder.java:79)<br>
<br>
<br>
Persistence.xml:<br>
<br>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;<br>
&lt;persistence<br>
  version=&quot;1.0&quot;<br>
  xsi:schemaLocation=<br>
    &quot;<a href="http://java.sun.com/xml/ns/persistence" target="_blank">http://java.sun.com/xml/ns/persistence</a><br>
     <a 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><br>
     <a href="http://java.sun.com/xml/ns/persistence/orm" target="_blank">http://java.sun.com/xml/ns/persistence/orm</a><br>
     <a 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>&quot;<br>
  xmlns:orm=&quot;<a href="http://java.sun.com/xml/ns/persistence/orm" target="_blank">http://java.sun.com/xml/ns/persistence/orm</a>&quot;<br>
  xmlns:xsi=&quot;<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>&quot;<br>
  xmlns=&quot;<a href="http://java.sun.com/xml/ns/persistence" target="_blank">http://java.sun.com/xml/ns/persistence</a>&quot;&gt;<br>
<br>
  &lt;persistence-unit name=&quot;nl.dnb.avb.drools.jpa&quot;&gt;<br>
    &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt;<br>
    &lt;jta-data-source&gt;jdbc/processInstanceDS&lt;/jta-data-source&gt;<br>
    &lt;class&gt;org.drools.persistence.session.SessionInfo&lt;/class&gt;<br>
    &lt;class&gt;org.drools.persistence.processinstance.ProcessInstanceInfo&lt;/class&gt;<br>
    &lt;class&gt;org.drools.persistence.processinstance.ProcessInstanceEventInfo&lt;/class&gt;<br>
    &lt;class&gt;org.drools.persistence.processinstance.WorkItemInfo&lt;/class&gt;<br>
<br>
    &lt;properties&gt;<br>
      &lt;!--  property name=&quot;hibernate.dialect&quot;<br>
value=&quot;org.hibernate.dialect.H2Dialect&quot;/ --&gt;<br>
      &lt;property name=&quot;hibernate.dialect&quot;<br>
value=&quot;org.hibernate.dialect.MySQLDialect&quot;/&gt;<br>
      &lt;property name=&quot;hibernate.max_fetch_depth&quot; value=&quot;3&quot;/&gt;<br>
      &lt;property name=&quot;hibernate.hbm2ddl.auto&quot; value=&quot;update&quot;/&gt;<br>
      &lt;property name=&quot;hibernate.show_sql&quot; value=&quot;true&quot;/&gt;<br>
      &lt;property name=&quot;hibernate.transaction.manager_lookup_class&quot;<br>
                value=&quot;org.hibernate.transaction.BTMTransactionManagerLookup&quot;/&gt;<br>
    &lt;/properties&gt;<br>
  &lt;/persistence-unit&gt;<br>
&lt;/persistence&gt;<br>
<br>
<br>
<br>
        private static PoolingDataSource makeDataSource() {<br>
<br>
                PoolingDataSource ds = new PoolingDataSource();<br>
                ds.setUniqueName(&quot;jdbc/processInstanceDS&quot;);<br>
                ds.setClassName(&quot;com.mysql.jdbc.jdbc2.optional.MysqlXADataSource&quot;);<br>
                ds.setMaxPoolSize(3);<br>
                ds.setAllowLocalTransactions(true);<br>
                ds.getDriverProperties().put(&quot;user&quot;, &quot;drools&quot;);<br>
                ds.getDriverProperties().put(&quot;password&quot;, &quot;drools&quot;);<br>
                ds.getDriverProperties().put(&quot;URL&quot;, &quot;jdbc:mysql://DNB35362:3306/drools&quot;);<br>
                ds.init();<br>
<br>
                return ds;<br>
<br>
        }<br>
</blockquote></div><br>