連載
» 2010年09月02日 00時00分 公開

企業システムの常識をJBossで身につける(11):「全体を見る」ためのビジネスプロセス・BPMの常識 (3/4)

[相原淳, 多田丈晃, 上川伸彦,株式会社ビーブレイクシステムズ]

jPDLのグラフィカルインターフェイスでプロセス定義

 今回作成した「processdefinition.xml」は、「jPDL」と呼ばれ、プロセス定義言語を定義するXMLファイルです。jPDLには、優れたグラフィカルインターフェイスが用意されており、複雑なページフローを扱う際に大いに役立ちます。

プロセス定義ファイルをグラフィカルに確認

 実際にグラフィカルなイメージを確認するため、サンプルとして自動生成された「src/main/jpdl/simple/processdefinition.xml」を開きます。

図11 「processdefinition.xml」の[Diagram] 図11 「processdefinition.xml」の[Diagram]

 上記の画面が表示されグラフィカルなイメージが確認できたと思います。これがサンプルアプリのプロセス定義です。

プロセス定義ファイルをコードで確認

 これだけでは分かりづらいので、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>
コード1 processdefinition.xml

 このソースコードでは、各プロセスを定義しています。この「プロセス」というものは、ビジネスの処理フローを指しており、jPDLによって記述されています。各プロセスのxmlタグとDiagramの紐付けを以下に示します。

図12 xmlタグとDiagramの関連 図12 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);
    }
}
コード2 MessageActionHandlerクラス

 この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をダブルクリックします。すると、コマンドプロンプト上に、サーバ起動のログが出力されます。

図13 start.bat実行画面 図13 start.bat実行画面

 サーバが起動したらEclipseで「processdefinition.xml」を開き、[Deployment]を選択します。[Deployment]の画面が開いたら、[TestConnection]ボタンを押します。

図14 [Deployment]画面 図14 [Deployment]画面

 テストコネクションで問題がなければ、「successfully」のダイアログが表示されます。

サンプルのデプロイと実行・ログイン・

 続いて、デプロイです。画面の[Deploy Process Archive]ボタンを押します。問題がなければ、「successfully」のダイアログが表示されます。

 デプロイが完了したら、Webブラウザで「http://localhost:8080/jbpm-console/sa/processes.jsf」にアクセスします。

図15 jBPMコンソールログイン画面 図15 jBPMコンソールログイン画面

 ここでは、[UserName][Password]に「manager」と入力してログインします。ログインが済み、jBPMコンソール画面に遷移したら、今回デプロイした「simple」が表示されています。

図16 jBPMコンソール画面 図16 jBPMコンソール画面

 これは、「processdefinition.xml」で定義しているプロセス名です。次ページで、デプロイしたサンプルアプリを検証してみましょう。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。