Jbpm ProcessDefinition всегда имеет версию -1 - PullRequest
0 голосов
/ 20 августа 2009

У меня странное поведение.

Я использую Seam и 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.

Тем не менее, у меня есть определения процессов, не названные, и когда я отлаживаю templateDefinition, я получаю правильное имя Enkeltanledning , поэтому я знаю, что загружен правильный файл jpdl.

Итак, мой вопрос: почему мой код всегда возвращает -1 в версии? Причина, по которой мне нужна верная версия, заключается в том, что я делаю некоторые проверки, чтобы убедиться, что у меня правильная версия, в противном случае я буду повторно развертывать ProcessDefinition, и, поскольку я всегда получаю -1, он всегда будет повторно развертываться.

1 Ответ

1 голос
/ 20 августа 2009

Я нашел ответ.

Это потому, что я читаю ProcessDefinition из файла, а не запрашиваю базу данных. Изменение кода на это решило это

@In
JbpmContext jbpmContext;

ProcessDefinition templateDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefName);
...