シナリオの定義

シナリオ は、特定の受信ビジネス・オブジェクトまたはビジネス・オブジェクトの集合を処理するコラボレーション・テンプレート・コードです。

このビジネス・オブジェクトには、イベント (コネクターからのもの) とアクセス呼び出し (アクセス・クライアントからのもの) があります。シナリオは、コラボレーション・テンプレート・クラスのイベント処理メソッドであるとみなすことができます。アクティビティー・ダイアグラムには、イベントの処理方法を示すコードが含まれます。

シナリオの説明

シナリオを使用して、コラボレーションが解決するビジネス上の問題を区分します。コラボレーションのすべてのロジックを 1 つのシナリオにグループ化したり、複数のシナリオを作成してその 1 つのシナリオが問題の 1 つの局面を扱うようにすることができます。すべてのコラボレーション・ロジックを 1 つのシナリオにグループ化するのは、すべてのロジックが main() 関数に含まれるプログラムに似ています。一方、複数のシナリオを使用するのは、機能を分割して構築されたプログラムに似ています。

通常、シナリオの名前は、実行する機能に応じて付けます。

コラボレーションに複数のシナリオがあり、各シナリオが 1 つのタイプのビジネス・オブジェクトを処理する場合、処理するビジネス・オブジェクトに応じて各シナリオに名前を付けることができます。例えば、コラボレーションが複数の動詞を持つ 1 つのタイプのビジネス・オブジェクトを処理する場合、Create、Update および Delete シナリオを開発できます。

さまざまなタイプのビジネス・オブジェクトをコラボレーションが処理する場合は、各ビジネス・オブジェクト定義に対してシナリオを開発できます。

シナリオは、1 回の実行につき 1 つのトリガー・フロー (トリガー・イベントまたはトリガー・アクセス呼び出し) のみを処理します。ただし、同じシナリオが複数のトリガー・フローを処理することもあります。例えば、同じシナリオが Create、Update、または Delete フローを処理することがあります。

通常、同じロジックがさまざまなタイプのビジネス・オブジェクトを処理する場合、これらのビジネス・オブジェクトに対して 1 つのシナリオを使用する方が効率的です。これにより、複数のコード・フラグメントをテストおよびデバッグする必要がなくなります。

注:
シナリオは、同じコラボレーション内の別のシナリオに制御を渡すことはできません。コラボレーション・ロジックの区分化に関する事前の計画で、1 つのシナリオが別のシナリオを呼び出す必要がある場合は、すべてのコラボレーション・ロジックを同じシナリオに入れます。このシナリオでは、設計は非常に柔軟になります。また、コラボレーション・グループを作成し、このグループ内のコラボレーション間でロジックを分割することもできます。

シナリオの作成

新しいシナリオを作成する手順は、以下のとおりです。

  1. Process Designer Express 内から「テンプレート」-->「新規シナリオ」をクリックします。「シナリオを作成」ダイアログ・ボックスが表示されます。
  2. 「シナリオ名」フィールドにシナリオの名前を入力します。

    シナリオ名のストリングに使用できるのは、英数字と下線です。

    特定の動詞を持つイベントをシナリオが処理する場合は、この動詞をシナリオ名に入れると役に立ちます。

  3. 必要に応じて、「説明」フィールドに説明を入力します。
  4. 「OK」をクリックします。テンプレート・ツリー・ビューでは、新しいシナリオの名前がシナリオ・ツリーに表示されます。さらに、ダイアグラム・エディターがメインウィンドウで開きます。
  5. 少なくとも 1 つのフロー・トリガーをシナリオに割り当てる必要があります。フロー・トリガーの割り当てに失敗すると、実行時エラーが発生する可能性があります。新しいシナリオ定義に対するトリガー・イベントの割り当てについては、シナリオへのトリガー・イベントの割り当てを参照してください。

シナリオへのトリガー・イベントの割り当て

シナリオへのトリガー・イベントの割り当ては、「ポートおよびトリガー・イベント」タブの「ポートおよびトリガー・イベント」テーブルで行います。作成する各シナリオには、そのトリガー・イベントを割り当てる必要があります。トリガー・イベントは、ビジネス・オブジェクトおよび動詞によって示されます。

注:
シナリオの受信ビジネス・オブジェクトおよび動詞を示す一般的な用語は、「フロー・トリガー」です。

フロー・トリガーがコネクターから送信されたものである場合、このフロー・トリガーはトリガー・イベントと呼ばれます。フロー・トリガーがアクセス・クライアントから送信されたものである場合、このフロー・トリガーはトリガー・アクセス・メソッドと呼ばれます。

「ポートおよびトリガー・イベント」タブでは、フロー・トリガーがトリガー・イベントとトリガー・アクセス・メソッドのいずれであるかにかかわらず、フロー・トリガーをシナリオに割り当てることができます。このセクションでは、「トリガー・イベント」と「イベント」という用語を使用します。これは、コネクターから受信したフロー・トリガーの方がはるかに一般的であるためです。

コラボレーションのポート定義により、コラボレーションが送受信できるビジネス・オブジェクトのタイプを指定します。コラボレーションのポートおよびシナリオを定義したら、以下を定義する必要があります。

図 30 は、ポート From がビジネス・オブジェクト・タイプ Widget をサポートしているコラボレーション・テンプレートにおける関連状況を示します。Create シナリオはトリガー・イベント Widget.Create を処理し、Delete シナリオはトリガー・イベント Widget.Delete を処理します。

図 30. ポート、トリガー・イベント、およびシナリオの関係


各フロー・トリガーに対してシナリオを指定する手順は、以下のとおりです。

  1. 「テンプレート定義」ウィンドウが開いており、「ポートおよびトリガー・イベント」タブが表示されているかどうかチェックします。
  2. 「ポートおよびトリガー・イベント」テーブルで、フロー・トリガーを受信するポートと、フロー・トリガーを示すビジネス・オブジェクトを示す行を確認します。
  3. この行で、「作成」列のドロップダウン・リストをクリックします。リストには、テンプレートに対して定義されたすべてのシナリオが含まれています。任意のシナリオを選択します。
  4. フロー・トリガーを割り当てる各ポート、ビジネス・オブジェクト、および動詞に対して 2 および 3 を繰り返します。
  5. トリガー・イベントの割り当てが完了したら、「適用」をクリックして割り当て内容を保管します。

シナリオ変数の定義

シナリオの作成が完了すると、シナリオ固有の変数を「シナリオ定義」ダイアログ・ボックスに追加できるようになります (図 31 を参照)。

図 31. 「シナリオ定義」ダイアログ・ボックス


シナリオ変数 は、単一シナリオ内のすべてのアクションおよびリンクを範囲とするコラボレーション変数です。

(シナリオ変数は、Java プログラム言語のクラス変数に相当します。) シナリオ変数は、コラボレーション・テンプレート開発中にいつでも設定できます。

変数をシナリオ定義に追加する手順は、以下のとおりです。

  1. 以下のいずれかの方法で「シナリオ定義」ダイアログ・ボックスを開きます。
  2. 変数テーブルの左の見出しセルを右マウス・ボタンでクリックして、コンテキスト・メニューから「追加」を選択します。テーブルに新しい行が追加されます。
    注:
    テーブルの最後の行をクリックして、新しい行を追加することもできます。
  3. 宣言する変数のタイプを指定するには、「タイプ」列のドロップダウン・リストを使用します。
  4. 「名前」列で変数の名前を指定します。
  5. 「初期値」列で変数の初期値を指定します。
    注:
    ストリング値は、引用符で囲んで入力する必要があります (例えば、ストリング Yes"Yes" のように入力します)。
  6. 変数 (transient、private、protected など) に適用させる修飾子を、「Modifier1」、「Modifier2」、および「Modifier3」列で指定します。すべての 3 つの列において修飾子を指定する必要はありません。
    注:
    シナリオ変数の宣言に、キーワード public および static を含めてはいけません
  7. タブの上部にある宣言のリストに新しい変数を追加するには、「更新」をクリックしてから、「適用」をクリックして変更内容を保管します。

長期存続ビジネス・プロセスのシナリオ変数に関する特殊考慮事項

シナリオ変数は、長期存続ビジネス・プロセスのイベント・フロー・コンテキストの一部として自動的に永続されるわけではありません。長期存続ビジネス・プロセス・コラボレーション内でシナリオ変数を使用する場合には、サービス呼び出しの前にシナリオ変数を手動で null に設定し、サービス呼び出しの完了後にシナリオ変数を再初期化する必要があります。これらの作業は、サービス呼び出しを実行するアクション・ノードで実行します。

以下に示す例では、アクション・ノードでシナリオ変数 poolName が null に設定されてから、サービス呼び出しが実行されます。

String poolName;
 poolName = null;
 

サービス呼び出しの完了後、poolName はアクション・ノードで以下のように再初期化されます。

poolName = getConfigProperty("Pool_A");
 

シナリオの削除

シナリオは、Process Designer Express を使用して削除できます。削除したシナリオを元に戻すことはできません。

シナリオ定義を削除する手順は、以下のとおりです。

  1. テンプレート・ツリー・ビューで、削除するシナリオを選択します。
  2. 「テンプレート」-->「シナリオを削除」をクリックします。削除について確認するダイアログ・ボックスが表示されます。
  3. シナリオを削除する場合は「はい」をクリックします。

Copyright IBM Corp. 2004