プロセス定義のバージョニング

jBPMではプロセス定義(ProcessDefinition)もDBで管理する。いくつか理由はあると思うけど、このプロセス定義のバージョン管理が一番の動機かな。プロセス名をkeyとしてversionを管理する。jBPMの場合は、プロセス定義したらデプロイしてプロセスを実行可能状態にする。(やっていることは、parファイル(jPDL定義(xml))をhibernate経由でjBPM DBに展開することが主な機能)。このデプロイ時にversionをカウントアップ。

例えば、プロセスがいくつか実行中(長期間プロセスetc)な状態で、プロセスを会社の方針で来月から変更したい、でも、途中なものは既存のプロセス定義(フロー)のままで終了状態になるまで続けたい、また、プロセス内容が変わるからといって別プロセスとして管理したくない、といったケースに対応できるのがこのバージョニング管理機能。

ちなみに一度、デプロイすると最新versionのものが常に適用されることになる。この場合は、version1,あの場合はversion2といった使い方はしない。できない。あと前もってのプロセス登録もできない。来月からこのプロセス定義で実行する、といったことはできない。

ちなみにundeployする場合はコレを記述する。

ProcessDefinition pd = jbpmContext.getGraphSession().findLatestProcessDefinition(process.getName());
jbpmContext.getGraphSession().deleteProcessDefinition(pd);	

関連するテーブルのほとんどを<<物理>>削除する。何でもかんでも論理削除まんせーとは言わないけど、ちょっとこわい。。

うーん、jBPMの場合は、こういう制御ができる管理コンソールみたいなものも用意してあげないときついなぁ。FeatureList行き.