JBoss jBPMを試そう!
第4回:プロセス定義からJavaクラスを呼び出す仕組み
著者:レッドハット 三木 雄平
公開日:2008/02/21(木)
イベント定義
プロセス定義とカスタムJavaクラスができましたのでいよいよ、イベントの定義になります。今回はstateNodeを出た後にJavaクラスが呼び出される様にイベントを定義します。
jBPMグラフィカルデザイナのプロセス定義フィールド上のstateNodeを選択し、下段のPropertiesウィンドウでEventsを右クリックで選択肢、New Eventを作成します。Event Typeには「after-signal」を選びます。再度、右クリックでNew Actionを選択し、GeneralタブのNameフィールドで適当なAction名を指定します。今回は「afterStateNode」とします。これでイベントの定義が完了しました。
続いてこのイベントから先ほど作成したTestActionHanderを呼び出すように設定します。
Propertiesウィンドウで先ほど作成した「afterStateNode」を選択し、Detailsタブをクリックします。Detailsタブ上のセレクトボックスでHanderを選択し、ClassNameに先ほど作成した、test.TestHandlerクラスを指定します(図3)。これでSimpleProcessからTestHandlerクラスを呼び出すことができるようになりました。
(画像をクリックすると別ウィンドウに拡大図を表示します)
実行
では、いよいよ定義できたSimpleProcessを動かしてみることにしましょう。
最初に記載したとおり、今回はJava SE環境でjBPMを動かしますので、このSimpleProcessを読み込んで操作するProcessWorkerクラスを実装することにします。
このProcessWorkerクラスはプロセス定義を読み込み、そこに定義されているノードを進めていくだけの簡単なプログラムです。
TestHandlerクラスを定義した要領でリスト2のProcessWorkerクラスを定義し、jBPMグラフィカルデザイナの「Run → Run → Java Aplication」でProcessWorkerクラスを実行します。うまく実行された場合、jBPMグラフィカルデザイナ下段のConsoleウィンドウにデバッグ情報と共に、各ノード名とTestHandlerクラスから出力されたメッセージが表示されます。
今回はシンプルなプロセス定義とjavaクラスを利用してjBPMのプロセス定義からJavaクラスを呼び出す方法を解説しました。本記事を理解いた方々は、ぜひさらに複雑なプロセス定義から、複雑なJavaクラスを呼び出すことにチャレンジしてみてください。その際、今回プロセス定義の実行に利用したProcessWorkerクラスは便利なテストツールとなるはずです。