Jbpm5-quick-guide

提供:Dev Guides
移動先:案内検索

jBPM5-概要

JBPMは「Java Business Process Management」の略です。 これは、オープンソースフレームワークであるJBoss製品です。 先に進む前に、まずビジネスプロセスを定義しましょう。

ビジネスプロセスとは

定義上、ビジネスプロセスとは、反復可能な順序で実行される一連のタスクであり、人間やシステムによって実行されてビジネス目標を達成します。 一連のステップを実行する必要がある順序を(フローチャートを使用して)説明します。 ビジネスプロセスは、ビジネスロジックの可視性と俊敏性を大幅に向上させることができます。

例を挙げましょう。 次のスクリーンショットは、ほとんどのITプロフェッショナルが関係できるワークフロー/フローチャートを示しています。 ほとんどの組織では、従業員のパフォーマンスに基づいて評価するのが一般的なプロセスです。

ビジネスプロセス

プロセスは次の順序で行われます-

  • 従業員は自己評価し、レポートをプロジェクトマネージャーに提出します。
  • その後、プロジェクトマネージャーとHRマネージャーによってパフォーマンスが評価されます。 評価に基づいて、従業員に評価を与えます。
  • その後、最終評価またはパフォーマンスフィードバックが従業員に中継されます。

このプロセスは、ほぼすべての従業員に適用できるため、ビジネスプロセスを理解する非常に良い例です。 これは一連のタスクであり、特定の順序で発生します。

jBPMとは何ですか?

ビジネスプロセスは、組織の枠組みを理解するための重要な概念です。 jBPMのようなテクノロジーは、複雑なビジネスプロセスを効率的に管理するのに役立ちます。 JBPMは、ビジネスプロセスを効果的に調整できるツールです。 一般的に、すべてのエンタープライズレベルのアプリケーションには、特定の順序で実行される一連のタスクがあり、jBPMを使用してそれらのプロセスを調整できます。

jBPMの利点は、フローチャートに似ていることです。 ビジネスアナリストも簡単に理解できます。 jBPMはJavaアプリケーションに埋め込み、サービスとして実行できます。

JBPMの機能

jBPMは、Javaで記述された軽量でオープンソースの完全に埋め込み可能なプロセスエンジンです。 その最も注目すべき機能は以下のとおりです-

  • jBPMは、BPMN 2.0仕様を使用して設計されたビジネスプロセスを実行します。
  • jBPMはEclipseおよび同様のIDEに完全に統合して、ワークフローを作成するためのドラッグアンドドロップサポートを提供できます。
  • jBPMには、設計段階からビジネスアナリストやユーザーを関与させるためのUIツールが用意されています。
  • jBPMは、JPAとJTAの助けを借りて永続性とトランザクション管理をサポートします。
  • カスタム作業項目ハンドラーを定義して、後で他のワークフローのコンポーネントとして使用できるユーザー定義タスクを作成できます。

jBPM5-Eclipseプラグイン

以下は、jBPMプラグインをインストールするための前提条件です-

  • Java 1.5(またはそれ以上)SE JDK
  • Eclipse 4.2または任意のバージョンとjBPMプラグイン

jBPMはJavaで記述されているため、このセクションで目的のプラグインを追加する方法について説明します。 最大のJavaユーザーがEclipseを使用することを考慮して、jBPMプラグインをEclipseに追加する方法を見てみましょう。

次のリンクからバイナリをダウンロードします-http://download.jboss.org/drools/release/5.3.0.Final/

ここでDroolsを見るのを混同しないでください。 同じプラグインがjBPMに使用されます。 Droolsプラグインをすでにインストールしている場合は、インストール手順をスキップできます。

バイナリのダウンロード

ハードディスクに解凍します。 次に、Eclipseを起動し、[ヘルプ]→[新しいソフトウェアのインストール]に移動します。

新しいソフトウェアのインストール

リポジトリの追加-

リポジトリの追加

[ローカル]ボタンをクリックし、[…​/binaries/org.drools.updatesite](マシンでダウンロードした場所)を選択します

利用可能なソフトウェア

*Drools and jBPM* を選択し、 *Next* ボタンをクリックします。

インストールの詳細

再度[次へ]をクリックし、[使用許諾契約に同意します]を選択して、[完了]をクリックします。 ソフトウェアのインストールが開始されます-

ソフトウェアのインストール開始

インストールが成功すると、次のダイアログボックスが表示されます-

インストールの成功

[はい]をクリックします。 Eclipseが再起動します。 次に、 Windows→Preferences→Drools→Drools Flow Nodes に移動します

Drools Flow Nodes

上記のスクリーンショットに示すようにノードを見ることができる場合、プラグインが正常にインストールされたことを証明します。 これで、最初のjBPMプログラムを作成する準備ができました。

jBPM5-Hello World!

この章では、jBPMを使用して最初のプログラム「Hello World」を作成します。 以下の手順に従ってください-

「ファイル」→「新規」→「Droolsプロジェクト」に移動します-

新しいプロジェクト

[次へ]をクリックします。 最初のプロジェクトに適切な名前を付けます。この例では「HelloWorld」です。

Drools Project

[次へ]をクリックします。 下の2つのチェックボックスを選択、すなわち-

  • このプロジェクトにサンプルHelloWorldプロセスファイルを追加します。
  • HelloWorldプロセスを読み込んで実行するためのサンプルクラスを追加する

新しいDroolsプロジェクト

[次へ]をクリックします。 [ワークスペース設定の構成]をクリックします(次のスクリーンショットで赤でマークされています)-

Drools Runtime

  • 追加*ボタンをクリックします-

追加

[追加]ボタンをクリックすると、次の画面が表示されます。 [新しいDrools5ランタイムの作成]をクリックします

Drools5ランタイム

droolsjbpm-tools-をダウンロードしたバイナリフォルダーまでのパスを指定します。 distribution-5.3.0.Final.zip

次に、インストールされたDroolsランタイムを選択し、 OK をクリックします。

インストールされたDroolsランタイム

次の画面が表示されます。 [完了]ボタンをクリックします。

完了ボタン

次に、Eclipseでパッケージエクスプローラービューを開きます。 次の画面が表示されます-

パッケージエクスプローラー

*ProcessTest.java* クラスは、ruleflow(rf)ファイルをロードするクラスです。 *ruleflow.rf* は、HelloWorldプロジェクト用に作成された基本的なルールフローです。
*ruleflow.rf* ファイルをダブルクリックすると、次のルールフローが表示されます-

ルールフロー

  • 緑*円はワークフローの開始を示し、*赤*円はワークフローの終了を示します。

左側に描かれているパネルには、ワークフローで使用されるさまざまなコンポーネントがリストされています。 STARTとEND以外にも、ワークフローで使用できるコンポーネントがたくさんあります。それらについては次のセクションで説明します。

STARTイベントとENDイベントの間にあるHelloはスクリプトタスクであり、スクリプトタスクの名前は Hello です。 スクリプトタスク「Hello」で記述されているコードを確認するには、Windows→ビューの表示→その他→プロパティに移動します。

ビューの表示

-jBPMでの作業中は、すべての設定がプロパティビューでのみ表示されるため、プロパティビューを常に開いたままにしてください。

[OK]ボタンをクリックします。 今、 Hello を選択すると、「Hello」イベントのプロパティが表示されます-

こんにちはのプロパティ

「Hello」イベント内に記述されたコード全体を表示するには、 Action プロパティを選択します。

アクションのプロパティ

赤でマークされた円は、アクションプロパティの編集です。 [編集]をクリックしたら-

アクションエディター

これを編集して、「Hello」スクリプトタスク内で実行するコードを記述できます。 編集しましょう-

アクションエディター

*OK* をクリックしてください。 ProcessTest.javaクラスを開いて、Javaアプリケーションとして実行します。 以下は、その出力です-

Javaアプリケーション

ProcessTest.javaクラスで使用される用語は、Droolsで使用される用語と同じです。 ProcessTest.javaクラスで注意すべき点は-

ksession.startProcess("com.sample.ruleflow");

プロセスを開始するためのコードを記述すると、 startProcess メソッドに渡される文字列は、ワークフローを開いたときにidプロパティになります。

プロセスの開始

jBPM5-コンポーネント

BPMSコアはBPMの中心です。 次の図は、BPMSコアとそのコンポーネントを示しています。

BPM Core

セマンティックモジュール

セマンティックモジュールは、言語のセマンティック(各単語の意味)と、実行の準備ができているプロセスエンジンの内部構造のためにどのように翻訳されるかを定義します。 このモジュールには、基本的にBPMN2言語を理解するための基本事項が含まれています。

プロセスエンジン

プロセスエンジンは、ビジネスプロセスを実際に実行する役割を果たします。 プロセスエンジンは、新しいプロセスインスタンスを作成し、各インスタンスの状態を保持します。 プロセスエンジンコード内では、内部構造が定義され、プロセス定義に含まれる各アクティビティを表します。 これらのプロセス定義をインスタンス化するために使用されているすべてのメカニズムは、プロセスエンジンで定義されたとおりに実行します。

永続性とトランザクション

ほとんどのエンタープライズアプリケーションでは、すべての対話はトランザクション境界内で実行する必要があり、さまざまなシステム、API、および設計に対処する必要があります。 また、定義するための柔軟なメカニズムが必要です-

  • 長時間実行プロセスの処理方法
  • プロセスのステータスに関する情報とプロセスが処理している情報を保存する方法とタイミング
  • プロセスエンジントランザクションを作成、コミット、またはロールバックする方法とタイミング
  • 既に実行されたビジネスアクションをロールバックまたは補正できるビジネス例外

上記のすべてのポイントは、jBPM内の​​永続性およびトランザクションコンポーネントによってカバーされます。

監査/履歴ログ

このモジュールは、ユーザーにプロセスの実行方法を照会する方法を提供します。 この情報には、すでに終了したプロセスに関する履歴情報と、実行中のプロセスに関する最新情報が含まれます。

ビジネスアクティビティモニタリング(BAM)*ツールおよび情報ダッシュボードは、このモジュールで生成される情報の最も一般的なクライアントの一部です。 *Audit/History Logs モジュールは、この情報を適宜表示するように設計されたさまざまなツールと連携する有用な情報とメトリックを抽出するために一般的に使用されます。

jBPM5-ワークフローコンポーネント

次のスクリーンショットは、jBPM 5で利用可能なさまざまなワークフローコンポーネントを示しています。 これらのコンポーネントを使用して、プロセスを調整するワークフローを作成できます。

jBPM5ワークフロー

