JBPM ProcessDefinition ha sempre la versione -1
Domanda
Ho uno strano comportamento in corso.
Sto usando Seam e jBPM. Quando dico:
ProcessDefinition templateDefinition = Jbpm.instance().getProcessDefinitionFromResource(ap.getJpdl());
//This will return Enkeltanledning.jpdl.xml
templateDefinition.getVersion();
Si restituisce sempre -1. Tuttavia, quando si seleziona dal database, ottengo la versione 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 |
Ora, ho trovato questo link: jPDL E dice:
Unnamed process definitions will always have version number -1.
Tuttavia, ho le mie definizioni di processo non sono senza nome, e quando il debug templateDefinition ottengo il nome corretto Enkeltanledning , quindi so che è il file jPDL corretto che è stato caricato.
Quindi la mia domanda è, perché il mio codice restituisce sempre -1 nella versione? Il motivo per cui ho bisogno la versione di essere corretta, è perché sto facendo alcuni controlli per vedere se ho la versione corretta, Otherwize io ridistribuire il ProcessDefinition, e dato che ho sempre -1, sarà sempre ridistribuire.
Soluzione
ho trovato la risposta.
Il suo perché sto leggendo il ProcessDefinition dal file invece che quering database. Cambiare il codice per questo risolto
@In
JbpmContext jbpmContext;
ProcessDefinition templateDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefName);