ビジネス プロセス構築ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容

ステートレス/ステートフル ビジネス プロセスの構築

ビジネス プロセスは、プロセス内に含まれるトランザクションの数によって、ステートレスまたはステートフルのいずれかになります。

ステートレス プロセスの目的は、短期間実行するロジックを呼び出すビジネスのシナリオをサポートすることにあるため、高いパフォーマンスが要求されます。ステートレス プロセスは状態をデータベースに永続化しないため、低レイテンシ、高パフォーマンスで実行するために最適化されます。ステートレス プロセスの例としては、クライアントから非同期でメッセージを受信し、そのメッセージを変換して、それをコントロールを使用してリソースに非同期で送信するプロセスがあります。もう 1 つの例には、メッセージ ブローカ サブスクリプションで開始され、メッセージを変換し、それを別のメッセージ ブローカ チャネルにパブリッシュするプロセスがあります。このようなプロセスは、従来のメッセージ ブローカ システムまたはメッセージ ルーティング システムで使用される種類のルーティング規則と類似しています。

ステートフル プロセスの目的は、複雑かつ長期間実行されるロジックを呼び出すビジネスのシナリオをサポートすることにあるため、信頼性と回復に関する特定の要件があります。ステートフル ノードまたはトランザクションの境界を設定するロジックを追加すると、プロセスはステートフルになります (「トランザクション境界」を参照)。たとえば、メッセージを受信し、そのメッセージを変換して、それをビジネス パートナに送信し、その後に非同期の応答を待ち受けるプロセスはステートフルになります。これは、待機動作によってトランザクション境界が強制されるためです。これが必要なのは、以下のことが確実に行われるようにするためです。

デフォルトでは、ビジネス プロセスはデータ フローを遮断する構成要素 (つまりトランザクション境界に影響するプロセス) を追加するまではステートレスです。トランザクション境界の詳細については、「トランザクション境界」を参照してください。

ビジネス プロセスがステートフルまたはステートレスのいずれであるかを表示するには

開始ノードのプロパティ ビューには、ビジネス プロセスがステートレスまたはステートフルのどちらであるかが 2 つの異なる方法で表示されます。

次の表は、ビジネス プロセスがステートレスまたはステートフルのどちらであるか、BEA workshop for WebLogic Platform でどちらの方法で表示かをまとめたものです。

表 22-1
 
ステートレス
ステートフル
プロパティ エディタ
stateless = true
stateless = false
開始ノード アイコン

ステートレス/ステートフル ビジネス プロセス

[プロパティー] ビューの [persistence] プロパティを使用し、ステートフル ビジネス プロセスの維持方法を設定できます。開始ノードのプロパティ ビューの詳細については、「ビジネス プロセス プロパティの設定」を参照してください。

 


ステートレス プロセスの変数の取り扱い

ステートレス プロセスはステートレス セッション Bean にコンパイルされ、さらに、ステートレス プロセスによるパフォーマンスの利点を持たせるため、これらのステートレス セッション Bean が実行時に再利用されるため、変数を取り扱う際にはいくつかの注意が必要です。デフォルト値がステートレス プロセス内の変数に設定されている場合、その変数は、プロセスを実行する最初の時点でのみ初期化されます。後続のプロセス インスタンスでは、同じステートレス セッション Bean インスタンスを再利用します。したがって、対象となる変数の最後の既知の値が継承されます。

デフォルトの値の変数を要求するステートレス プロセスを構築する場合、プロセスの開始時点で、Perform ノード (開始ノード直下) を配置し、その位置で手動で変数を初期化する必要があります。この方法により、プロセス実行時に変数を毎回初期化することができるようになります。これは、実行ノードが毎回明示的に実行されるためです。実行ノードを作成する方法については、「Perform ノードでのカスタム Java コードの記述」を参照してください。

一つの固定値を持つ変数を保持することだけが目的なのであれば、ステートレス プロセスの場合は問題にはなりません。変数を作成するときに、[変数の作成] ダイアログ ボックスで [定数として宣言] チェック ボックスを選択します。これにより、変数が静的な最終状態として生成され、ステートレス プロセスの各実行時に定数が期待どおりに動作するようになります。変数の作成方法の詳細については、「変数の作成」を参照してください。

関連トピック

トランザクション境界

ビジネス プロセスの開始

Perform ノードでのカスタム Java コードの記述

変数の作成

ビジネス プロセス プロパティの設定


  ページの先頭       前  次