検索
連載

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

企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎!

PC用表示 関連情報
Share
Tweet
LINE
Hatena

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.

ページトップに戻る