「全体を見る」ためのビジネスプロセス・BPMの常識:企業システムの常識をJBossで身につける(11)(3/4 ページ)
企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!
jPDLのグラフィカルインターフェイスでプロセス定義
今回作成した「processdefinition.xml」は、「jPDL」と呼ばれ、プロセス定義言語を定義するXMLファイルです。jPDLには、優れたグラフィカルインターフェイスが用意されており、複雑なページフローを扱う際に大いに役立ちます。
プロセス定義ファイルをグラフィカルに確認
実際にグラフィカルなイメージを確認するため、サンプルとして自動生成された「src/main/jpdl/simple/processdefinition.xml」を開きます。
上記の画面が表示されグラフィカルなイメージが確認できたと思います。これがサンプルアプリのプロセス定義です。
プロセス定義ファイルをコードで確認
これだけでは分かりづらいので、XMLのソースコードを見てみましょう。
<?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="simple"> <start-state name="start"> <transition name="to_state" to="first"> <action name="action" class="com.sample.action.MessageActionHandler"> <message>Going to the first state!</message> </action> </transition> </start-state> <state name="first"> <transition name="to_end" to="end"> <action name="action" class="com.sample.action.MessageActionHandler"> <message>About to finish!</message> </action> </transition> </state> <end-state name="end"></end-state> </process-definition>
このソースコードでは、各プロセスを定義しています。この「プロセス」というものは、ビジネスの処理フローを指しており、jPDLによって記述されています。各プロセスのxmlタグとDiagramの紐付けを以下に示します。
この中で以下のコードを確認してください。
<action name="action" class="com.sample.action.MessageActionHandler">
これは、サンプル用に作成したMessageActionHandlerのアクションを実行することを定義しています。
アクション実行クラスのコードを確認
MessageActionHandlerのソースを見てみましょう。
package com.sample.action; import org.jbpm.graph.def.ActionHandler; import org.jbpm.graph.exe.ExecutionContext; public class MessageActionHandler implements ActionHandler { private static final long serialVersionUID = 1L; /** * The message member gets its value from the configuration in the * processdefinition. The value is injected directly by the engine. */ String message; /** * A message process variable is assigned the value of the message * member. The process variable is created if it doesn't exist yet. */ public void execute(ExecutionContext context) throws Exception { context.getContextInstance().setVariable("message", message); } }
このMessageActionHandlerは、jBPMのActionHandlerインターフェイスを実装しています。プロセスのステートが遷移する際に、executeメソッドが実行される仕組みです。executeメソッドの引数であるExecutionContextに実行時のプロセス定義の情報が格納されています。サンプルでは、「message」をキーにメッセージを取得しています。
サンプルを作成した際に、生成されたSimpleProcessTestでは、processdefinition.xmlの値を読み込んで、各プロセスの検証テストを実装しています。実際に、JUnitテストを実行して確認してみてください。
以下は、今回作成したサンプルアプリのフローです。
- start MessageActionHandlerをコール
- first MessageActionHandlerをコール
- end
サンプルを動かして検証するための準備
では、どのようにしてサンプルを確認するのでしょうか? 作成したサンプルをデプロイして、サーバ上で動作を確認してみましょう。実際に、Webブラウザ上からサンプルアプリを動かすことで、本稿のコンセプトである「見える化」が分かると思います。
サーバ起動
今回インストールした、「C:\Program Files\jbpm-jpdl-3.2.3\server」にあるstart.batをダブルクリックします。すると、コマンドプロンプト上に、サーバ起動のログが出力されます。
サーバが起動したらEclipseで「processdefinition.xml」を開き、[Deployment]を選択します。[Deployment]の画面が開いたら、[TestConnection]ボタンを押します。
テストコネクションで問題がなければ、「successfully」のダイアログが表示されます。
サンプルのデプロイと実行・ログイン・
続いて、デプロイです。画面の[Deploy Process Archive]ボタンを押します。問題がなければ、「successfully」のダイアログが表示されます。
デプロイが完了したら、Webブラウザで「http://localhost:8080/jbpm-console/sa/processes.jsf」にアクセスします。
ここでは、[UserName][Password]に「manager」と入力してログインします。ログインが済み、jBPMコンソール画面に遷移したら、今回デプロイした「simple」が表示されています。
これは、「processdefinition.xml」で定義しているプロセス名です。次ページで、デプロイしたサンプルアプリを検証してみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.