2009-08-20 5 views
0

Ich habe ein merkwürdiges Verhalten.Jbpm ProcessDefinition hat immer Version -1

Ich benutze Seam und JBPM. Wenn ich sage:

ProcessDefinition templateDefinition = Jbpm.instance().getProcessDefinitionFromResource(ap.getJpdl()); 
//This will return Enkeltanledning.jpdl.xml 
templateDefinition.getVersion(); 

Es gibt immer -1. Allerdings, wenn ich aus der Datenbank auswählen, erhalte ich Version 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 | 

Nun fand ich diesen Link: jpdl Und er sagt:

Unnamed process definitions will always have version number -1.

Ich habe jedoch meine Prozessdefinitionen sind nicht unbenannt, und wenn ich templateDefinition debuggen bekomme ich den richtigen Namen Enkeltanledning, so weiß ich, es ist die richtige jpdl-Datei, die geladen wurde.

Also meine Frage ist, warum gibt mein Code immer -1 in der Version zurück? Der Grund, warum ich die Version brauche, um korrekt zu sein, ist, weil ich einige Überprüfungen mache, um zu sehen, ob ich die richtige Version habe, anderswo werde ich die ProcessDefinition erneut bereitstellen, und da ich immer -1 bekomme, wird es immer neu bereitstellen.

Antwort

1

Ich fand die Antwort.

Das ist, weil ich die ProcessDefinition aus der Datei lese, anstatt die Datenbank abzufragen. Ändern des Codes zu diesem löste es

@In 
JbpmContext jbpmContext; 

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