Re: [rules-users] Problems with persistence of drools-flow

2009-08-05 Thread Michal Bali
Hi Martin,

I think that em.persist only updates the entity context (hibernate session).
The DB is updated only after you commit transaction. So it looks like the
transactions are not being committed in your case. That would be my guess.

Best regards
Michal


On Tue, Aug 4, 2009 at 9:14 AM, Ševčík Martin masev...@cpoj.cz wrote:

 I have a simple flow with human task and I want to persist it into
 database. I'm using MSSQL DB.

 My code is like this:

KnowledgeBase kbase = readKnowledgeBase();
// create the entity manager factory and register it
 in the environment
EntityManagerFactory emf =
Persistence.createEntityManagerFactory(
 org.drools.persistence.jpa );
Environment env =
 KnowledgeBaseFactory.newEnvironment();
env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf
 );
BitronixTransactionManager btm =
 TransactionManagerServices.getTransactionManager();
env.set( EnvironmentName.TRANSACTION_MANAGER, btm);

StatefulKnowledgeSession ksession =
JPAKnowledgeService.newStatefulKnowledgeSession(
 kbase, null, env );

KnowledgeRuntimeLogger logger =
 KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, test);

  ksession.getWorkItemManager().registerWorkItemHandler(Human Task, new
 WSHumanTaskHandler());
// start a new process instance
MapString,Object data = new
 HashMapString,Object();
data.put(data3, new MyTask(1,This is taks 1));
ProcessInstance pi =
 ksession.startProcess(com.sample.ruleflow,data);
logger.close();

 But when i run it, it end up with this error and there is nothing in the
 database (the tables were created, but there are all empty):

 java.lang.NullPointerException
at
 org.drools.persistence.processinstance.ProcessInstanceInfo.getId(ProcessInstanceInfo.java:70)
at
 org.drools.persistence.processinstance.JPAProcessInstanceManager.addProcessInstance(JPAProcessInstanceManager.java:34)
at
 org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1620)
at
 org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:46)
at
 org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:10)
at
 org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:229)
at
 org.drools.process.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:163)
at
 com.sample.RuleFlowPersistenceTest.main(RuleFlowPersistenceTest.java:74)
 java.lang.RuntimeException: Could not rollback transaction
at
 org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:258)
at
 org.drools.process.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:163)
at
 com.sample.RuleFlowPersistenceTest.main(RuleFlowPersistenceTest.java:74)
 Caused by: java.lang.RuntimeException: Could not execute command
at
 org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:255)
... 2 more
 Caused by: java.lang.NullPointerException
at
 org.drools.persistence.processinstance.ProcessInstanceInfo.getId(ProcessInstanceInfo.java:70)
at
 org.drools.persistence.processinstance.JPAProcessInstanceManager.addProcessInstance(JPAProcessInstanceManager.java:34)
at
 org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1620)
at
 org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:46)
at
 org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:10)
at
 org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:229)
... 2 more

 In JPAProcessInstanceManager.java there this method is called:

public void addProcessInstance(ProcessInstance processInstance) {
ProcessInstanceInfo processInstanceInfo = new ProcessInstanceInfo(
 processInstance );
EntityManager em = (EntityManager)
 this.workingMemory.getEnvironment().get( EnvironmentName.ENTITY_MANAGER );
em.persist( processInstanceInfo );
((ProcessInstance) processInstance).setId(
 processInstanceInfo.getId() );
processInstanceInfo.updateLastReadDate();
internalAddProcessInstance(processInstance);
}


 But em.persist does nothing, no connection do DB is called. And then the
  next line will fail.




 Can anybody help me.

 Thanks

 Martin Sevcik

 ___
 rules-users mailing list
 

[rules-users] Problems with persistence of drools-flow

2009-08-04 Thread Ševčík Martin
I have a simple flow with human task and I want to persist it into database. 
I'm using MSSQL DB. 

My code is like this:

KnowledgeBase kbase = readKnowledgeBase();
// create the entity manager factory and register it in 
the environment
EntityManagerFactory emf =
Persistence.createEntityManagerFactory( 
org.drools.persistence.jpa );
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf );
BitronixTransactionManager btm = 
TransactionManagerServices.getTransactionManager();
env.set( EnvironmentName.TRANSACTION_MANAGER, btm);

StatefulKnowledgeSession ksession =
JPAKnowledgeService.newStatefulKnowledgeSession( 
kbase, null, env );

KnowledgeRuntimeLogger logger = 
KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, test);

ksession.getWorkItemManager().registerWorkItemHandler(Human Task, new 
WSHumanTaskHandler());
// start a new process instance
MapString,Object data = new HashMapString,Object();
data.put(data3, new MyTask(1,This is taks 1));
ProcessInstance pi = 
ksession.startProcess(com.sample.ruleflow,data);
logger.close();

But when i run it, it end up with this error and there is nothing in the 
database (the tables were created, but there are all empty):

java.lang.NullPointerException
at 
org.drools.persistence.processinstance.ProcessInstanceInfo.getId(ProcessInstanceInfo.java:70)
at 
org.drools.persistence.processinstance.JPAProcessInstanceManager.addProcessInstance(JPAProcessInstanceManager.java:34)
at 
org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1620)
at 
org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:46)
at 
org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:10)
at 
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:229)
at 
org.drools.process.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:163)
at 
com.sample.RuleFlowPersistenceTest.main(RuleFlowPersistenceTest.java:74)
java.lang.RuntimeException: Could not rollback transaction
at 
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:258)
at 
org.drools.process.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:163)
at 
com.sample.RuleFlowPersistenceTest.main(RuleFlowPersistenceTest.java:74)
Caused by: java.lang.RuntimeException: Could not execute command
at 
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:255)
... 2 more
Caused by: java.lang.NullPointerException
at 
org.drools.persistence.processinstance.ProcessInstanceInfo.getId(ProcessInstanceInfo.java:70)
at 
org.drools.persistence.processinstance.JPAProcessInstanceManager.addProcessInstance(JPAProcessInstanceManager.java:34)
at 
org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1620)
at 
org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:46)
at 
org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:10)
at 
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:229)
... 2 more

In JPAProcessInstanceManager.java there this method is called:

public void addProcessInstance(ProcessInstance processInstance) {
ProcessInstanceInfo processInstanceInfo = new ProcessInstanceInfo( 
processInstance );
EntityManager em = (EntityManager) 
this.workingMemory.getEnvironment().get( EnvironmentName.ENTITY_MANAGER );
em.persist( processInstanceInfo );
((ProcessInstance) processInstance).setId( processInstanceInfo.getId() 
);
processInstanceInfo.updateLastReadDate();
internalAddProcessInstance(processInstance);
}


But em.persist does nothing, no connection do DB is called. And then the  next 
line will fail.




Can anybody help me.

Thanks

Martin Sevcik

___
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


[rules-users] Problems with persistence of drools-flow

2009-07-16 Thread Ševčík Martin
I have a simple flow with human task and I want to persist it into database. 
I'm using MSSQL DB. 

My code is like this:

KnowledgeBase kbase = readKnowledgeBase();
// create the entity manager factory and register it in 
the environment
EntityManagerFactory emf =
Persistence.createEntityManagerFactory( 
org.drools.persistence.jpa );
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf );
BitronixTransactionManager btm = 
TransactionManagerServices.getTransactionManager();
env.set( EnvironmentName.TRANSACTION_MANAGER, btm);

StatefulKnowledgeSession ksession =
JPAKnowledgeService.newStatefulKnowledgeSession( 
kbase, null, env );

KnowledgeRuntimeLogger logger = 
KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, test);

ksession.getWorkItemManager().registerWorkItemHandler(Human Task, new 
WSHumanTaskHandler());
// start a new process instance
MapString,Object data = new HashMapString,Object();
data.put(data3, new MyTask(1,This is taks 1));
ProcessInstance pi = 
ksession.startProcess(com.sample.ruleflow,data);
logger.close();

But when i run it, it end up with this error and there is nothing in the 
database (the tables were created, but there are all empty):

java.lang.NullPointerException
at 
org.drools.persistence.processinstance.ProcessInstanceInfo.getId(ProcessInstanceInfo.java:70)
at 
org.drools.persistence.processinstance.JPAProcessInstanceManager.addProcessInstance(JPAProcessInstanceManager.java:34)
at 
org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1620)
at 
org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:46)
at 
org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:10)
at 
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:229)
at 
org.drools.process.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:163)
at 
com.sample.RuleFlowPersistenceTest.main(RuleFlowPersistenceTest.java:74)
java.lang.RuntimeException: Could not rollback transaction
at 
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:258)
at 
org.drools.process.command.impl.CommandBasedStatefulKnowledgeSession.startProcess(CommandBasedStatefulKnowledgeSession.java:163)
at 
com.sample.RuleFlowPersistenceTest.main(RuleFlowPersistenceTest.java:74)
Caused by: java.lang.RuntimeException: Could not execute command
at 
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:255)
... 2 more
Caused by: java.lang.NullPointerException
at 
org.drools.persistence.processinstance.ProcessInstanceInfo.getId(ProcessInstanceInfo.java:70)
at 
org.drools.persistence.processinstance.JPAProcessInstanceManager.addProcessInstance(JPAProcessInstanceManager.java:34)
at 
org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1620)
at 
org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:46)
at 
org.drools.process.command.StartProcessCommand.execute(StartProcessCommand.java:10)
at 
org.drools.persistence.session.SingleSessionCommandService.execute(SingleSessionCommandService.java:229)
... 2 more

In JPAProcessInstanceManager.java there this method is called:

public void addProcessInstance(ProcessInstance processInstance) {
ProcessInstanceInfo processInstanceInfo = new ProcessInstanceInfo( 
processInstance );
EntityManager em = (EntityManager) 
this.workingMemory.getEnvironment().get( EnvironmentName.ENTITY_MANAGER );
em.persist( processInstanceInfo );
((ProcessInstance) processInstance).setId( processInstanceInfo.getId() 
);
processInstanceInfo.updateLastReadDate();
internalAddProcessInstance(processInstance);
}


But em.persist does nothing, no connection do DB is called. And then the  next 
line will fail.




Can anybody help me.

Thanks

Martin Sevcik

___
rules-users mailing list
rules-users@lists.jboss.org
http://lists.jboss.org/mailman/listinfo/rules-users