Community

Starting a BusinessProcess out of a PageFlow

reply from Heri Bender in jBPM - View the full discussion

Hi Alejandro

 

Thanks that you want to have a closer look.

 

Attached an archive of a project which shows the problem (remark: it was a bit too big. I removed the lib jars from todoList/WebContent/WEB-INF/lib. I assume, you can add them manually again)

 

It is a seam generated ear project, in fact the todoList-Demo of seam 2.2. jBPM is version 3.2.5, the Project was maintained in JBossDevStudio 3.0.

 


The problem arises when deploying:

 


12:24:05.223 (3853197) ERROR [HDScanner] org.jbpm.jpdl.xml.JpdlXmlReader - couldn't parse process definition
java.lang.NullPointerException
    at org.jbpm.graph.node.DbSubProcessResolver.findSubProcess(DbSubProcessResolver.java:43)
    at org.jboss.seam.bpm.Jbpm$SeamSubProcessResolver.findSubProcess(Jbpm.java:374)
    at org.jbpm.graph.node.ProcessState.read(ProcessState.java:90)
    at org.jbpm.jpdl.xml.JpdlXmlReader.readNodes(JpdlXmlReader.java:261)
    at org.jboss.seam.bpm.PageflowParser.readNodes(PageflowParser.java:41)
    at org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:157)
    at org.jboss.seam.bpm.Jbpm.parseInputSource(Jbpm.java:359)
    at org.jboss.seam.bpm.Jbpm.getPageflowDefinitionFromResource(Jbpm.java:165)
    at org.jboss.seam.bpm.Jbpm.installPageflowDefinitions(Jbpm.java:278)

 

    at org.jboss.seam.bpm.Jbpm.startup(Jbpm.java:81)

 

...
         
When stepping through the code I can see that the DbSubProcessResolver.findSubProcess() method does not get a GraphSession (line 43), because I forgot to include the
    <service name="persistence" factory="org.jbpm.persistence.db.DbPersistenceServiceFactory" />
line in jbpm.cfg.xml. Astonishing, because before the ProcessDefinition was entered successfully into DB

 

After I have added this line, the error occurs already before above code is executed:

 

ERROR [main   ] org.jbpm.persistence.db.DbPersistenceService - hibernate commit failed
org.hibernate.TransactionException: Transaction not successfully started                                   
    at org.hibernate.transaction.JTATransaction.commit(JTATransaction.java:134)                        
    at org.jbpm.persistence.db.DbPersistenceService.commit(DbPersistenceService.java:266)              
    at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:222) 
....                                                                                     

 


Analyzing the log shows that now different persistence handlers are involved:

 


Log-Output (without having declared persistence-service -> Error is no GraphSession):
--------------------------------------------------------------------------------------

 

INFO  [HDScanner] org.jboss.logging.Logger.info(Logger.java:296) - JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces}
DEBUG [HDScanner] org.jbpm.persistence.jta.JtaDbPersistenceService.beginUserTransaction(JtaDbPersistenceService.java:74) - begin user transaction
DEBUG [HDScanner] org.jbpm.persistence.db.DbPersistenceService.getSession(DbPersistenceService.java:104) - using current hibernate session
INFO  [HDScanner] org.jboss.logging.util.LoggerStream.write(LoggerStream.java:156) - Hibernate: select processdef0_.ID_ as ID1_224_, processdef0_.NAME_ as NAME3_224_, processdef0_.DESCRIPTION_ as DESCRIPT4_224_, processdef0_.VERSION_ as VERSION5_224_, processdef0_.ISTERMINATIONIMPLICIT_ as ISTERMIN6_224_, processdef0_.STARTSTATE_ as STARTSTATE7_224_ from JBPM_PROCESSDEFINITION processdef0_ where processdef0_.NAME_=? order by processdef0_.VERSION_ desc limit ?
INFO  [HDScanner] org.jboss.logging.util.LoggerStream.write(LoggerStream.java:156) - Hibernate: insert into JBPM_PROCESSDEFINITION (NAME_, DESCRIPTION_, VERSION_, ISTERMINATIONIMPLICIT_, STARTSTATE_, CLASS_) values (?, ?, ?, ?, ?, 'P')
  ...
