Jbpm ProcessDefinition tiene siempre la versión -1
Pregunta
Tengo un comportamiento extraño está pasando.
Estoy utilizando Seam y JBPM. Cuando digo:
ProcessDefinition templateDefinition = Jbpm.instance().getProcessDefinitionFromResource(ap.getJpdl());
//This will return Enkeltanledning.jpdl.xml
templateDefinition.getVersion();
Es siempre devuelve -1. Sin embargo, cuando selecciono la base de datos, consigo la versión 2.
mysql> select * from JBPM_PROCESSDEFINITION; +-----+--------+-----------------------------+--------------+----------+------------------------+-------------+ | ID_ | CLASS_ | NAME_ | DESCRIPTION_ | VERSION_ | ISTERMINATIONIMPLICIT_ | STARTSTATE_ | +-----+--------+-----------------------------+--------------+----------+------------------------+-------------+ | 1 | P | Enkeltanledning | NULL | 1 | | 1 | | 2 | P | Enkeltanledning | NULL | 2 | | 31 |
Ahora, he encontrado este enlace: jPDL Y dice:
Unnamed process definitions will always have version number -1.
Sin embargo, tengo mis definiciones de procesos no tienen nombre, y cuando puedo depurar templateDefinition consigo el nombre correcto Enkeltanledning , así que sé que es el archivo jPDL correcta que se ha cargado.
Así que mi pregunta es, ¿por qué mi código siempre devuelven -1 en la versión? La razón por la que necesito la versión correcta, se debe a que estoy haciendo algunas comprobaciones para ver si tengo la versión correcta, Otherwize voy a volver a implementar el ProcessDefinition, y desde siempre me -1, siempre va a volver a implementar.
Solución
He encontrado la respuesta.
Su porque estoy leyendo el ProcessDefinition desde el archivo en lugar de quering la base de datos. Cambiar el código a este resolvió
@In
JbpmContext jbpmContext;
ProcessDefinition templateDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefName);