JBPM ProcessDefinition sempre versão -1
Pergunta
Eu tenho um comportamento estranho acontecendo.
Estou usando costura e jbpm. Quando eu digo:
ProcessDefinition templateDefinition = Jbpm.instance().getProcessDefinitionFromResource(ap.getJpdl());
//This will return Enkeltanledning.jpdl.xml
templateDefinition.getVersion();
Sempre retorna -1. No entanto, quando seleciono no banco de dados, recebo a versão 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 |
Agora, encontrei este link:jpdlE diz:
Unnamed process definitions will always have version number -1.
No entanto, tenho minhas definições de processo não são sem nome, e quando eu depurar a Sulatefinition, recebo o nome correto Enkeltanledning , então eu sei que é o arquivo JPDL correto que foi carregado.
Então, minha pergunta é: por que meu código sempre retorna -1 na versão? A razão pela qual eu preciso que a versão esteja correta é porque estou fazendo algumas verificações para ver se tenho a versão correta, o outro lado irei reimplantar a definição do Process e, como sempre recebo -1, ela sempre será reimplantada.
Solução
Eu encontrei a resposta.
É porque estou lendo o ProcessDefinition a partir do arquivo em vez de garantir o banco de dados. Alterar o código para isso resolveu
@In
JbpmContext jbpmContext;
ProcessDefinition templateDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefName);