Jbpm ProcessDefinition总是版本-1

时间:2009-08-20 15:18:51

标签: seam jbpm

我有一种奇怪的行为。

我正在使用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 个答案:

答案 0 :(得分:1)

我找到了答案。

因为我正在从文件中读取ProcessDefinition而不是查询数据库。将代码更改为此解决了它

@In
JbpmContext jbpmContext;

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