カスタムタスクも作成できますが、これについては後で説明します。 さらに、プロセスを調整するために使用できるサービスタスクがあります。

  • 開始イベント-これは、すべてのプロセスで実行される最初のノードです。 プロセスには1つの開始ノードしか存在できません。
  • 終了イベント-このノードはプロセスの終了を通知します。 プロセス内でこのタイプのノードが複数発生する場合があります。
  • ルールタスク-RuleFlowグループを評価するノードです。これは、同じ名前のスコープの下にあるDroolsルールのグループです。
  • ゲートウェイ(分岐)別名スプリット-この特定のノードは、プロセス内に新しいパス/ウェイを作成します。 2つ以上の発信接続があります。 3つの異なるタイプのスプリット/ゲートから選択できます。
  • AND GATE -プロセスのフローが同時にすべての発信接続に続く場所。
  • XOR GATE -ワークフローで定義されたいくつかの事前定義された制約に従って、1つの唯一の発信パスに移動します。
  • OR GATE -すべての発信制約の評価に基づいてフローが進行し、制約がtrueと評価される場所でそのパスが有効になります。
  • ゲートウェイ(収束)別名結合-この結合は分割の逆です。 複数のパスを1つに結合します。 結合/ゲートには4つの異なるタイプがあります-
  • AND -すべての分岐が完了すると、フローは継続します。
  • XOR -少なくとも1つの分岐が完了すると、フローは継続します。
  • Discriminator -XORと同様に、ブランチの1つが完了すると継続します。 ただし、XORとは異なり、すべての接続が完了するまで、他のブランチの完了を登録します。 発生した場合、ノードはリセットされ、着信ブランチがアクティブになり、サイクルが最初から開始されたときに再びノードに入ることができます。
  • N-of-M - n 個の m 分岐が完了すると、フローは継続します。 フローを終了するまでに完了するブランチの数について、ゲートを構成する際に n (数値)を指定する必要があります。
  • 再利用可能なサブプロセス-別のプロセスを呼び出します。 これは、いくつかの小さなプロセスを大きなプロセスに合成するのに非常に便利です。 この大きなものは調整プロセスになります。 呼び出し先が完了するまで待機し、親の独立したライフサイクルを持つように、呼び出しプロセスを構成できます。
  • スクリプトタスク-簡単なコードを実行できるノード。
  • タイマーイベント-このタイプのノードはタイマーを開始し、タイマーが切れるとトリガーします。 時間関連のプロセスと反復タスクを可能にします。
  • エラーイベント-この種のノードは、プロセスのエラー状態を通知します。 発信接続はありません。 FaultNameとFaultVariableを指定します。 エンジンは、FaultNameに一致する例外ハンドラーを検索し、FaultVariableによって定義された変数にFault情報を保存します。
  • メッセージイベント-定義済みのタイプのイベントが発行されるとトリガーされます。 内部イベント(プロセス内部で通知される)または外部イベント(プロセスエンジン以外の外部エンティティによって通知される)のいずれかです。
  • ユーザータスク-ヒューマンタスクを作成するノード。 このヒューマンタスクは、ヒューマンアクターが完了する必要があるアクティビティです。
  • Embedded Sub-Process -親プロセス内にサブプロセスを作成するのに役立ちます。 独自のスコープを持つことができます。 これは、複雑なブランチを分離したままにする大規模なプロセスに役立ちます。 独自の変数と例外ハンドラーを持つことができます
  • 別名ごとに複数のインスタンス-要素のコレクションをサブプロセスに渡すことができます。 再利用可能なサブプロセスと組み合わせて、より小さなプロセスを構成および調整する場合に非常に便利です。

jBPM5-ワークフローの作成と検証

ワークフローを描くには、上記の記事で説明したように、パレットで使用可能なコンポーネントを使用できます。 すべてのワークフローの開始点は1つですが、複数の終了点を持つことができます。

スクリーンショットの助けを借りて、ワークフローの作成方法を説明します。

ここで、空の rf または bpmn ファイルを開きました

ワークフローの作成

イベントを追加するには、コンポーネントパレットから特定のイベントを選択し、右側にドラッグアンドドロップします。 たとえば、開始イベントを選択し、それを右側にドラッグして、ゲートウェイを分岐させました。

Diverge Gateway

次に、2つのコンポーネントを接続する必要があります。 シーケンスフローを選択し、2つのコンポーネントを接続します。

シーケンスフロー シーケンスフロー1

これにより、コンポーネントをエディターにドラッグし、シーケンスフローを使用してさまざまなコンポーネントを結合できます。 一部のコンポーネントには、1つの着信接続と1つの発信接続のみがあり、それに応じてシーケンスフローを設定して意味のあるフローを作成するように注意する必要があります。

ワークフローを描画するときに、いくつかのプロパティも設定する必要があります。 ここに設定するすべてのプロパティを投稿します。 フローを作成したばかりですが、作成されたワークフローにプロパティを設定していないため、最初の瞬間にフローを見るのはあまり意味がありません。

作成されたワークフロー

上記のように、説明のない空のワークフローであり、作成されたワークフローからは何も作成できません。

ただし、さらに説明するために、開始コンポーネントと分岐ゲートウェイを用意し、分岐ゲートウェイの条件に応じて、1つの方法を選択し、スクリプトタスクでコードを実行してからワークフローを終了します。 したがって、分岐ゲートウェイのプロパティを設定してから、スクリプトタスクと収束ゲートウェイのプロパティを設定する必要があります。

