JBPM ProcessDefinition всегда имеет версию -1
Вопрос
У меня происходит странное поведение.
Я использую шов и jbpm. Когда я сказал:
ProcessDefinition templateDefinition = Jbpm.instance().getProcessDefinitionFromResource(ap.getJpdl());
//This will return Enkeltanledning.jpdl.xml
templateDefinition.getVersion();
Он всегда возвращает -1. Однако, когда я выбираю из базы данных, я получаю версию 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 |
Теперь я нашел эту ссылку:JPDLИ это говорит:
Unnamed process definitions will always have version number -1.
Тем не менее, у меня есть определения моего процесса не являются неназванными, и когда я отлаживаю TemplatedFinition, я получаю правильное имя Enkeltanning Поэтому я знаю, что это правильный файл JPDL, который был загружен.
Итак, мой вопрос: почему мой код всегда возвращает -1 в версии? Причина, по которой мне нужна версия, заключается в том, что я делаю некоторые проверки, чтобы увидеть, есть ли у меня правильная версия, я буду передать перераспределение процесса определения, и, поскольку я всегда получаю -1, она всегда будет переделал.
Решение
Я нашел ответ.
Это потому, что я читаю процесс определения из файла вместо того, чтобы запросить базу данных. Изменение кода на это решило
@In
JbpmContext jbpmContext;
ProcessDefinition templateDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefName);