機械翻訳について

ゲートウェイを使用した制御プロセス・フロー

ゲートウェイはビジネス・プロセスのフローを定義するフロー要素です。 ゲートウェイはビジネス・プロセスでトークンが通るパスを決定します。 パスを分割およびマージすることにより、ビジネス・プロセス内のコントロール・ポイントを定義します。 可能な場合、ゲートウェイは、ビジネス・プロセスのデフォルト・パスの例外、またはそこから外れたパスに使用されます。

排他的ゲートウェイ: 1つのパスのみを通過(データ条件)

排他的ゲートウェイにより、ビジネス・プロセスを2つ以上のパスに分割します。 しかし、ビジネス・プロセスは、複数の送信シーケンス・フローが存在したとしても、これらのパスのいずれか1つのみを進みます。 排他的ゲートウェイは条件付き送信シーケンス・フローを持つことができ、少なくとも1つのデフォルト送信シーケンス・フローを持つ必要があります。

プロセスが条件付きシーケンス・フローに続くかどうかを決定するのに使用される式を定義できます。 「式の使用」を参照してください。

排他的ゲートウェイのフローの評価

プロセス・トークンが排他的ゲートウェイに到達すると、送信シーケンス・フローは、いずれかがTrueになるまで評価されます。

「Exclusive Gateway」アイコン(中央にx記号のあるひし形)ゲートウェイのプロパティを構成することで、フローの評価順序を定義できます。

  • 1つの送信シーケンス・フローのみがTrueに評価された場合、プロセス・トークンはその送信シーケンス・フローの次のフロー要素に進みます。

  • 複数の送信シーケンス・フローがTrueに評価された場合、プロセス・トークンは、ゲートウェイのプロパティで定義した順序に従って、最初のシーケンス・フローに進みます。

  • どの送信シーケンス・フローもTrueに評価されない場合、プロセス・トークンはデフォルトの送信シーケンス・フローに進みます。 そのため、排他的ゲートウェイ用のデフォルトの送信シーケンス・フローを定義する必要があります。

他のゲートウェイとは異なり、排他的ゲートウェイでは、プロセスの分割後に、対応するマージを明示的に定義する必要はありません。

ノート:

排他的ゲートウェイは受信シーケンス・フローをマージすることもできます。 しかし、プロセス・フロー内で他のパスから来た他のトークンとは同期されません。 他のトークンが排他的ゲートウェイのマージに到達すると、そのまま通り過ぎます。 トークンを同期する場合、または受信シーケンス・フローで評価を実行する場合、他のタイプのゲートウェイを使用する必要があります。

排他的ゲートウェイの例

次の図に、ローン承認ビジネス・プロセス内で使用される排他的ゲートウェイの例を示します。 ここで、排他的ゲートウェイは、ローン申込みが承認されるかどうか、または追加情報が必要かどうかを評価するために使用されます。

この評価は送信条件付きシーケンス・フロー用に定義された式により決定されます。 式がtrueに評価された場合、プロセス・フローは「No」のパスへ進みます。 この評価がfalseの場合、プロセス・フローはデフォルトの送信シーケンス・フローのパスへ進みます。

exclusive-flow.pngの説明が続きます
図exclusive-flow.pngの説明

包含的ゲートウェイ: 1つ以上のパスを通過

包含的ゲートウェイにより、ビジネス・プロセスを2つ以上のパスに分割します。 しかし、排他的ゲートウェイとは異なり、送信条件付きシーケンス・フローの評価方法によっては、トークンがこれらの1つ以上のパスを進む可能性があります。

包含的ゲートウェイでは分割-マージ・ペアが必要です。 ビジネス・プロセスに包含的ゲートウェイを追加すると、分割およびマージ・フロー・オブジェクトが自動的に作成されます。

inclusive-gateway-pair.pngの説明が続きます
図inclusive-gateway-pair.pngの説明

ゲートウェイのマージ部分は必須です。 ただし、分割からのすべてのパスがマージに戻るようにする必要はありません。

ゲートウェイ経由でマージせずに、プロセス・パスをゲートウェイで分割することは可能ですが、この方法を使用することはお薦めしません。

ノート:

ビジネス・プロセスからマージ・ゲートウェイを削除する場合、対応する分割ゲートウェイも削除されます。

包含的ゲートウェイの分割およびマージ

包含的ゲートウェイは排他的ゲートウェイと同様にビジネス・プロセスを分割しますが、トークンは1つ以上の送信シーケンス・フローを進むことができます。 1つの包含的ゲートウェイの分割に対して、任意の数の送信条件付きシーケンス・フローを定義できます。 少なくとも1つのデフォルト・シーケンス・フローを定義する必要があります。

トークンが包含的ゲートウェイに到達すると、その条件付きシーケンス・フローの式が評価されます。

次に、Trueに評価される条件付きシーケンス・フローそれぞれに対してトークンが生成されます。 どの条件付きシーケンス・フローもTrueに評価されない場合にのみ、デフォルトのシーケンス・フローに対してトークンが生成されます。

これらのトークンは包含的ゲートウェイのマージで結合されます。 トークンがマージ・ゲートウェイに到達すると、分割により生成されたすべてのトークンがマージに到達するまで待機します。 すべてのトークンが包含的ゲートウェイのマージに到達した後、マージが完了し、トークンはゲートウェイの後の次のシーケンス・フローへと進みます。

並列ゲートウェイ: すべてのパスを同時に通過

プロセス・フローがすべてのパスを同時に進むようにしたい場合、並列ゲートウェイにより、ビジネス・プロセスを2つ以上のパスに分割します。 並列ゲートウェイは、ビジネス・プロセスが複数のタスクを並列に実行する必要がある場合に有用です。

並列ゲートウェイでは分割-マージ・ペアが必要です。 ビジネス・プロセスに並列ゲートウェイを追加すると、分割およびマージ・フロー・オブジェクトが自動的に作成されます。

parallel-gateway-pair.pngの説明が続きます
図parallel-gateway-pair.pngの説明

ゲートウェイのマージ部分は必須です。 ただし、分割からのすべてのパスがマージに戻るようにする必要はありません。

ゲートウェイ経由でマージせずに、プロセス・パスをゲートウェイで分割することは可能ですが、この方法を使用することはお薦めしません。

ノート:

ビジネス・プロセスからマージ・ゲートウェイを削除する場合、対応する分割ゲートウェイも削除されます。

並列ゲートウェイの分割およびマージ

トークンが並列ゲートウェイに到達すると、並列ゲートウェイは各送信シーケンス・フローに対してトークンを作成します。 並列ゲートウェイの分割はいずれの送信シーケンス・フローも評価しません。

並列ゲートウェイを使用して、並列ゲートウェイにより分割されたプロセス・パスをマージすることもできます。 並列ゲートウェイのマージでは、トークンが各受信シーケンス・フローから到達するのを待ちます。 すべてのトークンが到達した後、1つのトークンだけが送信シーケンス・フローに渡されます。

ノート:

トークンが並列ゲートウェイのマージ用の各受信シーケンス・フローに到達するように、ビジネス・プロセスを設計する必要があります。 そうしないと、到達しないトークンをマージが必要とする場合に、ビジネス・プロセスがフリーズする可能性があります。

並列ゲートウェイの例

この例に示す販売見積プロセスでは、承認ステージで並列ゲートウェイを使用しています。 次の図に、並列ゲートウェイを使用してすべてのプロセス・パスを同時に実行する方法を示します。

parallel-gateway-example.pngの説明が続きます
図parallel-gateway-example.pngの説明

イベントベース・ゲートウェイ: 1つのパスのみを通過(イベント発生時)

イベントベース・ゲートウェイでは、イベントが発生する可能性に基づいて、プロセス・フローを分岐できます。 コンテキストに応じて、イベントは複数あるタイプのうちのいずれかになります。

「Event-based Gateway」アイコンイベントベース・ゲートウェイを使用すると、プロセス内の特定のポイントでいくつかのタイプのイベントが発生する可能性を想定できます。 イベントベース・ゲートウェイは排他的ゲートウェイと似ていますが、データ固有の条件(式)に基づいてパスを選択するのではなく、プロセス内でのイベントの発生に基づいてパスを選択します。

たとえば、注文処理プロセスでは、現在利用できる在庫がないときに、プロセス内のあるポイントに到達する可能性があります。 プロセスでは、在庫が補充されるまで待機する必要がありますが、無期限に待機することはできません。 イベントベース・ゲートウェイを使用すると、プロセスは、新しい在庫を受け入れたことを示すメッセージを待機したり(メッセージ捕捉イベントを使用)、一定の時間が経過してもメッセージを受信しない場合にプロセスを続行することができます(タイマー・イベントを使用)。

イベントベース・ゲートウェイのターゲット・イベント

イベントベース・ゲートウェイは、プロセス・フローに関する決定が、データ固有の条件ではなく、イベントに基づいていることが、他のゲートウェイとは異なります。 イベントベース・ゲートウェイの場合、次のターゲット・イベントを2つ以上定義します。

  • メッセージ捕捉イベント: メッセージ捕捉イベントを使用してプロセスを開始する場合、メッセージ・スロー・イベントを使用してプロセスを起動する必要があります。

  • タイマー捕捉イベント: 通常、イベントベース・ゲートウェイに続いて1つのみのタイマー・イベントが使用されます。

  • 受信タスク: イベントベース・ゲートウェイの後に受信タスクを使用してプロセス・インスタンスを開始できます。 ただし、プロセスは呼出し元のプロセス内の送信タスクから起動する必要があります。

ノート:

同じイベントベース・ゲートウェイ内でメッセージ・イベントと受信タスクを組み合せて使用することはできません。

ターゲット要素では、イベントベース・ゲートウェイからの受信シーケンス・フローのみを処理できます。 プロセスの他の部分からのシーケンス・フローは処理できません。 イベントベース・ゲートウェイを使用すると、プロセス内で複数のイベントが発生するように計画できますが、プロセス・インスタンス内でトリガーされるイベントは1つのみです。 イベントベース・ゲートウェイの最初のイベントがトリガーされると、そのイベントの後のパスに進みます。

イベントベース・ゲートウェイをプロセスに追加した場合、関連するターゲット・イベントは作成されません。 イベントベース・ゲートウェイを削除した場合、送信シーケンス・フローも削除されます。 関連付けられているイベントは削除されません。

イベントベース・ゲートウェイを使用したプロセスの開始

プロセスの先頭でイベントベース・ゲートウェイを使用して、新しいプロセス・インスタンスを作成することもできます。 このことは、1つのプロセス内で複数の開始イベントを使用する場合と似ています。

イベントベース・ゲートウェイで新しいプロセス・インスタンスを作成できるようにするには:

  • イベントベース・ゲートウェイのインスタンス化プロパティを有効にする必要があります。

  • 受信シーケンス・フローがイベントベース・ゲートウェイに進むことはできません。

  • プロセスには、イベントベース・ゲートウェイに加えて、メッセージ開始イベントなどの他の開始イベントが少なくとも1つ必要です。

イベントベース・ゲートウェイを使用して新しいプロセス・インスタンスを作成することは可能ですが、別のプロセスからのデータ入力は受け入れられません。 プロセス・インスタンスに渡すデータは、ターゲット・イベントを使用して構成する必要があります。

ゲートウェイの作成

プロセスの流れを制御するには、ゲートウェイを使用します。