この段階では、ワークフローにエラーがあることも表示されます。プロパティを設定すると、ワークフローにエラーがなくなるため、作成されたワークフローを検証する方法が表示されます。

ヒント-バリデーターは、Windows→Preferences→Validationの下にあることに注意してください

以下のスクリーンショットは、Eclipseの設定を示しています。

Preferences Validation

スクリーンショットによると、4つのエラーがあることがわかります。 最初のエラーは、スクリプトにはアクションがなく、別のエラーはゲートウェイの定義にタイプの定義がないことを示しています。 したがって、ワークフローを実行できるようにこれらのエラーを削除する必要があります。

プロパティを1つずつ設定し、エラーが消えていくのを確認します。

最初のゲートウェイ(分岐)を選択してプロパティをクリックし、タイプをクリックして、要件に応じてゲートを選択します。

アクションなし

ゲートウェイを選択したら、制約を選択する必要があります。

ゲートウェイ

赤でマークされた円をクリックすると、スクリーンショットの下に表示されます

エラーフェージング

編集をクリックし、スクリーンショットに従って詳細を入力します-

Errors Fading Errors Fading

[インポート]をクリックして、操作を実行するクラスをインポートします。 スクリーンショットでは、例で使用するパッセンジャーPOJOをインポートしました。

インポートエディター

同様に、別の制約の詳細を記入します-

制約エディター

次に、[OK]ボタンをクリックします。

編集制約

もう一度[OK]をクリックします。 ここで、スクリプトタスクを選択し、分岐ゲートウェイの場合と同じプロセスを実行します。

フローを示すためにSOP(印刷ステートメント)を追加しました。 スクリプトタスクで任意のjavaまたはmvelコードを記述できます。

テキストエディター

同様に、2番目の制約のコードを追加します-

2番目の制約

最後に、分岐ゲートウェイのゲートウェイタイプを追加する必要があります。

Diverge Gateway

次に、ワークフローファイルを保存して、問題ビューに移動します。 すべての問題が解決されます。

ワークフローファイル

問題ビューにエラーがないことは、作成されたワークフローにエラーがないことを示唆しています。 これが、jBPMでのワークフローの作成と検証の方法です。

jBPM5-例

この章では、jBPMを実行する方法を説明する例を取り上げます。 当面のタスクは、jBPMを使用して、乗客の収入に応じて、乗客が飛行機に乗るか列車に乗るかを決定することです。

プロジェクトを作成する手順は、「Hello World」プロジェクトの手順と同じままです。 エディタで.rfファイルを開き、赤でマークされた変更を確認します-

Hello World Project

ここでは、乗客の収入に基づいてルートを決定するため、ルールフローID(一意)を変更し、可変収入を追加しました。

変数の設定方法-赤でマークされた編集ボタンを選択します。

変数の設定

  • 追加*ボタンをクリックします-

変数リスト

次の画面がポップアップします-

スクリーンポップ

名前を収入として、タイプを整数として入力します。

変数の編集

*OK* をクリックしてください。 今定義されている収入変数が表示されます。

変数定義

ProcessTest.javaクラス(プロセスをロードして実行するクラス)で行われる変更-

プロセステスト

Map<String, Object> params = new HashMap<String, Object>();
params.put("income", 1200);

//start a new process instance
ksession.startProcess("vivek.ruleflow", params);

MAPを作成し、MAPで値を設定し、この値をstartProcessオーバーロードメソッドに渡す必要があります。 示されているように、ルールフローIDを変更したため、startProcessメソッドで同じID(vivek.ruleflow)を使用しました。

ProcessTest.javaクラスを実行する前に、ProcessTest.javaと同じパッケージにPOJO Passenger.javaを作成します

public class Passenger {
   private String name;
   private int income;
   Getters and setters here
}

次に、ProcessTest.javaクラスをJavaアプリケーションとして実行し、出力を確認します-

ProcessTest

値を変更-params.put( "income"、900);クラスを再実行して、出力の変化を確認します。

値の変更