JBossjBPMを使用してビジネスプロセスを管理します

企業は、ビジネスアクション/トランザクションを設計し、できれば自動化されたプロセスを使用してそれらを実行するための構造化されたアプローチを熱心に探してきました。ビジネスプロセス管理(BPM)とワークフロー管理は、アクション、タスク、フローなどの概念を使用して、この問題の解決策を提供します。

この記事では、BPMを紹介し、JBossjBPMを使用したBPMとワークフロー管理でエンタープライズシステムを強化するための手法とツールについて説明します。

ビジネスプロセス管理という用語は通常、動的に変化する環境に適応できる方法でビジネスプロセスを自動化および最適化するために企業が採用できる一連のアクティビティを指します。これらの活動は通常、ソフトウェアエンジニアリングとツールの助けを求めています。したがって、BPMという用語は、エンジニアリング手法やツールを指すために直接使用されることがよくあります。

BPMは、次の3つの異なるプラクティスで具体化されます。

  1. プロセス設計:既存および新規のプロセスを設計するタスク
  2. プロセスの実行:ソフトウェアプロセスおよび/または人間の活動を含む関連イベントの自動シーケンスの実行
  3. プロセスの監視:個々のプロセスの状態の監視と監査。これにより、これらのプロセスの統計とパフォーマンスを記録、報告、および最適化できます。

BPMは、ソフトウェアエンジニアがビジネスアナリストと同じ概念とフレームワークを共有できるようにすることを目指しています。その結果、ソフトウェアベンダーは、グラフィカルモデリングツール、ドメイン固有言語、および独自のアプリケーションを採用することで、企業がビジネスプロセスをキャプチャ、設計、および最適化できるツールの作成を試みました。

JBoss jBPM 3.0は、ビジネスプロセス実行言語(BPEL)、柔軟でプラグ可能なAPI、ネイティブプロセス定義言語、およびグラフィカルモデリングツールを使用して、業界標準のオーケストレーションで新しい自動化されたビジネスプロセスとワークフローを開発する機能を提供します。

JBoss jBPMは、Java API、ツール、およびWebアプリケーションまたはスタンドアロンJavaアプリケーションとして動作できる定義言語のオープンソース(LGPLライセンス)フレームワークです。JBoss jBPMは、jPDLと呼ばれる共通のプロセス定義言語を提供することにより、ビジネスアナリストと開発者の間の仲介役として機能します。

JBossjBPMアーキテクチャの概要

JBoss jBPMは、JBossプロセス定義言語を使用して書き込まれたファイル内でプロセス定義を定義します。jPDLは、ノード、遷移、およびアクションのモデルに基づくグラフィック指向プログラミング(GOP)言語です。このモデルでは、ノードはプロセス定義のフロー中に検出されたときに実行されるコマンドです。遷移はプロセス定義の実行フローを指示し、アクションはノードまたは遷移イベントが発生したときに特定のロジックを実行します。

jBPMでは、プロセス定義はプロセスアーカイブとしてパッケージ化されています。プロセスアーカイブは、実行のためにjPDLプロセスエンジンに渡されます。jPDLプロセスエンジンは、プロセスグラフをトラバースし、定義されたアクションを実行し、プロセス状態を維持し、すべてのプロセスイベントをログに記録します。

JBoss jBPMは、次のコンポーネント内にカプセル化されています。

  • プロセスエンジン:このコンポーネントは、定義されたプロセスアクションを実行し、プロセス状態を維持し、次のデリゲートコンポーネントを介してすべてのプロセスイベントをログに記録します。
    • リクエストハンドラ
    • 状態管理者
    • ログマネージャー
    • 定義ローダー
    • 実行サービス
  • プロセスモニター:このモジュールは、プロセスの実行時にプロセスの状態を追跡、監査、および報告します
  • プロセス言語:プロセス定義言語(jPDL)はGOPに基づいています
  • インタラクションサービス:これらのサービスは、プロセスの実行で使用される関数またはデータとしてレガシーアプリケーションを公開します

これらのコンポーネント間の関係を図1に示します。

図1に示すように、アクションハンドラーを含むjBPMプロセス定義は、jBPMプロセスエンジンによってロードおよび実行されます。プロセスエンジンが、アクションが関連付けられているプロセス定義内のノードを検出すると、関連するすべてのアクションハンドラーが呼び出されます。アクションハンドラは、実行時に外部システムと対話するJavaコードのインスタンスです。

以下は、単純なアクションハンドラーの例です。

import org.jbpm.graph.def.*; import org.jbpm.graph.exe.*;

