2009-08-20 76 views
0

我有一個奇怪的行爲正在進行。Jbpm ProcessDefinition始終爲-1

我正在使用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版本? 我之所以需要版本是正確的,是因爲我正在做一些檢查,看看我是否擁有正確的版本,otherwize我將重新部署ProcessDefinition,並且由於我總是獲得-1,因此它將始終重新部署。

回答

1

我找到了答案。

因爲我正在從文件讀取ProcessDefinition而不是查詢數據庫。更改代碼解決了它

@In 
JbpmContext jbpmContext; 

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