INFO  [HDScanner] org.jboss.logging.util.LoggerStream.write(LoggerStream.java:156) - Hibernate: insert into JBPM_MODULEDEFINITION (NAME_, PROCESSDEFINITION_, STARTTASK_, CLASS_) values (?, ?, ?, 'T')
DEBUG [HDScanner] org.jbpm.JbpmContext.close(JbpmContext.java:125) - closing jbpmContext org.jbpm.JbpmContext@5de3bd
DEBUG [HDScanner] org.jbpm.persistence.jta.JtaDbPersistenceService.endUserTransaction(JtaDbPersistenceService.java:92) - committing user transaction
INFO  [HDScanner] org.jboss.logging.util.LoggerStream.write(LoggerStream.java:156) - Hibernate: update JBPM_PROCESSDEFINITION set NAME_=?, DESCRIPTION_=?, VERSION_=?, ISTERMINATIONIMPLICIT_=?, STARTSTATE_=? where ID_=?
...
INFO  [HDScanner] org.jboss.logging.util.LoggerStream.write(LoggerStream.java:156) - Hibernate: update JBPM_TRANSITION set TO_=? where ID_=?
DEBUG [HDScanner] org.jbpm.configuration.JbpmContextInfo.createObject(JbpmContextInfo.java:145) - creating jbpm context with service factories '[]'
DEBUG [HDScanner] org.jbpm.JbpmContext.<init>(JbpmContext.java:115) - creating org.jbpm.JbpmContext@1499884
DEBUG [HDScanner] org.jbpm.configuration.JbpmContextInfo.createObject(JbpmContextInfo.java:145) - creating jbpm context with service factories '[]'
DEBUG [HDScanner] org.jbpm.JbpmContext.<init>(JbpmContext.java:115) - creating org.jbpm.JbpmContext@9fa838
ERROR [HDScanner] org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:168) - couldn't parse process definition
org.dom4j.DocumentException: Read error Nested exception: Read error
    at org.dom4j.io.SAXReader.read(SAXReader.java:484)
    at org.jbpm.jpdl.xml.JpdlParser.parse(JpdlParser.java:66)
    at org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:142)
    at org.jboss.seam.bpm.Jbpm.parseInputSource(Jbpm.java:359)
...

 


Log-Output (without having declared persistence-service -> error arise somewhere in the persistence handlers):
-------------------------------------------------------------------------------------------------------------
   
DEBUG [main   ] org.jbpm.persistence.db.DbPersistenceService - creating hibernate session
DEBUG [main   ] org.jbpm.persistence.db.DbPersistenceService - beginning hibernate transaction
DEBUG [main   ] org.jbpm.persistence.db.DbPersistenceService - begun hibernate transaction org.hibernate.transaction.JTATransaction@8422f0
INFO  [main   ] STDOUT - Hibernate: select processdef0_.ID_ as ID1_0_, processdef0_.NAME_ as NAME3_0_, processdef0_.DESCRIPTION_ as DESCRIPT4_0_, processdef0_.VERSION_ as VERSION5_0_, processdef0_.ISTERMINATIONIMPLICIT_ as ISTERMIN6_0_, processdef0_.STARTSTATE_ as STARTSTATE7_0_ from JBPM_PROCESSDEFINITION processdef0_ where processdef0_.NAME_=? order by processdef0_.VERSION_ desc limit ?
...
INFO  [main   ] STDOUT - Hibernate: insert into JBPM_MODULEDEFINITION (NAME_, PROCESSDEFINITION_, STARTTASK_, CLASS_) values (?, ?, ?, 'T')
DEBUG [main   ] org.jbpm.JbpmContext - closing jbpmContext org.jbpm.JbpmContext@13f557
DEBUG [main   ] org.jbpm.persistence.db.DbPersistenceService - committing org.hibernate.transaction.JTATransaction@8422f0
INFO  [main   ] STDOUT - Hibernate: update JBPM_PROCESSDEFINITION set NAME_=?, DESCRIPTION_=?, VERSION_=?, ISTERMINATIONIMPLICIT_=?, STARTSTATE_=? where ID_=?
...
INFO  [main   ] STDOUT - Hibernate: update JBPM_TRANSITION set TO_=? where ID_=?
DEBUG [main   ] org.jbpm.persistence.db.DbPersistenceService - closing hibernate session
DEBUG [main   ] org.jbpm.persistence.db.DbPersistenceService - committing org.hibernate.transaction.JTATransaction@8422f0
ERROR [main   ] org.jbpm.persistence.db.DbPersistenceService - hibernate commit failed
org.hibernate.TransactionException: Transaction not successfully started
    at org.hibernate.transaction.JTATransaction.commit(JTATransaction.java:134)
    at org.jbpm.persistence.db.DbPersistenceService.commit(DbPersistenceService.java:266)
    at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:222)
    at org.jbpm.svc.Services.close(Services.java:294)
    at org.jbpm.JbpmContext.close(JbpmContext.java:136)
    at org.jboss.seam.bpm.Jbpm.installProcessDefinitions(Jbpm.java:304)
    at org.jboss.seam.bpm.Jbpm.startup(Jbpm.java:80)

Reply to this message by going to Community

Start a new discussion in jBPM at Community