ゲートウェイを作成するには:
  1. プロセスを開きます。
  2. 要素パレットで、「Gateways」をクリックしてリストを展開します。

    プロセスには次のゲートウェイを追加できます。

    ゲートウェイ・アイコン ゲートウェイ・タイプ 説明

    「Exclusive Gateway」アイコン

    排他的

    ゲートウェイからのパスのいずれか1つのみを通ります。 プロセスがどのパスを進むかに関する決定は、データ固有の条件に基づいて行われます。 たとえば、排他的ゲートウェイでは、承認ヒューマン・タスクのAPPROVEおよびREJECTの結果に対して、異なるパスを指定できます。

    「Inclusive Gateway」アイコン

    包含的

    ゲートウェイからのパスの1つ以上を通ります。その後、パスはプロセスで収束する必要があります。 このタイプを使用して、同時に複数のオプションのタスクまたは条件付きタスクを実行します。

    「Parallel Gateway」アイコン

    並列

    ゲートウェイからのパスのすべてを通ります。その後、パスはプロセスで収束する必要があります。 このタイプを使用して、同時に複数の必要なタスクを実行します。

    「Event-Based Gateway」アイコン

    イベントベース

    ゲートウェイからのパスのいずれか1つのみを通ります。 イベントベース・ゲートウェイは、フローに関与するパスが1つであることが排他的ゲートウェイと似ています。 ただし、イベントベース・ゲートウェイの場合、プロセス・フローに関する決定は、条件の一致ではなく、発生するイベントに基づいて行われます。

  3. ゲートウェイ要素をプロセス・フローにドラッグ・アンド・ドロップします。
  4. ゲートウェイ要素を選択します。 「Sequence Flow」「Sequence Flow」アイコンをクリックし、アイコンをドラッグして、ゲートウェイから出る各パスを作成します。
    • 排他的ゲートウェイまたは包含的ゲートウェイの場合、デフォルトのパスが適切なフロー要素に接続していることを確認します。 デフォルト・シーケンス・フローとは、どのデータ条件もtrueに評価されなかった場合に、ビジネス・プロセスがこれらのゲートウェイから出て通過するパスのことです。 デフォルトのシーケンス・フローは、一方の端にスラッシュ・マークが付いた矢印で表されます。

    • 包含的ゲートウェイまたは並列ゲートウェイの場合、パスを横にドラッグすると、これらを分離できます。

    • 並列ゲートウェイの場合、少なくとも1つのアクティビティを各パスにドロップしてから、別のバスを作成する必要があります。

  5. 排他的ゲートウェイまたは包含的ゲートウェイの場合、データ・オブジェクトを作成します。 データ・オブジェクトは、プロセスで使用されるデータを格納して編成するためのものです。
    1. ゲートウェイを選択して、ツールバーの「データ・オブジェクト」 データ・オブジェクト・アイコンをクリックします。 「Data Objects」ダイアログ・ボックスが開きます。
    2. 「追加」をクリックします。
    3. このデータ・オブジェクトの名前を入力します。 すべての名前の先頭文字を小文字にする必要があります。
    4. 前のタスクからゲートウェイにフローするデータに一致するデータ型を選択します。

      多くの場合、型はboolean (trueまたはfalse)かstring (テキスト)です。 たとえば、承認ヒューマン・タスクのAPPROVEおよびREJECTの結果の場合、「string」を選択します。

    5. 「作成」をクリックします。
    6. 「Data Objects」ダイアログ・ボックスを閉じます。
  6. 排他的ゲートウェイまたは包含的ゲートウェイの場合、デフォルト以外のパスをそれぞれ実装します。

    デフォルトのパスを実装する必要はありませんが、名前を指定する必要があります。

    1. デフォルト以外のパスを選択し、そのパスの「Edit」「Edit」アイコンをクリックして、「Implementation」をクリックします。
    2. このパスの名前を入力します。
    3. 「Condition」フィールドの横にある「Edit」「Edit」アイコンをクリックします。
    4. ゲートウェイのデータ・オブジェクトがいずれかの選択肢があるかどうかをテストする式を入力します。
      たとえば、approvalOutcome == "APPROVE"と入力します。 二重の等号に注意してください。
    5. 「OK」をクリックします。
    6. 実装ペインを閉じます。
  7. 排他的ゲートウェイまたは包含的ゲートウェイの場合、出力データをゲートウェイ・データ・オブジェクトに関連付けます。
    並列ゲートウェイではデータ関連付けが必要ではありませんが、パス上の一部のアクティビティで必要になることがあります。
    1. 先行してデータをゲートウェイに送信するタスクを選択し、ツールバーの「Data Association」をクリックします。
    2. 右側のペインで「Process Object」ノードおよび「Data Objects」ノードを展開します。
    3. ゲートウェイ・データ・オブジェクトを「Outputs」フィールドにドラッグ・アンド・ドロップします。

      同様に、入力データ(多くの場合、フォームから発生する)を関連付けます。 フォームが開始イベントまたは別のプロセス・コンポーネントで参照された場合、フォームのデータ・オブジェクトが右側のペインに表示されます。 右側のペインから、対応する入力フィールドに各フォーム・フィールドをドラッグ・アンド・ドロップします。

    4. 「適用」をクリックします。
      Data Associationページが閉じます。
  8. ツールバーの「Save」「Save」アイコンをクリックして変更を保存します。
たとえば、排他的ゲートウェイを使用するプロセスは次のようになることがあります。