2009-08-20 3 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을 반환합니까? 올바른 버전이 필요한 이유는 올바른 버전인지, 다른 버전으로 ProcessDefinition을 재배포할지, 그리고 항상 -1을 얻었 기 때문에 항상 재배포 될 것이므로 몇 가지 검사를하고 있기 때문입니다.

답변

1

답변을 찾았습니다.

데이터베이스를 쿼리하는 대신 파일에서 ProcessDefinition을 읽고 있기 때문입니다. 코드를 변경하면 해결됨

@In 
JbpmContext jbpmContext; 

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