0

奇妙な行動が起こっています。

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_ | 説明_| VERSION_ | ISTERMINATIONIMPLICIT_ | STARTSTATE_ |
+ ----- + -------- + ----------------------------- + ---- ---------- + ---------- + ------------------------ + --- ---------- +
| 1 | P | Enkeltanledning | NULL | 1 | | 1 |
| 2 | P | Enkeltanledning | NULL | 2 | | 31 |

今、私はこのリンクを見つけました: jpdl そしてそれは言う:

名前のないプロセス定義のバージョン番号は常に-1になります。

ただし、プロセス定義に名前が付いていません。templateDefinitionをデバッグすると、正しい名前Enkeltanledningが取得されるため、ロードされたのは正しいjpdlファイルであることがわかります。

だから私の質問は、なぜ私のコードはバージョンで常に-1を返すのですか?バージョンが正しい必要がある理由は、バージョンが正しいかどうかを確認するためにいくつかのチェックを行っているためです。そうでない場合は、ProcessDefinitionを再デプロイし、常に-1を取得するため、常に再デプロイされます。

4

1 に答える 1

1

私は答えを見つけました。

これは、データベースを照会する代わりに、ファイルからProcessDefinitionを読み取っているためです。コードをこれに変更すると解決しました

@In
JbpmContext jbpmContext;

ProcessDefinition templateDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition(processDefName);
于 2009-08-20T15:40:41.780 に答える