public class MyActionHandler implements ActionHandler { public void execute(ExecutionContext executionContext) { System.out.println("MyActionHandler has executed: " + executionContext); } }

プロセスアーカイブ内のPDLファイルの名前はprocess-definition.xmlです。このファイルには、プロセスの正式な説明が含まれています。次の例に、process-definition.xmlファイルの例を示します。

プロセス定義は、有向グラフに基づいています。グラフは、ノード、遷移、1つの開始状態、および1つの終了状態で構成されます。各ノードのタイプは、ノードの実行時の動作を定義します。プロセス定義の実行中に、次のエンティティが機能します。

  • プロセスインスタンス:プロセスインスタンスは、プロセス定義の1回の実行です。
  • トークン:トークンは実行の1つのパスです。トークンは、グラフ内のノードへのポインターを維持するランタイムの概念です。プロセスインスタンスが作成されると、実行のメインパス用のトークンが作成されます。このトークンはプロセスインスタンスのルートトークンと呼ばれ、プロセス定義の開始状態に配置されます。
  • シグナル:シグナルは、ノードからの遷移によってグラフの実行を継続するようにトークンに指示します。
  • ノード:ノードは、グラフの実行の継続を担当します。トークンがノードに入ると、ノードが実行されます。実行を伝播しないノードは状態と見なされます。
  • アクション:アクションは、プロセスの実行中にイベントが発生したときに実行されるJavaコードのインスタンスです。主なイベントタイプは、「ノードに入る」、「ノードを離れる」、「遷移する」です。

プロセス定義は、jBPMグラフィカルモデリングデザイナを使用して簡単に作成できます。デザイナは現在、Eclipseプラグインとしてインストールされています。図2は、グラフィカルモデリングデザイナのサンプル画面を示しています。

グラフィカルデザイナを使用して、プロセス定義の作成、イベントへのアクションハンドラのアタッチ、定義ソースの編集、プロセスアーカイブの作成、プロセス定義のテストなどを行うことができます。

JBossjBPMのデプロイ

JBoss jBPMは、プロセス定義をデータベースに格納します。したがって、プロセスをJBoss jBPMにデプロイするには、process-definition.xmlを解析し、JBossjBPMデータベースに保存する必要があります。これは次の方法で実行できます。

  • parJBossjBPMに付属のAntタスクを使用してプロセスアーカイブを作成します。
  • deployparユーティリティを使用します。このユーティリティは、プロセスアーカイブを作成し、プロセスアーカイブをjBPMデータベースに展開します。deployparユーティリティは、jBPM.propertiesファイルを属性として受け取ります。このファイルは、プロセスアーカイブが展開されるデータベースを含む構成オプションを指定します。
  • process-definition.xmlをプログラムで解析してデータストアに保存します。

いくつかの簡単なペースでJBossjBPMを実行する

JBoss jBPM acts as an orchestration engine that sits in the middle of enterprise applications, enabling integration and coordination between different applications.

For this article, I use the sample deployment shipped with jBPM to discuss how jBPM and jPDL are used to create and modify a simple Web-enabled order processing system.

Downloading JBoss jBPM

The JBoss jBPM starter kit contains everything needed to execute JBoss jBPM, with the exception of a JDK. The JBoss Application Server in the JBoss jBPM starter kit requires J2SE 1.4 or a more recent version.

After you have downloaded the starter kit, unzip it to a directory of your choosing. Once you have unzipped the starter kit, you will have a directory structure similar to the following:

  • Jbpm-starters-kit-3.1
    • jbpm: Contains the source code for the JBoss jBPM product
    • jbpm-bpel: Contains information about the BPEL extension for JBoss jBPM
    • jbpm-db: Contains sample configurations for connecting JBoss jBPM to other databases
    • jbpm-designer: Contains the Eclipse plug-in for the JBoss jBPM Visual Process Designer
    • jbpm-server: Contains the JBoss Application Server along with the JBoss jBPM engine and the sample process

Execute the JBoss jBPM engine

To start the JBoss application server with jBPM deployed, go to the jbpm-server directory and execute the startup script found there. A command window should pop up with the jBPM console window, similar to Figure 3.

Now, bring up a browser window and go to //localhost:8080/jbpm. You will be presented with the login page for the sample Web application for JBoss jBPM, shown in Figure 4.

クッキーモンスターとしてログインし、[新しいWeb販売注文の作成]リンクを選択します。これにより、図5に示すように、構築済みの「Web販売」プロセスの新しいインスタンスが作成されます。

実際の定義ファイルprocessdefinition.xmlは、websale.parにあり、次のリストに示されています。