OK : that was the mistake !

Muchisimas gracias !

Now i have another problem with the java code : the main program keeps a 
reference on the current process instance, its root token, etc. When the timer 
has fired and the transition has been activated as expected (since it works !), 
the persistent state seems broken, and an exception is thrown, chen the context 
is closed...

How the main java program can protected itself from external changes like 
timers execution ?

Here the partial stack trace :


  | org.jbpm.persistence.JbpmPersistenceException: couldn't commit hibernate 
session
  |     at 
org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:171)
  |     at org.jbpm.svc.Services.close(Services.java:211)
  |     at org.jbpm.JbpmContext.close(JbpmContext.java:141)
  |     at my.wf.five.Main.main(Main.java:101)
  | 

... and the java code :


  |                 System.out.println("Starting scheduler...");
  |             Scheduler scheduler = new Scheduler();
  |             scheduler.setInterval(5000);
  |             scheduler.setHistoryMaxSize(50);
  |             scheduler.start();
  |             System.out.println("Scheduler started...");
  | 
  |             JbpmConfiguration jbpmConfiguration = 
JbpmConfiguration.getInstance();
  | 
  |             String myProcessDefinitionResourceName = "my/wf/five/BP5.xml";
  |             ProcessDefinition processDefinition = 
ProcessDefinition.parseXmlResource(myProcessDefinitionResourceName);
  |             JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
  |             try {
  |                     jbpmContext.deployProcessDefinition(processDefinition);
  |             }
  |             finally {
  |                     jbpmContext.close();
  |             }
  | 
  |             ProcessInstance processInstance = null;
  | 
  |             System.out.println("=== Sans timer...");
  |             jbpmContext = jbpmConfiguration.createJbpmContext();
  |             try {
  |                     processInstance = new 
ProcessInstance(processDefinition);
  | 
  |                     Token token = processInstance.getRootToken();
  | 
  |                     token.signal();
  |                     jbpmContext.save(processInstance);
  |                     System.out.println("\tapres signal 1 : " + 
token.getNode().getFullyQualifiedName());
  |             }
  |             finally {
  |                     jbpmContext.close();
  |             }
  | 
  |             jbpmContext = jbpmConfiguration.createJbpmContext();
  |             try {
  |                     Token token = processInstance.getRootToken();
  |                     token.signal();
  |                     jbpmContext.save(processInstance);
  |                     System.out.println("\tapres signal 2 : " + 
token.getNode().getFullyQualifiedName());
  |             }
  |             finally {
  |                     jbpmContext.close();
  |             }
  | 
  |             jbpmContext = jbpmConfiguration.createJbpmContext();
  |             try {
  |                     Token token = processInstance.getRootToken();
  |                     token.signal();
  |                     jbpmContext.save(processInstance);
  |                     System.out.println("\tapres signal 3 : " + 
token.getNode().getFullyQualifiedName());
  |             }
  |             finally {
  |                     jbpmContext.close();
  |             }
  | 
  |             System.out.println("=== Avec timer...");
  |             jbpmContext = jbpmConfiguration.createJbpmContext();
  |             try {
  |                     processInstance = new 
ProcessInstance(processDefinition);
  | 
  |                     Token token = processInstance.getRootToken();
  | 
  |                     token.signal();
  |                     jbpmContext.save(processInstance);
  |                     System.out.println("\tapres signal 1 : " + 
token.getNode().getFullyQualifiedName());
  |             }
  |             finally {
  |                     jbpmContext.close();
  |             }
  | 
  |             {
  |                     Thread.sleep(10000);
  |                     Token token = processInstance.getRootToken();
  |                     System.out.println("\tapres sleep  2 : " + 
token.getNode().getFullyQualifiedName());
  |             }
  | 
  |             jbpmContext = jbpmConfiguration.createJbpmContext();
  |             try {
  |                     Token token = processInstance.getRootToken();
  |                     token.signal();
  |                     jbpmContext.save(processInstance);
  |                     System.out.println("\tapres signal 3 : " + 
token.getNode().getFullyQualifiedName());
  |             }
  |             finally {
  |                     jbpmContext.close();
  |             }
  | 
  |             scheduler.stop();
  |             System.out.println("OK !!!");
  | 

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3949895#3949895

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3949895


_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to