Oracle BPMを使用したビジネス・プロセスのモデリング

ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Business Process Management Business Process Composerユーザーズ・ガイド
11g リリース1(11.1.1.6.2)
B61410-05
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

6 Oracle BPMを使用したビジネス・プロセスのモデリング

この章では、Oracle Business Process Management Suite内部でBusiness Process Management Notation and Modeling (BPMN)を使用して、ビジネス・プロセスを作成およびモデリングする方法について説明します。

この章では、オラクル社のBPMN 2.0の実装に関する具体的な情報について説明します。営業見積サンプル・プロジェクトを使用したBPMNの概要説明については、第2章「ビジネス・プロセス設計の概要」を参照してください。正式な仕様を含むBPMNの一般的な情報については、http://www.bpmn.orgを参照してください。

この章は、ビジネス・プロセスで実行する必要がある様々なタイプのタスクで構成されています。この章には次の項が含まれます。

6.1 スイムレーンを使用したプロセスの整理

この項では、スイムレーンを使用してプロセスを整理する方法を示します。また、ロールを使用してプロセスベースのアプリケーションの作業を実行するビジネス組織のメンバーを決定する方法についても説明します。

6.1.1 ロールの概要

ビジネス・プロセスの設計においては、ユーザー相互作用を必要とする各タスクを完了させる責任を負うユーザーおよびロールを決定することが重要となります。プロセスにおいて、ロールは、ビジネス・プロセス内で実行される作業の実行責任者をモデリングするために使用されます。ロールを使用すると、組織内の職務や責任を表す機能上のカテゴリを定義できます。

また、プロセスに定義されたロールは、論理ロールとも呼ばれます。Oracle BPMプロジェクトがランタイム環境にデプロイされると、これらのロールは、実際の組織におけるユーザーに対応するLDAPロールにマップされます。

ロールは水平のスイムレーンに割り当てられます。スイムレーンには、プロセス内のアクティビティおよびタスクを完了する責任を負うロールが表示されます。Business Process Composerを使用すると、プロセス内で必要なロールを作成および編集して、それらをスイムレーンに割り当てることができます。

Oracle BPM Studioを使用すると、LDAPを使用する特定のユーザーにロールをマップすることもできます。また、Oracle BPM Studioでは、組織単位、カレンダおよび休日を使用して、より堅牢な組織モデルを作成できます。詳細は、Oracle BPMモデリングおよび実装ガイドを参照してください。

6.1.1.1 コンテキスト内のロール

プロセス・アナリストは、ビジネス・プロセスを設計するときにどのようなロールが必要となるかを決定します。

営業見積サンプルでは、次のロールが定義されています。

  • 営業担当者: 営業担当者は、プロジェクトに定義された他のロールによって承認されるまでの間における、営業見積の作成および更新を担当します。

  • 承認者: 承認者は、営業見積で定義された製品と価格設定構成の組合せの承認を担当します。

  • ビジネス実行: このロールは、営業見積の参照および承認を担当するユーザーを表します。これらのユーザーは、営業見積のレビューにおいて、追加の承認者を追加する権限も持っています。

  • 契約: このロールは、営業見積に指定された条項の承認を担当するユーザーを表します。これらのユーザーは、顧客に転送可能な正式な法的文書の作成も担当します。

営業見積サンプル・プロジェクトの詳細は、2.2項「営業見積サンプルの概要」を参照してください。

6.1.2 スイムレーンの概要

スイムレーンは、プロセス・エディタを横方向に走る水平線です。すべてのフロー・オブジェクトは、スイムレーン内に配置する必要があります。

また、スイムレーンを使用して、プロセス内で定義されているロールに基づいてフロー・オブジェクトをグループ化することもできます。ユーザー・タスクを含むスイムレーンには、ロールを割り当てる必要があります。スイムレーンは、プロセス内の各フロー・オブジェクトを実行するロールを視覚的に表示します。また、複数のスイムレーンを同じロールに割り当てることができます。

同じプロセスの様々な部分で同じロールを使用する必要がある場合、スイムレーンを使用することでプロセスが読みやすくなります。

新しいプロセスを作成すると、Oracle BPM StudioおよびBusiness Process Composerによってデフォルトのスイムレーンが作成されます。必要に応じて、プロセスに追加のスイムレーンを追加できます。プロセスに対話型アクティビティや手動アクティビティを追加する場合は、スイムレーンにロールを割り当てる必要があります。


注意:

プロセスの開始イベントまたは終了イベントのみを含むスイムレーンは削除できません。


6.1.2.1 コンテキスト内のスイムレーン

図6-1は、複数のスイムレーンにスプリットされた単純なプロセスを示しています。この例では、営業担当者ロールが最初のスイムレーンに割り当てられています。このスイムレーン内には見積入力ユーザー・タスクが表示されているため、営業担当者ロールに割り当てられているプロセス参加者は、このタスクの実行を担当します。

図6-1 2つのスイムレーンにスプリットされた、単純なビジネス・プロセス

図6-1の説明が続きます
「図6-1 2つのスイムレーンにスプリットされた、単純なビジネス・プロセス」の説明

実際のビジネス・プロセスでは、スイムレーンの組合せ、およびスイムレーン内のフロー・オブジェクトが複雑になる場合があります。図2-1に示した営業見積サンプル・プロジェクトは、複数のスイムレーンを使用したより複雑なプロセスの例です。

6.1.3 プロセスにロールおよびスイムレーンを追加する方法

BPMNプロセスにロールおよびスイムレーンを追加できます。

プロセスに新しいスイムレーンを追加するには:

  1. プロセス・エディタ・キャンバスの白い領域を右クリックします。

  2. 「レーンの追加」を選択します。

新しいスイムレーンが作成されます。デフォルトでは、スイムレーンにロールは割り当てられていません。ロールを追加するには、スイムレーンのプロパティを編集します。

新しいフロー・オブジェクトを追加してプロセスに新しいスイムレーンおよびロールを追加するには:

  1. スイムレーンを追加するプロセスを開きます。

  2. コンポーネント・パレットからフロー・オブジェクトを選択し、それを既存のスイムレーンの下のプロセス・キャンバスにドラッグ・アンド・ドロップします。

新しいスイムレーンが作成されます。デフォルトでは、スイムレーンにロールは割り当てられていません。ロールを追加するには、スイムレーンのプロパティを編集します。

6.1.4 スイムレーンのプロパティを編集する方法

スイムレーンのプロパティはプロセス・エディタで編集できます。

スイムレーンのプロパティを編集するには:

  1. スイムレーンのロール名にカーソルを移動します。

  2. 「編集」アイコンをクリックします。

  3. 既存のロールを使用するか、または新しいロールを作成するかを決定します:

    既存のロールをスイムレーンに割り当てるには:

    1. 「使用」ボタンをクリックします。

    2. ドロップダウン・リストからロールを選択します。

    新しいロールをスイムレーンに割り当てるには:

    1. 作成」ボタンをクリックします。

    2. テキスト・フィールドに、新しいロールの名前を入力します。

  4. (オプション)カスタム・アイコンをスイムレーンに追加するには、「変更」をクリックし、使用するアイコンを選択します。

  5. (オプション)スイムレーンの背景色を変更するには:

    1. 「実装」をクリックします。

    2. 実装プロパティ・エディタで、色のRGB値を入力するか、カラー・パレットから色を選択します。

    3. 「変更の適用」をクリックします。

6.1.5 Business Process ComposerとBPM Studioとの間でのロールの共有

Oracle BPM Studioでは、組織単位、カレンダおよび休日に基づいて、複雑な組織モデル内にロールを統合できます。

Business Process Composerでプロジェクト・テンプレートに基づいてプロジェクトを作成または編集するときに、そのプロジェクト内に定義されたロールにアクセスできます。ただし、プロジェクト内に定義された組織情報は表示または編集できません。

また、Business Process Composerを使用して新しいロールを作成することもできます。これらのロールは、プロジェクトの全体的な組織情報の一部として統合されます。

6.2 プロセスの開始点および終了点の定義

この項では、プロセスの開始と終了を定義するために使用するBPMNフロー・オブジェクトについて説明します。

6.2.1 開始イベントと終了イベントの概要

開始イベントは、プロセスの開始点を定義するBPMNフロー・オブジェクトです。開始イベントには様々なタイプがあり、それによってプロセス・インスタンスの作成方法が定義されます。

一方、終了イベントはプロセスの終了点を定義します。終了イベントには様々なタイプがあり、それによってプロセス・インスタンス完了時の処理が定義されます。


注意:

Oracle BPMでは、すべてのBPMNプロセスに少なくとも1つの開始イベントと1つの終了イベントが必要です。


開始イベントではプロセスの始まりを定義するため、受信シーケンス・フローは含まれません。同じく、終了イベントには送信シーケンス・フローを含めることができません。

ただし、None開始イベントとNone終了イベント以外の開始イベントと終了イベントには、プロセスへの入力と出力を含めることができます。

6.2.1.1 様々なタイプのプロセスに対する開始イベントの指定

新しいプロセスを作成すると、Business Process Composerではメッセージ開始イベントとメッセージ終了イベントが作成されます。

これらのデフォルトは、作成するビジネス・プロセスのタイプに応じて変更できます。表6-1は、各プロセス・タイプのデフォルトの開始イベントと終了イベントを示しています。

表6-1 各プロセス・タイプの開始イベントおよび終了イベント

プロセス・タイプ デフォルトの開始および終了イベント・タイプ

非同期サービス

メッセージ開始および終了イベント

同期サービス

メッセージ開始および終了イベント

手動プロセス

None開始および終了イベント


Oracle BPMでサポートされている様々なタイプのプロセスの詳細は、5.1項「ビジネス・プロセスの概要」を参照してください。

サブプロセスには、デフォルトでNone開始イベントおよびNone終了イベントが含まれています。これらは必須の開始イベントおよび終了イベントであり、変更できません。

イベント・サブプロセスには、デフォルトでメッセージ開始イベントおよびNone終了イベントが含まれています。ただし、処理するイベントのタイプに応じて、開始イベントを変更できます。

6.2.1.2 1プロセスでの複数の開始イベントの使用

1つのBPMNプロセスに、複数の開始点を定義できます。複数の開始点を定義すると、使用される開始イベントに応じて、プロセス・インスタンスの複数の作成方法を指定できます。

図6-2は、メッセージ開始イベントとタイマー開始イベントの両方を含むプロセスの例を示しています。

図6-2 1プロセスでの複数の開始イベントの使用

図6-2の説明が続きます
「図6-2 1プロセスでの複数の開始イベントの使用」の説明

このプロセスは、他のプロセスまたはサービスから呼び出されたときにメッセージ・イベントを使用して開始できます。また、プロセス・インスタンスを自動的に作成する必要がある場合は、一定の時間間隔に基づいて開始することもできます。

複数の開始イベントを使用すると、2つの異なるプロセスを作成することなく、1つのプロセスが複数の方法で開始されるようにできます。

6.2.1.3 1プロセスでの複数の終了イベントの使用

終了イベントは、プロセス・パスの終わりを示します。プロセスに1つしか終了イベントがないときに、トークンがその終了イベントに到達すると、終了イベント到達時にプロセスが停止します。


注意:

メッセージ終了イベントは、メッセージ開始イベントによって起動されたプロセスを終了するためにのみ使用できます。また、1つのメッセージ開始イベントに関連付けられているメッセージ終了イベントが複数ある場合、これらのメッセージ終了イベントのそれぞれの出力引数の量とタイプは同じである必要があります。


複数の終了イベントを使用している場合は、1プロセス内で様々なトークンが様々なパスを経由する可能性があります。通常は、すべてのパラレル・パスが終了イベントに達して初めてプロセスが完了します。

ただし、次のような特別な場合には、すべてのプロセス・パスが完了する前にプロセス・インスタンスが停止することがあります。

  • エラー終了イベント: エラー終了イベントに達すると、すべてのプロセス・アクティビティが停止します。エラー・スロー・イベントと同様に、エラー終了イベントでは、プロセスのフローが停止されます。詳細は、6.2.9項「エラー終了イベントの概要」を参照してください。

  • 強制終了イベント: 強制終了イベントが発生すると、プロセス上のすべての作業が即時に停止します。エラー処理や、その他の実行中プロセスのクリーン・アップは行われません。詳細は、6.2.11項「強制終了イベントの概要」を参照してください。

6.2.2 プロセス・インスタンスのトリガー方法の定義

Oracle BPMでは、プロセス・インスタンスをトリガーするために次の方法がサポートされています。

6.2.3 None開始イベントの概要

None開始イベントは、インスタンス・トリガーが明確に定義されていないときに使用します。プロセスで必要な開始イベントが不明な場合、または開始イベントが後でプロセス開発者によって定義および実装される場合、プロセス・アナリストはNone開始イベントをプレースホルダとして使用できます。

図6-3は、None開始イベントのデフォルトの表記を示しています。

図6-3 None開始イベント

図6-3の説明が続きます
「図6-3 None開始イベント」の説明

None開始イベントは、プロセス・インスタンスが別のフロー・オブジェクトで作成される場合に、プロセスの始まりを指定するためにも使用されます。通常、None開始イベントは新しいプロセス・インスタンスの作成をトリガーしません。

ただし、次のタスクとともに使用する場合、None開始イベントは新しいプロセス・インスタンスをトリガーします。

  • 受信タスク。受信タスクでは、「インスタンスの作成」プロパティがtrueに設定されている必要があります。

  • ユーザー・タスク。イニシエータ・パターンを使用して実装されたユーザー・タスク。

他の開始イベントと同様に、None開始イベントも受信シーケンス・フローを含むことはできません。含むことができるのは、デフォルトの送信シーケンス・フローのみです。


注意:

Noneイベントは、サブプロセスの開始を定義するときに常に使用されます。


6.2.3.1 コンテキスト内のNone開始イベント

図6-4は、営業見積サンプル・プロジェクト内のNone開始イベントの例を示しています。この例では、None開始イベントによってプロセスの開始が定義されています。また、プロセスにはイニシエータ・パターンを使用して実装されたユーザー・タスクが含まれているため、None開始イベントによってプロセス・インスタンスがトリガーされます。

図6-4 営業見積サンプル・プロセス内のNone開始イベント

図6-4の説明が続きます
「図6-4 営業見積サンプル・プロセス内のNone開始イベント」の説明

6.2.3.2 データ・アソシエーション

None開始イベントでは、プロセスの入力引数を受け入れません。

6.2.4 メッセージ開始イベントの概要

メッセージ開始イベントは、メッセージを受信するとプロセス・インスタンスをトリガーします。このメッセージは、別のBPMNまたはBPELプロセス、あるいはサービスから送信されます。

メッセージとは、プロセス間で情報を交換するために使用されるタイプのデータです。データ・オブジェクトが、プロジェクト内で使用されるデータを定義するために使用されるのと同様に、メッセージは、プロセス間またはプロセスとサービスとの間で使用されるデータを定義するために使用されます。

図6-5は、メッセージ開始イベントのデフォルトの表記を示しています。

図6-5 メッセージ開始イベント

図6-5の説明が続きます
「図6-5 メッセージ開始イベント」の説明

他の開始イベントと同様に、メッセージ開始イベントには受信シーケンス・フローを含めることができません。メッセージ開始イベントには、デフォルトの送信シーケンス・フローが必要です。

他のプロセスやアプリケーションがプロセスを起動できるように、BPMNプロセスをサービスとして公開できます。プロセスをサービスとして公開するには、プロセスをメッセージ開始イベントで開始する必要があります。また、プロセスへの入力引数(メッセージ開始イベントに渡されるデータ・オブジェクト)を定義する必要があります。詳細は、10.5.1項「プロセスへの入力引数の定義方法」を参照してください。

6.2.4.1 コンテキストにおけるメッセージ開始イベント

図6-6は、営業見積プロセスの修正バージョンを示しています。ここでは、プロセスは、プロセス・インスタンスを開始するメッセージ開始イベントから開始されています。

図6-6 営業見積サンプル・プロセス内のメッセージ開始イベント

図6-6の説明が続きます
「図6-6 営業見積サンプル・プロセス内のメッセージ開始イベント」の説明

6.2.4.2 プロセスの入力引数と出力引数の使用

メッセージ開始イベントを使用すると、プロセスに対して入力引数および出力引数を指定できます。これらの引数では、他のプロセスやサービスがプロセスを呼び出すときに送信する必要があるメッセージが定義されます。プロセスの入力および出力引数を構成する方法については、10.5項「プロセスの入力および出力の定義」を参照してください。

6.2.5 シグナル開始イベントの概要

シグナル開始イベントは、別のプロセスまたはサービスからの通信に基づくという点でメッセージ開始イベントに似ています。ただし、メッセージ開始イベントは、特定のプロセスに送信されたメッセージに応答します。対照的に、シグナル開始イベントは複数のプロセスにブロードキャストされたシグナルに対するレスポンスです。

シグナルは、BPMNプロセスからシグナル・スロー・イベントを使用してブロードキャストできます。シグナル・スロー・イベントとシグナル開始イベントを組み合せて使用すると、複数のプロセスを同時に起動できます。

シグナル開始イベントとシグナル・スロー・イベントは、プロセス開発者によってプロセスに追加されます。シグナル・スロー・イベントの実装の詳細は、Oracle BPMモデリングおよび実装ガイドのシグナル・イベントを使用したプロセス間の通信の概要を参照してください。

図6-7は、シグナル開始イベントのデフォルトの表記を示しています。

図6-7 シグナル開始イベント

図6-7の説明が続きます
「図6-7 シグナル開始イベント」の説明

6.2.5.1 コンテキストにおけるシグナル開始イベント

シグナル開始イベントおよびシグナル・スロー・イベントは、プロセス開発者によってプロセスに追加され、実装されます。

6.2.6 タイマー開始イベントの概要

タイマー開始イベントは、特定の時間条件に基づいてプロセス・インスタンスの作成をトリガーします。タイマー開始イベントは、次の内容に基づいてプロセス・インスタンスをトリガーするように構成できます。

  • 特定の日付および時刻。たとえば、12月31日の午後11時59分にプロセスをトリガーできます。

  • 繰返し間隔。たとえば、10時間ごと、5分ごと、32秒ごとにプロセスをトリガーできます。

図6-8は、タイマー開始イベントのデフォルトの表記を示しています。

図6-8 タイマー開始イベント

図6-8の説明が続きます
「図6-8 タイマー開始イベント」の説明

6.2.7 エラー開始イベントの概要

エラー開始イベントは、インライン・ハンドラの開始イベントとして使用されます。インライン・ハンドラを使用して、プロセス内で発生するエラーに対応する個別のプロセス・フローを定義できます。

図6-10は、None終了イベントのデフォルトの表記を示しています。

図6-9 エラー開始イベント

図6-9の説明が続きます
「図6-9 エラー開始イベント」の説明


注意:

注意: エラー開始イベントを使用できるのは、インライン・ハンドラ内のみです。通常のプロセス・フロー内では使用できません。


複数のインライン・ハンドラを指定して、エラーの状況に対応できます。ただし、同じ例外を使用するインライン・ハンドラを複数定義することはできません。

6.2.8 None終了イベントの概要

None終了イベントは、プロセス・パスの終わりを示すために使用します。トークンは、None終了イベントに到達すると消費されます。プロセス・インスタンス内に他のトークンがない場合は、インスタンスが完了します。

None終了イベントは、プロセス完了後にアクションを実行する必要がない場合に使用します。また、このイベントは、後で実装時にプロセス開発者が変更するためのプレースホルダとして、プロセス・アナリストが使用することもできます。

図6-10は、None終了イベントのデフォルトの表記を示しています。

図6-10 None終了イベント

図6-10の説明が続きます
「図6-10 None終了イベント」の説明

None終了イベントは、サブプロセスおよびイベント・サブプロセスの終わりを示すときに常に使用されます。

6.2.8.1 コンテキスト内のNone終了イベント

図6-11は、営業見積サンプル内のNone終了イベントの例を示しています。この例では、営業見積サービス・タスクを使用して、営業見積に関する情報をデータベースに保存しています。

図6-11 営業見積サンプル内のNone終了イベント

図6-11の説明が続きます
「図6-11 営業見積サンプル内のNone終了イベント」の説明

トークンがプロセスの終わりに到達した場合は、他の作業を実行できないため、None終了イベントが使用されています。プロセス・トークンがすべてNone終了イベントに到達すると、プロセス・インスタンスが完了します。

6.2.9 エラー終了イベントの概要

エラー終了イベントは、エラー状態が原因でプロセスを終了する場合に使用します。

通常、エラー終了イベントは、エラー境界イベントとともに使用します。エラー境界イベントは、特定のエラーに基づいてプロセス・フローを変更するために使用します。通常、エラー境界イベントを使用したフローは、エラー終了イベントを使用して終了します。エラー中間イベントの使用方法の詳細は、6.8.3項「エラー・キャッチ・イベントの概要」を参照してください。

図6-12は、エラー終了イベントのデフォルトの表記を示しています。

図6-12 エラー終了イベント

図6-12の説明が続きます
「図6-12 エラー終了イベント」の説明

エラー終了イベントの実装の詳細は、Oracle BPMモデリングおよび実装ガイドを参照してください。

6.2.10 メッセージ終了イベントの概要

メッセージ終了イベントは、プロセス完了時に他のプロセスやサービスにメッセージを送信するために使用します。メッセージ終了イベントは、常にメッセージ開始イベントまたはメッセージ・キャッチ・イベントとともに使用します。


注意:

複数の終了イベントを持つプロセスを作成する場合は、メッセージ終了イベントに到達するすべてのトークンがメッセージ開始イベントによって作成されることを確認する必要があります。たとえば、タイマー開始イベントによって開始されたプロセス・インスタンスを終了するためにメッセージ終了イベントを使用することはできません。


図6-13は、メッセージ終了イベントのデフォルトの表記を示しています。

図6-13 メッセージ終了イベント

図6-13の説明が続きます
「図6-13 メッセージ終了イベント」の説明

メッセージ終了イベントを使用したプロセスの出力引数の構成方法については、10.5.3項「プロセスへの出力引数の定義方法」を参照してください。

6.2.11 強制終了イベントの概要

強制終了イベントは、即時にプロセスを停止するために使用します。強制終了イベントに到達すると、プロセスは即時に停止します。エラー処理や、追加のクリーン・アップは行われません。

6.3 プロセスへのユーザー相互作用の追加

多くのビジネス・アプリケーションでは、組織内のプロセス参加者からの相互作用が必要です。相互作用は、フォームに情報を入力するなどの単純な操作の場合や、複数のワークフローおよび複数のユーザーが関与する場合があります。

この項では、プロセス参加者がビジネス・プロセスと相互作用する方法をモデリングするために使用されるBPMNフロー・オブジェクトについて説明します。内容は次のとおりです。

6.3.1 ヒューマン・ワークフローの概要

多くのエンドツーエンドのビジネス・プロセスでは、プロセスとの手動による相互作用が必要です。承認、例外管理、ビジネス・プロセスを進めるために必要なアクティビティの実行などにユーザーの相互作用が必要となります。

Oracle Human Workflowでは、次の機能によってユーザーの参加が包括的にサポートされます。

  • 適切なユーザーまたはグループに対するタスクの割当ておよびルーティングを含む、プロセスとの手動による相互作用

  • タスクが適切なタイミングで実行されることを保証するために必要な期限、エスカレーション、通知およびその他の機能

  • プロセス参加者が各自のタスクを実行するときの生産性を向上するために必要な組織、フィルタ、優先順位付けおよびその他の機能。

  • スーパーバイザおよびビジネス所有者がタスクのパフォーマンスを管理するために必要なレポート、再割当て、ロード・バランシングおよびその他の機能。

詳細は、Oracle Fusion Middleware Oracle SOA Suite開発者ガイドのヒューマン・ワークフローの概要を参照してください。

6.3.1.1 ヒューマン・タスクの概要

ヒューマン・タスクは、Oracle Human Workflowのコンポーネントの1つです。ヒューマン・タスクを使用すると、エンドツーエンドのプロセス・フロー内のシステムおよびサービスとの接続を使用して、手動による相互作用をインタリーブできます。ヒューマン・タスクの役割は、ビジネス・プロセスに参加しているユーザーおよびグループのすべての相互作用を処理することです。これを行うために、組織内で該当するユーザーのタスクを作成して追跡しています。ユーザーは通常、ワークリスト・アプリケーション、電子メール、ポータル、カスタム・アプリケーションなどの各種クライアントを通じてタスクにアクセスします。

プロセス開発者は、ヒューマン・タスクを使用して、Oracle BPM SuiteおよびSOA Suiteを使用して作成されたプロセスベースのアプリケーションとプロセス参加者との相互作用の方法を定義できます。

プロセス開発者はヒューマン・タスクを使用して次の要素を作成することで、エンド・ユーザー相互作用のインタフェースとワークフローを定義できます。

  • ロールと割当て

  • 期限とエスカレーション

  • プレゼンテーション

ヒューマン・タスクは、同じUIを使用する他のプロセス内で使用できる再使用可能なサービスです。ヒューマン・タスクは、Oracle BPM Studioを使用して作成されます。

6.3.2 ユーザー・タスクの概要

ユーザー・タスクは、プロセス内で、プロセス参加者が作業を実行する必要がある部分を表します。ユーザー・タスクは、フォームへの入力などの単純な相互作用である場合もあれば、複数のプロセス参加者からの入力を必要とする複雑なワークフローの一部である場合もあります。

図6-14は、ユーザー・タスクのデフォルトの表記を示しています。

図6-14 ユーザー・タスク

図6-14の説明が続きます
「図6-14 ユーザー・タスク」の説明

Oracle BPM Suiteでは、プロセス参加者はプロセス・ワークスペースを使用してビジネス・アプリケーションと相互作用を行います。プロセス参加者に対して表示される画面やパネルなどの具体的なユーザー・インタフェース要素は、ヒューマン・タスクを使用して作成します。

プロセスの設計時には、多くの場合、プロセス・アナリストがユーザー・タスクをプロセス図に追加します。その後、プロセス開発者が必要なヒューマン・タスクを作成し、プロセスベースのビジネス・アプリケーション作成の構成要素として実装します。

トークンがユーザー・タスクに到達すると、対応するヒューマン・タスクが実行されます。トークンは、ヒューマン・タスクが完了するまで待機してから、次のフロー・オブジェクトに移動します。

ビジネス・カタログの要素をユーザー・タスクに割り当てる手順については、5.5.1項「ビジネス・カタログ・コンポーネントをフロー・オブジェクトに割り当てる方法」を参照してください。

ユーザー・タスクの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドのヒューマン・タスクの使用を参照してください。

他のフロー・オブジェクトと同様、ユーザー・タスクには受信および送信データ・アソシエーションを含めることができます。

また、ユーザー・タスクには、受信シーケンス・フローおよびデフォルトの送信シーケンス・フローを含めることもできます。

6.3.2.1 コンテキスト内のユーザー・タスク

営業見積サンプルでは、見積入力タスク(図6-15を参照)は見積情報を入力する作業を表します。

図6-15 見積入力ユーザー・タスク

図6-15の説明が続きます
「図6-15 見積入力ユーザー・タスク」の説明

ユーザーが営業見積に関する情報を入力すると、プロセス・フローは送信シーケンス・フローに従ってプロセス内の次のフロー・オブジェクトに移動します。

6.3.2.2 対話型アクティビティの使用

Oracle BPM Studioを使用すると、対話型アクティビティをコンポーネント・パレットからプロセスに直接追加できます。対話型アクティビティは、Oracle Human Workflowのタスク・ルーティング機能および承認機能に基づくショートカットです。詳細は、Oracle Fusion Middleware Oracle SOA Suite開発者ガイドのヒューマン・ワークフローの概要を参照してください。

表6-2は、Business Process Composerのコンポーネント・パレットで利用できる対話型アクティビティを示しています。

表6-2 対話型アクティビティ

パターン 説明

複合

ヒューマン・タスク内に定義されている複雑なルーティング・フローを使用します。

管理

スイムレーンに割り当てられたグループまたはロールに属するプロセス参加者の管理チェーン・パターンに割当て先を設定する管理チェーン・パターンを使用します。

FYI

割当てはスイムレーンに定義された参加者、ロールまたはグループに基づきます。FYIアクティビティはユーザー対話型アクティビティに類似していますが、完了を待機せずに処理を続行する点が異なります。

グループ

グループ投票パターンを使用します。タスクの割当て先はレーンに関連付けられたロールまたはグループに自動的に設定されます。この対話型アクティビティはロールまたはグループに関連付けられたスイムレーンにのみ追加できます。

イニシエータ

イニシエータ・パターンは、プロセス・インスタンスを作成するために使用します。


6.3.2.3 プロジェクト・テンプレートでのユーザー・タスクの使用

Oracle BPM Studioを使用して、ヒューマン・タスクをビジネス・カタログに追加できます。プロセス・アナリストは、プロジェクト・テンプレートから作成されたプロジェクトを使用するときに、Business Process Composerでこれらのヒューマン・タスクを使用できます。

ユーザー・タスクをプロジェクト・テンプレートに追加してBusiness Process Composer内で使用する場合は、次のガイドラインに従ってください。

  • プロセス開発者は、Business Process Composerでテンプレートを使用する前に、必要なすべてのヒューマン・タスク・サービスをOracle BPM Studioで作成する必要があります。ヒューマン・タスクは、ユーザー・タスク内に実装することも、プロジェクト・テンプレートに基づいてプロジェクトを編集するときに実装することもできます。

  • ただし、プロジェクト・テンプレート内でシールされたユーザー・タスクに対してヒューマン・タスク・サービスを実装する場合は、Business Process Composerでプロジェクト・テンプレートを使用する前にも実装を行う必要があります。

6.3.3 手動タスクの概要

手動タスクは、Oracle BPMのスコープ外のプロセス参加者が実行するタスクを表します。手動タスクはプロセス内のプレースホルダとして使用され、実行時にBPMNサービス・エンジンによって管理されない作業を示します。また、手動タスクはプロセス・ワークスペースアプリケーションには表示されません。


注意:

手動タスクはOracle BPMによって管理されません。Oracle BPMランタイムでは、手動タスクの開始および完了は追跡されません。


図6-16は、手動タスクのデフォルトの表記を示しています。

図6-16 手動タスク

図6-16の説明が続きます
「図6-16 手動タスク」の説明

手動タスクでは、デフォルト受信シーケンス・フローとデフォルト送信シーケンス・フローをそれぞれ1つのみ使用できます。

多くのBPMNフロー・オブジェクトと異なり、手動タスクではデータ・オブジェクトを操作できません。以前のフロー要素に関連付けられたデータ・オブジェクトはそのままの状態で次のフロー要素に渡されます。

6.3.3.1 コンテキスト内の手動タスク

営業見積サンプルのコンテキストでは、図6-17に示すように正式な契約書を印刷して署名するための手動タスクを追加できます。

図6-17 手動タスクの例

図6-17の説明が続きます
「図6-17 手動タスクの例」の説明

この例では、正式な契約書への署名をビジネス・プロセスの一部として明示的に示す必要がありますが、署名はBPMNサービス・エンジンによって管理されないため、手動タスクが使用されています。

6.3.4 更新タスクの概要

更新タスクは、1つ以上のヒューマン・タスクに対して操作を実行する場合に使用します。たとえば、更新タスクを使用して、別のユーザーへのタスクの再割当てなどのアクションを実行できます。

図6-18は、更新タスクのデフォルトの表記を示しています。

図6-18 更新タスク

図6-18の説明が続きます
「図6-18 更新タスク」の説明

更新タスクの使用方法の詳細は、Oracle BPMモデリングおよび実装ガイドを参照してください。

6.4 他のプロセスおよびサービスとの通信

Oracle BPMでは、プロセス指向アプリケーション内のビジネス・プロセス間の相互作用を定義できます。以降の項では、プロセス間の通信のモデリングに使用されるBPMNフロー・オブジェクトについて説明します。

この項では、Business Process Composerを使用してプロセス・モデルを作成する場合のこれらのフロー・オブジェクトの使用方法について説明します。プロセスベースのアプリケーションにおけるこれらのフロー・オブジェクトの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドを参照してください。

6.4.1 サービス・タスクの概要

サービス・タスクを使用すると、他のプロセスおよびサービスと通信できます。プロセス・アナリストは、プロセスで外部サービスまたは外部プロセスを呼び出す必要がある場合、サービス・タスクを追加できます。

その後、プロセス開発者は必要なサービスを実装できます。サービス・タスクを使用して、次を呼び出すことができます。

  • 他のBPMNプロセス

  • BPELプロセス

  • SOAサービス・アダプタ

  • サービスとして公開されているメディエータ

ビジネス・カタログの要素をサービス・タスクに割り当てる手順については、5.5.1項「ビジネス・カタログ・コンポーネントをフロー・オブジェクトに割り当てる方法」を参照してください。

サービス・タスクの動作は、送信タスクと受信タスクのペアの動作、およびメッセージ・スロー・イベントとメッセージ・キャッチ・イベントのペアの動作と似ています。主な違いは、サービス・タスクがプロセスおよびサービスを同期的に起動するために使用される点です。サービス・タスクがプロセスやサービスを起動すると、レスポンスが返されるまで、トークンはサービス・タスクで待機します。レスポンスを受信した後、トークンはプロセス内の次のシーケンス・フローに移動します。

サービスおよびBPMNプロセスを使用したサービス・タスクの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドのサービス・タスクを使用した、サービスおよびBPMNプロセスの同期操作の起動を参照してください。

図6-19は、サービス・タスクのデフォルトの表記を示しています。

図6-19 サービス・タスク

図6-19の説明が続きます
「図6-19 サービス・タスク」の説明

6.4.1.1 コンテキスト内のサービス・タスク

図6-20は、完成した営業見積をデータベースに保存するために使用されるサービス・タスクの例を示しています。

図6-20 営業見積サンプル・プロセス内のサービス・タスク

図6-20の説明が続きます
「図6-20 営業見積サンプル・プロセス内のサービス・タスク」の説明

6.4.1.2 プロジェクト・テンプレートでの再使用可能なサービスの実装

Oracle BPMを使用すると、プロジェクト・テンプレートに再使用可能なサービスを統合できます。これらのサービスは、ビジネス・カタログのコンポーネントです。

6.4.2 通知タスクの概要

通知タスクはサービス・タスクに類似しています。通知タスクは、事前定義されたサービスを使用して、様々なタイプの通知を実行します。さらに、式を使用して、通知タスクで生成された通知を受信するユーザーまたはグループを決定できます。

通知タスクの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドを参照してください。

次のようなタイプの通知があります:

  • IM: インスタント・メッセージをユーザーまたはグループに送信します。図6-21は、IM通知タスクのデフォルトの表記を示しています。

    図6-21 インスタント・メッセージ通知タスク

    図6-21の説明が続きます
    「図6-21 インスタント・メッセージ通知タスク」の説明

  • 電子メール: 電子メールをユーザーまたはグループに送信します。電子メールには添付ファイルを含めることもできます。図6-22は、電子メール通知タスクのデフォルトの表記を示しています。

    図6-22 電子メール通知タスク

    図6-22の説明が続きます
    「図6-22 電子メール通知タスク」の説明

  • SMS: SMSメッセージをユーザーに送信します。図6-23は、SMS通知タスクのデフォルトの表記を示しています。

    図6-23 SMS通知タスク

    図6-23の説明が続きます
    「図6-23 SMS通知タスク」の説明

  • 音声: ボイスメールをユーザーに送信します。図6-24は、ボイス・メール通知タスクのデフォルトの表記を示しています。

    図6-24 ボイスメール通知タスク

    図6-24の説明が続きます
    「図6-24 ボイスメール通知タスク」の説明

  • ユーザー: 使用可能な通知タイプに基づいて、通知をユーザーに送信します。たとえば、ユーザーがボイスメールと電子メールの両方を構成している場合、通知タスクでは両方とも送信します。図6-25は、ユーザー通知タスクのデフォルトの表記を示しています。

    図6-25 ユーザー通知タスク

    図6-25の説明が続きます
    「図6-25 ユーザー通知タスク」の説明

6.4.3 コール・アクティビティの概要

コール・アクティビティを使用すると、再使用可能なプロセスを現在のプロセス内からコールできます。被コール側プロセスは、コール側プロセスの子プロセスになります。再使用可能なプロセスをコールしている場合、親プロセスのコール・アクティビティは、子プロセスが完了するまで待機してから処理を続行します。

図6-26は、コール・アクティビティのデフォルトの表記を示しています。

図6-26 コール・アクティビティ

図6-26の説明が続きます
「図6-26 コール・アクティビティ」の説明

親プロセスのデータ・オブジェクトは、再使用可能なプロセスに対して自動的に使用可能になりません。データ・オブジェクトは、コール・アクティビティの引数マッピングを使用して、子プロセスとの間で受け渡す必要があります。

6.4.3.1 再使用可能なプロセス

Oracle BPMでは、再使用可能なプロセスというプロセス・タイプをサポートしています。BPMN用語では、再使用可能なサブプロセスと呼ばれることもあります。再使用可能なプロセスを使用すると、別のBPMNプロセスからコールできるプロセスを作成できます。

再使用可能なプロセスを使用すると、別のBPMNプロセスからコールできるプロセスを作成できます。たとえば、すべてのプロセスにクレジット・カード払いが必要な場合は、再使用可能なクレジット・カード払いのサブプロセスを作成できます。

再使用可能なプロセスには、次の特性があります。

  • 単一のNone開始イベントで開始する必要があります。

  • 複数の終了イベントを含めることができます。

  • コールできるのは、別のBPMNプロセスのみです。

6.4.4 送信タスクの概要

送信タスクでは、現在のプロセス外部のシステムまたはプロセスにメッセージが送信されます。このメッセージが送信されると、タスクは完了し、プロセスの実行はプロセス・フロー内の次のタスクに移動します。

多くの場合、送信タスクは受信タスクと組み合せて使用され、プロセスまたはサービスを起動してレスポンスを受信します。送信タスクおよび受信タスクは非同期的にプロセスおよびサービスを起動するために使用します。プロセスおよびサービスを同期的に起動する場合は、サービス・タスクを使用します。


注意:

送信タスクおよび受信タスクでは、メッセージ・スロー・イベントおよびメッセージ・キャッチ・イベントと同様の機能が実行されます。ただし、メッセージ開始イベントによって開始されるプロセスは、送信タスクを使用して起動できません。


図6-27は、送信タスクのデフォルトの表記を示しています。

図6-27 送信タスク

図6-27の説明が続きます
「図6-27 送信タスク」の説明

プロセスまたはサービスを起動するための送信タスクの実装の詳細は、Oracle BPMモデリングおよび実装ガイドの送信タスクおよび受信タスクを使用した、BPMNプロセスでの同期操作の定義を参照してください。

6.4.4.1 コンテキスト内の送信タスク

プロセス間で通信するための送信タスクおよび受信タスクの使用方法の詳細は、第6章「送信タスクおよび受信タスクを使用した、プロセス間の通信」を参照してください。

6.4.5 受信タスクの概要

送信タスクとは対照的に、受信タスクでは、現在のプロセス外部のシステムまたはプロセスからのメッセージを待機します。このメッセージを受信すると、タスクは完了し、プロセスの実行はプロセス・フロー内の次のタスクに移動します。

図6-28は、受信タスクのデフォルトの表記を示しています。

図6-28 受信タスク

図6-28の説明が続きます
「図6-28 受信タスク」の説明

プロセスまたはサービスを起動するための送信タスクの実装の詳細は、Oracle BPMモデリングおよび実装ガイドの送信タスクおよび受信タスクを使用した、BPMNプロセスでの同期操作の定義を参照してください。

6.4.5.1 コンテキスト内の受信タスク

プロセス間で通信するための送信タスクおよび受信タスクの使用方法の詳細は、6.4.6項「送信タスクおよび受信タスクを使用した、プロセス間の通信」を参照してください。

6.4.5.2 受信タスクによるプロセスの開始

受信タスクを使用して、プロセスの開始をトリガーできます。これは、他のプロセスから送信タスクを使用してプロセスを起動する場合に役立ちます。

受信タスクを使用してプロセスを開始する場合は、次の条件を満たしている必要があります。

  • 受信タスクの前にNone開始イベントがあること。

  • プロセスに他の開始イベントが含まれていないこと。

  • 「インスタンスの作成」プロパティが有効であること。

次の項では、プロセス間の通信で送信タスクおよび受信タスクを使用する方法について説明します。

6.4.6 送信タスクおよび受信タスクを使用した、プロセス間の通信

送信タスクおよび受信タスクを使用すると、他のBPMNプロセスを起動して、起動したプロセスからメッセージを受信できます。受信タスクによって開始され、送信タスクを含むプロセスは、Oracle BPMアプリケーション内の他のプロセスやサービスから使用できるサービスとして公開されます。

図6-29は、送信タスクおよび受信タスクを使用してプロセスを起動し、レスポンスを受信する場合の基本的な動作の概要を示しています。

図6-29 送信タスクおよび受信タスクを使用した、プロセス間の通信

図6-29の説明が続きます
「図6-29 送信タスクおよび受信タスクを使用した、プロセス間の通信」の説明

次の手順は、送信タスクおよび受信タスクを使用してプロセス間で通信する場合のシナリオの例を示しています。

  1. プロセスAが起動されます。

  2. プロセスAのトークンが送信タスクに到達します。

  3. 送信タスクによって、プロセスBが起動されます。

    この動作は、送信タスクの実装によって定義されます。

  4. プロセスAのトークンは、プロセスの次のフロー・オブジェクトに進みます。

  5. 受信タスクによって、プロセスBのプロセス・インスタンスが開始されます。

    受信タスクには、「インスタンスの作成」プロパティが定義されている必要があります。6.4.5.2項を参照してください。

  6. 新しく作成されたトークンがプロセスBに沿って進みます。

  7. プロセスの具体的な動作に応じて、次のシナリオが発生する場合があります。

    1. プロセスAのトークンが、プロセスBからの送信タスクとペアになっている受信タスクに到達すると、プロセスAのトークンはレスポンスを受信するまで待機します。レスポンスを受信した後、プロセスAのトークンは次のフロー・オブジェクトに移動します。

    2. プロセスBのトークンが、プロセスA内の受信タスクとペアになっている送信タスクに到達すると、プロセスBはプロセスAにレスポンスを送信します。プロセスBのトークンは、次のフロー・オブジェクトに移動します。

  8. 両方のプロセスが引き続き実行されます。この後に、さらに送信タスクと受信タスクのペアを使用して、2つのプロセス間での通信を定義できます。

6.4.7 メッセージ・スロー・イベントの概要

メッセージ・スロー・イベントを使用すると、他のプロセスまたはサービスにメッセージを送信できます。

図6-30は、メッセージ・スロー・イベントのデフォルトの表記を示しています。

図6-30 メッセージ・スロー・イベント

図6-30の説明が続きます
「図6-30 メッセージ・スロー・イベント」の説明

メッセージ・スロー・イベントを使用すると、次のタイプのプロセスおよびサービスを起動できます。

  • 他のBPMNプロセス

  • BPELプロセス

  • SOAサービス・アダプタ

  • サービスとして公開されているメディエータ

プロセス・アナリストは、プロセスにメッセージ・スロー・イベントを追加して、プロセスから他のプロセスやサービスを呼び出す必要がある位置を定義できます。ただし、他のプロセスとの接続の実装は、通常はプロセス開発者が担当します。また、メッセージ・スロー・イベントによって起動されるサービスの作成および実装も、通常はプロセス開発者が担当します。

メッセージ・スロー・イベントの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドのメッセージ・イベントを使用した、他のBPMNプロセスおよびサービスとの通信を参照してください。

多くの場合、メッセージ・スロー・イベントは、他のプロセスのメッセージ開始イベントを呼び出すことによって他のBPMNプロセスを起動するために使用します。詳細は、6.2.4項「メッセージ開始イベントの概要」を参照してください。

また、多くの場合、メッセージ・スロー・イベントは、起動したプロセスまたはサービスからレスポンスを受信するメッセージ・キャッチ・イベントとともに使用します。ただし、メッセージ・スロー・イベントは常に非同期的に使用されます。メッセージ・スロー・イベントから他のプロセスまたはサービスにメッセージが送信された後、トークンは即時にプロセスの次のフロー・オブジェクトに移動します。

プロセスで同期的にレスポンスを受信する場合は、サービス・タスクを使用してプロセスまたはサービスを起動します。詳細は、6.4.1項「サービス・タスクの概要」を参照してください。


注意:

送信タスクおよび受信タスクでは、メッセージ・スロー・イベントおよびメッセージ・キャッチ・イベントと同様の機能が実行されます。ただし、メッセージ受信タスクによって開始されるプロセスをメッセージ・スロー・イベントを使用して起動することはできません。


6.4.8 メッセージ・キャッチ・イベントの概要

メッセージ・キャッチ中間イベントでは、別のプロセスまたはサービスからのメッセージを受信できます。

図6-31は、メッセージ・キャッチ・イベントのデフォルトの表記を示しています。

図6-31 メッセージ・キャッチ・イベント

図6-31の説明が続きます
「図6-31 メッセージ・キャッチ・イベント」の説明

多くの場合、メッセージ・キャッチ・イベントは、他のBPMNプロセスと通信するためのメッセージ・スロー・イベントとともに使用されます。メッセージ・スロー・イベントとメッセージ・キャッチ・イベントを組み合せて使用する方法の詳細は、6.4.9項を参照してください。

メッセージ・スロー・イベントの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドのメッセージ・イベントを使用した、他のBPMNプロセスおよびサービスとの通信を参照してください。

6.4.9 メッセージのスロー・イベントおよびキャッチ・イベントを使用した、プロセス間の通信

スロー・イベントとキャッチ・イベントを組み合せて使用することによって、他のBPMNプロセスを起動したり、他のBPMNプロセスと通信できます。スロー・イベントを使用して他のプロセスを起動する場合は、次の条件を満たしている必要があります。

  • 起動されるプロセスは、非同期プロセスである必要があります。メッセージ・スロー・イベントを使用して同期プロセスを起動することもできますが、起動したプロセスから同期的にメッセージをキャッチするメカニズムは用意されていません。

    同期プロセスを起動する場合は、サービス・タスクを使用します。詳細は、6.4.1項「サービス・タスクの概要」を参照してください。

  • 最初にメッセージ・スロー・イベントを使用する場合は、他のプロセスのメッセージ開始イベントとペアにする必要があります。これは、プロセス・インスタンスをトリガーするために必要となります。インスタンスがトリガーされた後は、2つ目のプロセスによってキャッチされる後続のメッセージ・スロー・イベントを使用できます。

メッセージ開始イベントで開始し、メッセージ終了イベントで終了するプロセスは、Oracle BPMアプリケーション内の他のプロセスやサービスから使用できるサービスとして公開されます。

他のプロセスから起動されたプロセスは、子プロセスであるとはみなされません。このことは、強制終了イベントをプロセスの終了点として使用するプロセスを設計する場合に重要となります。たとえば、コール側プロセスの終了イベントでは、メッセージ・スロー・イベントによって起動されたプロセスは停止しません。

図6-32は、メッセージ・スロー・イベントおよびキャッチ・イベントを使用してプロセスを起動し、レスポンスを受信する場合の基本的な動作を示しています。

図6-32 プロセス間でのメッセージのスロー・イベントおよびキャッチ・イベントの使用

図6-32の説明が続きます
「図6-32 プロセス間でのメッセージのスロー・イベントおよびキャッチ・イベントの使用」の説明

次の手順は、メッセージ・スロー・イベントおよびメッセージ・キャッチ・イベントを使用してプロセス間で通信を行う場合のシナリオの例を示しています。

  1. プロセスAが起動されます。

  2. プロセスAのトークンが、プロセスBを起動するように構成されているメッセージ・スロー・イベントに到達します。

  3. メッセージ・スロー・イベントからプロセスBのメッセージ開始イベントにメッセージが送信されます。

  4. プロセスAのトークンは、次のフロー・オブジェクトに進みます。

  5. メッセージ開始イベントによって、プロセスBのインスタンスがトリガーされます。

  6. 新しく作成されたトークンがプロセスBに沿って進みます。

  7. プロセスの動作に応じて、次のシナリオが発生する場合があります。

    1. プロセスAのトークンが、プロセスBからのスロー・イベントとペアになっているキャッチ・イベントに到達すると、プロセスAのトークンはメッセージを受信するまで待機します。メッセージを受信した後、プロセスAのトークンは次のフロー・オブジェクトに移動します。

    2. プロセスBのトークンが、プロセスAのキャッチ・イベントとペアになっているスロー・イベントに到達すると、プロセスBはプロセスAにメッセージをスローします。プロセスBのトークンは、次のフロー・オブジェクトに移動します。

  8. 両方のプロセスが引き続き実行されます。この後に、さらにキャッチ・イベントとスロー・イベントのペアを使用して、2つのプロセス間での通信を定義できます。

6.5 Oracle Business Rulesを使用したビジネス・ロジックの追加

この項では、ビジネス・ルール・タスクを使用してビジネス・プロセス内にOracle Business Rulesを取り込む方法について説明します。Business Process ComposerによるOracle Business Rulesの使用方法の詳細は、第8章「Oracle Business Rulesの使用」を参照してください。

6.5.1 Oracle Business Rulesの概要

ビジネス・ルールは、ビジネス・ポリシーを表す文または重要なビジネスの意思決定を表す文です。

6.5.2 ビジネス・ルール・タスクの概要

ビジネス・ルール・タスクを使用すると、プロセス内にOracle Business Rulesを取り込むことができます。

図6-33は、ビジネス・ルール・タスクのデフォルトの表記を示しています。

図6-33 ビジネス・ルール・タスク

図6-33の説明が続きます
「図6-33 ビジネス・ルール・タスク」の説明

ビジネス・プロセス内にOracle Business Rulesを取り込むユース・ケースは、主に2つあります。

  • 構造ルールの使用

    構造ルールを使用すると、ビジネス・プロセス内で使用される計算を実行できます。たとえば、信用度を計算するためにビジネス・ルールを使用できます。

  • 運用ルールの使用

    運用ルールは、プロセスのフローを変更するために使用します。運用ルールの典型的な使用方法として、ルール・カタログ内のルール条件のチェックの実行があります。その後、出力データ・アソシエーションの一部として、式を使用してデータ・オブジェクトに値を割り当てます。

    このシナリオでは、ビジネス・ルール・タスクの直後にゲートウェイが配置されます。このゲートウェイは、データ・オブジェクトの値に従ってプロセス・パスを分岐するために使用されます。

    営業見積サンプル内での操作ルールの使用方法の詳細は、6.5.2.1項「コンテキスト内のビジネス・ルール・タスク」を参照してください。

ビジネス・カタログの要素をビジネス・ルール・タスクに割り当てる手順については、5.5.1項「ビジネス・カタログ・コンポーネントをフロー・オブジェクトに割り当てる方法」を参照してください。

6.5.2.1 コンテキスト内のビジネス・ルール・タスク

図6-34は、営業見積サンプル・プロセス内のビジネス・ルール・タスクの例を示しています。

図6-34 営業見積サンプル・プロセス内のビジネス・ルール・タスク

図6-34の説明が続きます
「図6-34 営業見積サンプル・プロセス内のビジネス・ルール・タスク」の説明

6.6 シーケンス・フローを使用したプロセス・フローの制御

この項では、シーケンス・フローを使用してビジネス・プロセスの動作を定義する方法を説明します。

6.6.1 シーケンス・フローの概要

シーケンス・フローでは、プロセス内で作業が実行される順序(シーケンス)が定義されます。シーケンス・フローによって、プロセス内のフロー・オブジェクトが接続され、プロセス内でプロセス・トークンが移動するパスが特定されます。

受信シーケンス・フローは、フロー・オブジェクト内に移動するシーケンス・フローです。送信シーケンス・フローは、フロー・オブジェクトから外部に移動するプロセス・パスを特定するシーケンス・フローです。

多くのフロー・オブジェクトには、受信シーケンス・フローと送信シーケンス・フローの両方が含まれています。ただし、開始イベントと終了イベントは例外です。開始イベントで使用できるのは送信シーケンス・フローのみです。終了イベントで使用できるのは受信シーケンス・フローのみです。また、イベント・サブプロセスには、受信シーケンス・フローも送信シーケンス・フローも含まれません。

6.6.2 無条件シーケンス・フローの概要

無条件シーケンス・フローは2つのフロー・オブジェクト間の典型的なパスです。デフォルトのシーケンス・フローは図6-35のように矢印線として表示されます。

図6-35 無条件シーケンス・フロー

図6-35の説明が続きます
「図6-35 無条件シーケンス・フロー」の説明

ほとんどのフロー・オブジェクトでは、デフォルト送信シーケンス・フローを1つのみ使用できます。プロセスのパラレル・パスを表す複数の無条件シーケンス・フローを使用できるのは、パラレル・ゲートウェイのみです。

排他ゲートウェイ、包含ゲートウェイおよび条件ゲートウェイには、無条件送信シーケンス・フローを使用できません。これらのゲートウェイでは、条件シーケンス・フローおよびデフォルト・シーケンス・フローを使用して、プロセスのフローを決定します。

6.6.3 条件シーケンス・フローの概要

条件シーケンス・フローは、特定の条件に基づいてプロセスのフローを制御するために使用します。無条件シーケンス・フローと同様に、条件シーケンス・フローは、矢印線として表示されます。

図6-36は、2つの送信条件シーケンス・フローと1つのデフォルト・シーケンス・フローを示しています。

図6-36 条件シーケンス・フローとデフォルト・シーケンス・フロー

図6-36の説明が続きます
「図6-36 条件シーケンス・フローとデフォルト・シーケンス・フロー」の説明

送信条件シーケンス・フローを使用できないフロー・オブジェクトもあります。送信条件シーケンス・フローを使用できるのは、次のタイプのゲートウェイのみです。

  • 排他ゲートウェイ

  • 包含ゲートウェイ(スプリット)

条件シーケンス・フロー内で使用される条件は、式を使用して定義されます。式エディタを使用して式を定義する方法は、10.4項「式の概要」を参照してください。

6.6.4 デフォルト・シーケンス・フローの概要

条件シーケンス・フローと同様に、デフォルト・シーケンス・フローは排他ゲートウェイ、包含ゲートウェイおよび条件ゲートウェイへの送信シーケンス・フローとして使用されます。デフォルト・シーケンス・フローは、いずれの条件もtrueと評価されない場合に、プロセスがこれらのゲートウェイから脱出するパスを表します。

デフォルト・シーケンス・フローは、図6-36のように一方の端にチック・マークが付いた矢印として表示されます。

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

この項では、ゲートウェイを使用してプロセスのフローおよび動作を制御する方法を説明します。

6.7.1 ゲートウェイの概要

ゲートウェイはプロセスのフローを定義するフロー要素です。ゲートウェイはトークンがプロセスを辿るパスを指定します。ゲートウェイはパスのスプリットとマージによってプロセス内の制御ポイントを定義します。

プロセスのデフォルト・パスに対する例外または逸脱となるパスには、可能なかぎりゲートウェイを使用します。

6.7.1.1 スプリットとマージのペア

次のゲートウェイにはスプリットとマージのペアが必要です。

  • パラレル・ゲートウェイ

  • 包含ゲートウェイ

  • 複合ゲートウェイ

これらのゲートウェイのいずれかをBPMNプロセスに追加すると、Oracle BPM Studioはスプリットとマージのフロー・オブジェクトを自動的に作成します。

ゲートウェイのマージ部分は常に必要となりますが、必ずしもスプリットされたすべてのパスをマージ部分に戻す必要はありません。

ゲートウェイでスプリットされたプロセス・パスのうち、ゲートウェイでマージされないものがあってもかまいませんが、通常はお薦めしません。ゲートウェイのマージ動作の詳細は、後述の各ゲートウェイ・タイプの項を参照してください。


注意:

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


6.7.2 排他ゲートウェイの概要

排他ゲートウェイを使用すると、プロセスを複数のパスにスプリットできます。ただし、複数の送信シーケンス・フローが存在する場合でも、プロセスが経由するパスは、これらのパスのうちの1つのみです。排他ゲートウェイでは、条件送信シーケンス・フローを使用でき、少なくとも1つのデフォルト送信シーケンス・フローが必要です。

プロセスが条件シーケンス・フローを経由するかどうかを決定するために使用される式を定義できます。詳細は、10.4項「式の概要」を参照してください。

プロセスに排他ゲートウェイの送信シーケンス・フローが複数ある場合は、それらの評価順序を定義できます。評価の順序は、排他ゲートウェイのプロパティで構成されます。

複数の条件でtrueと評価された排他ゲートウェイがあると、プロセスは、この順序に従って決定された最初の条件シーケンス・フローの下で続行されます。

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

図6-37は、排他ゲートウェイのデフォルトの表記を示しています。

図6-37 排他ゲートウェイ

図6-37の説明が続きます
「図6-37 排他ゲートウェイ」の説明

6.7.2.1 コンテキスト内の排他ゲートウェイ

図6-38は、営業見積サンプル内で使用されている排他ゲートウェイの例を示しています。ここでは、排他ゲートウェイは、ビジネス実行のレビューが必要であるかどうかを評価するために使用されます。

図6-38 営業見積サンプル・プロセス内の排他ゲートウェイ

図6-38の説明が続きます
「図6-38 営業見積サンプル・プロセス内の排他ゲートウェイ」の説明

この評価は、送信条件シーケンス・フローに定義された式によって決定されます。評価がtrueである場合、プロセス・フローは「はい」のパスを進みます。評価がfalseである場合、プロセス・フローは、デフォルト送信シーケンス・フローのパスを進みます。

6.7.2.2 排他ゲートウェイのスプリットとマージ

トークンが排他ゲートウェイに到達すると、送信条件シーケンス・フローの1つがtrueに評価されるまで、送信条件シーケンス・フローが評価されます。排他ゲートウェイのプロパティを構成することによって、送信条件シーケンス・フローが評価される順序を定義できます。この構成に基づいて、最初の条件シーケンス・フローの評価がtrueである場合、トークンはこの送信シーケンス・フローに従って次のフロー・オブジェクトに移動します。複数の送信条件シーケンス・フローがある場合は、それらの評価順序を決定できます。trueと評価される送信条件シーケンス・フローが存在しない場合、トークンはデフォルト送信シーケンス・フローに従って移動します。したがって、排他ゲートウェイには、デフォルト送信シーケンス・フローを定義する必要があります。

排他ゲートウェイでは受信シーケンス・フローもマージできます。ただし、プロセス・フロー内の他のパスから受信する可能性がある他のトークンと同期されません。


注意:

他のトークンが排他ゲートウェイのマージに到達した場合、そのトークンもそのまま次のフロー・オブジェクトに渡されます。トークンを同期する場合や、受信シーケンス・フローで評価を実行する場合は、別のタイプのゲートウェイを使用する必要があります。


6.7.3 包含ゲートウェイの概要

包含ゲートウェイを使用すると、プロセスを複数のパスに分割できます。ただし、排他ゲートウェイとは異なり、送信条件シーケンス・フローの評価結果に応じて、トークンは1つ以上のパスに移動する場合があります。

包含ゲートウェイのスプリットには、複数の送信条件シーケンス・フローを指定できます。また、少なくとも1つのデフォルト・シーケンス・フローを定義する必要があります。

図6-39は、包含ゲートウェイのスプリットのデフォルトの表記を示しています。

図6-39 包含ゲートウェイ(スプリット)

図6-39の説明が続きます
「図6-39 包含ゲートウェイ(スプリット)」の説明

図6-40は、包含ゲートウェイのマージのデフォルトの表記を示しています。

図6-40 包含ゲートウェイ(マージ)

図6-40の説明が続きます
「図6-40 包含ゲートウェイ(マージ)」の説明

6.7.3.1 包含ゲートウェイのスプリットとマージ

包含ゲートウェイでは、排他ゲートウェイと同様にプロセスがスプリットされますが、トークンが複数の送信シーケンス・フローを進むことができる点が異なります。トークンが包含ゲートウェイに到達すると、包含ゲートウェイの条件シーケンス・フローの式が評価されます。

次に、trueと評価された各条件シーケンス・フローに対してトークンが生成されます。trueと評価された条件シーケンス・フローがない場合のみ、デフォルトのシーケンス・フローに対してトークンが生成されます。

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

6.7.4 パラレル・ゲートウェイの概要

Parallel Gatewayを使用してプロセスを複数のパスに分割すると、プロセス・フローがすべてのパス上を同時に進むようにできます。Parallel Gatewayは、プロセスで複数のタスクをパラレルに実行する必要がある場合に便利です。

図6-41は、パラレル・ゲートウェイのスプリットのデフォルトの表記を示しています。

図6-41 パラレル・ゲートウェイ(スプリット)

図6-41の説明が続きます
「図6-41 パラレル・ゲートウェイ(スプリット)」の説明

図6-42は、パラレル・ゲートウェイのマージのデフォルトの表記を示しています。

図6-42 パラレル・ゲートウェイ(マージ)

図6-42の説明が続きます
「図6-42 パラレル・ゲートウェイ(マージ)」の説明

6.7.4.1 コンテキスト内のパラレル・ゲートウェイ

営業見積のサンプルでは、プロセスの承認ステージでパラレル・ゲートウェイを使用しています。図6-43に、パラレル・ゲートウェイを使用して2つのプロセス・パスを同時に実行する方法を示します。

図6-43 パラレル・ゲートウェイの例

図6-43の説明が続きます
「図6-43 パラレル・ゲートウェイの例」の説明

この例では、2つの異なるプロセス・パスが同時に実行されます。

6.7.4.2 パラレル・ゲートウェイのスプリットとマージ

トークンがパラレル・ゲートウェイに到達すると、パラレル・ゲートウェイでは各送信シーケンス・フローのトークンが作成されます。パラレル・ゲートウェイのスプリットでは、送信シーケンス・フローは評価されません。

パラレル・ゲートウェイを使用して、パラレル・ゲートウェイによってスプリットされたプロセス・パスをマージすることもできます。パラレル・ゲートウェイのマージでは、各受信シーケンス・フローからのトークンの到着が待機されます。すべてのトークンが到着すると、1つのトークンのみが送信シーケンス・フローに渡されます。


注意:

Parallel Gatewayのマージの各受信シーケンス・フローにトークンが到着するようにプロセスを設計してください。このように設計しないと、到着しないトークンをマージで待機し続け、プロセスがフリーズする可能性があります。


6.7.5 複合ゲートウェイの概要

複合ゲートウェイでは、包含ゲートウェイと同様にプロセスが分割されます。ただし、複合ゲートウェイのマージにすべてのトークンが到着しない場合でもインスタンスを続行できるアクティブ化条件を定義できます。

たとえば、2つ以上のトークンが到着した後に続行する、複合ゲートウェイを構成できます。包含ゲートウェイの条件のうち2つのみがtrueと評価されると、プロセス・インスタンスは次のアクティビティに進みます。ただし、包含ゲートウェイではすべての条件シーケンス・フローが即時に評価されるため、これらのプロセス・パスのすべてのフロー・オブジェクトもすべて実行されます。

図6-44は、複合ゲートウェイのスプリットのデフォルトの表記を示しています。

図6-44 複合ゲートウェイ(スプリット)

図6-44の説明が続きます
「図6-44 複合ゲートウェイ(スプリット)」の説明

図6-45は、複合ゲートウェイのマージのデフォルトの表記を示しています。

図6-45 複合ゲートウェイ(マージ)

図6-45の説明が続きます
「図6-45 複合ゲートウェイ(マージ)」の説明

6.7.6 Event-based Gatewayの概要

Event-based Gatewayを使用すると、イベントが発生する可能性に基づいてプロセス・フローを分岐できます。これは、コンテキストに応じて、様々なイベント・タイプの1つになります。

Event-based Gatewayでは、様々なタイプのイベントがプロセス内の特定の位置で発生する可能性を予想できます。これは排他ゲートウェイに類似していますが、式に基づいてパスを選択するのではなく、Event-based Gatewayではプロセス内でのイベントの発生に基づいてパスを選択します。

たとえば、注文処理プロセスでは、現在使用可能な在庫がない場合にプロセス内のある位置に移動できます。プロセスは、在庫が使用可能になるまで待機する必要がありますが、無限に待機することはできません。Event-based Gatewayを使用すると、プロセスは、(メッセージ・キャッチ・イベントを使用して)新しい在庫の到着を知らせるメッセージを待機したり、(タイマー・イベントを使用して)一定時間の経過後にメッセージを受信しない場合に処理を続行できます。

図6-46は、Event-based Gatewayのデフォルトの表記を示しています。

図6-46 イベントベース・ゲートウェイ

図6-46の説明が続きます
「図6-46 イベントベース・ゲートウェイ」の説明

Event-based Gatewayは、プロセス・フローに関する決定がデータ固有の条件ではなく、イベントに基づいている点が他のゲートウェイと異なります。

Event-based Gatewayは、次の要素から構成されます。

  • イベントベース・ゲートウェイ

  • 2つ以上のターゲット・イベント。これらのイベントには、次のタイプがあります。

    • メッセージ・キャッチ・イベント

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

    • タイマー・キャッチ・イベント

      一般に、Event-based Gatewayに付随して単一のタイマー・イベントのみが使用されます。

    • 受信タスク

      Event-based Gatewayに付随して受信タスクを使用し、プロセス・インスタンスを開始できます。ただし、プロセスは、コール側プロセス内の送信タスクから起動する必要があります。


    注意:

    同じEvent-based Gateway内にメッセージ・イベントと受信タスクを混在させることはできません。


ターゲット要素には、Event-based Gatewayからの受信シーケンス・フローのみを含めることができます。プロセスの他の部分からのシーケンス・フローを含めることはできません。Event-based Gatewayでは、プロセスにおいて発生する可能性のあるイベントを複数設定できますが、プロセス・インスタンス内でトリガーされるのは1つのイベントのみです。Event-based Gatewayで最初のイベントがトリガーされると、そのイベントに続くパスが使用されます。

デフォルトで、プロセスにイベントベース・ゲートウェイを追加すると、タイマー・キャッチ・イベントおよびメッセージ・キャッチ・イベントも作成されます。


注意:

Event-based Gatewayを削除すると、すべての送信シーケンス・フローも削除されます。関連付けられたイベントは削除されません。


6.7.6.1 Event-based Gatewayを使用したプロセスの開始

プロセスの最初でEvent-based Gatewayを使用して新しいプロセス・インスタンスを作成することもできます。これはプロセス内に複数の開始イベントを保持するのと同じです。

Event-based Gatewayを使用可能にして新しいプロセス・インスタンスを作成するには、次のことを確認する必要があります。

  • Event-based GatewayのInitiateプロパティが有効であること。

  • Event-based Gatewayへの受信シーケンス・フローがないこと。

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

6.8 中間イベントを使用したプロセス・フローの制御

この項では、中間イベント、および中間イベントを使用してプロセスのフローおよび動作を制御する方法について説明します。

6.8.1 中間イベントの概要

開始イベントおよび停止イベントとは異なり、中間イベントはプロセス・フローの最中に発生します。

中間イベントには次の2つのタイプがあります。

  • 標準フロー・イベント

    標準フロー・イベントは、プロセスの一般的なフローで発生します。

  • 境界イベント

    境界イベントは、プロセスの中断をトリガーします。境界イベントはフロー・オブジェクトに関連付けられており、これらのオブジェクトの通常の動作を中断するように構成できます。

    境界イベントは、プロセスが経由するフロー・オブジェクトのパスを特定するために使用されるという点で、シーケンス・フローと同様に動作します。

    境界イベントは、連続しないタイプおよび連続するタイプの2つのタイプに分類されます。

6.8.2 タイマー・キャッチ・イベントの概要

タイマー・キャッチ・イベントを使用すると、時間条件を使用してプロセスのフローを制御できます。次に、タイマー・キャッチ・イベントの使用例を示します。

  • アクティビティ実行の前に遅延を作成する

  • アクティビティの期限を構成する

  • プロセスの期限を構成する

  • 一定時間経過後に追加のアクティビティをトリガーする

図6-47は、タイマー・キャッチ・イベントのデフォルトの表記を示しています。

図6-47 タイマー・キャッチ・イベント

図6-47の説明が続きます
「図6-47 タイマー・キャッチ・イベント」の説明

タイマー・イベントは、アクティビティの境界イベントとして使用できます。タイマー・イベントは、連続しない境界イベントまたは連続する境界イベントとして定義できます。

連続しないタイマー・イベントが発生した場合、トークンはメイン・プロセス・フローを離れて、タイマー・イベントによって定義されたフローを進みます。連続しないタイマー・イベントによって定義されたフローは、メイン・プロセス・フローに直接戻ることができます。

連続するイベントが発生した場合は、トークンのコピーが作成され、タイマー・イベントによって定義されたフローに渡されます。連続するイベントによって定義されたフローからメイン・プロセス・フローに戻ることはできません。

6.8.3 エラー・キャッチ・イベントの概要

エラー・キャッチ・イベントは、プロセス・フロー内で発生したエラーを処理するために使用される中間イベントです。


注意:

インライン・ハンドラを使用して、プロセス内で発生するエラー状態に対応することもできます。


エラー・キャッチ・イベントは、常に境界イベントとして使用されます。このイベントは、次の対象にアタッチできます。

  • サービス・タスク

  • コール・アクティビティ

  • ユーザー・タスク

  • 送信タスク

  • 受信タスク

  • スクリプト・タスク

  • ルール・タスク

  • サブプロセス

エラー・キャッチ・イベントは常に割込みを実行します。つまり、このイベントによって、プロセスの通常のフローが中断されます。

図6-48は、サービス・タスクに境界イベントとしてアタッチされたエラー・キャッチ・イベントのデフォルトの表記を示しています。

図6-48 サービス・タスクにおける境界イベントとしてのエラー・キャッチ・イベント

図6-48の説明が続きます
「図6-48 サービス・タスクにおける境界イベントとしてのエラー・キャッチ・イベント」の説明

サービスまたはプロセスでエラーが発生すると、エラー・キャッチ・イベントがトリガーされます。これにより、プロセス・フローはエラー・キャッチ・イベントの送信シーケンス・フローのパスに進みます。

このフローを使用して、エラーの処理方法を定義できます。エラーは、次の2通りの方法のいずれかで処理されます。

  • プロセス・フローが、メイン・プロセス・フローに戻ります。実行する必要があるすべての作業は、メイン・フローに戻る前にエラー・プロセス・フロー内で処理されます。


    注意:

    境界イベントが非割込みである場合、境界フローはメイン・フローに戻ることができません。


  • プロセス・フローは終了イベントに移動します。プロセスは即時に停止されます。プロセスの制御は、そのプロセスを開始したサービスまたはプロセスに戻ります。

6.9 サブプロセスおよびインライン・ハンドラを使用したプロセスの整理

サブプロセスおよびインライン・ハンドラを使用して、プロセスを整理できます。機能領域をグループ化してプロセスをさらにわかりやすくできます。

6.9.1 サブプロセスの概要

サブプロセスを使用すると、BPMNフロー・オブジェクトをグループ化して、プロセスをさらにわかりやすくできます。Oracle BPMでは、サブプロセスは埋込みのサブプロセスとなります。サブプロセスは、親サブプロセスの一部として包含されます。サブプロセスは、None開始イベントで始まり、None終了イベントで終わる必要があります。

サブプロセスは開閉できます。図6-49は、プロセス内の閉じられたサブプロセスの表示を示しています。

図6-49 閉じられたサブプロセスの例

図6-49の説明が続きます
「図6-49 閉じられたサブプロセスの例」の説明

図6-50は、プロセス内の開かれたサブプロセスの表示を示しています。サブプロセスを開くと、サブプロセス内のフロー・オブジェクトを編集できます。また、サブプロセス・ウィンドウの端をクリックしてドラッグすると、ウィンドウのサイズを変更できます。

図6-50 開かれたサブプロセスの例

図6-50の説明が続きます
「図6-50 開かれたサブプロセスの例」の説明

他のタイプのプロセスと同様に、サブプロセスには開始イベントと終了イベントがあり、個別のプロセス・フローが含まれています。サブプロセスは、None開始イベントで始まり、None終了イベントで終わる必要があります。サブプロセスにスイムレーンを含めることはできません。

また、サブプロセスはアクティビティと同様に動作します。受信シーケンス・フローおよび送信シーケンス・フローを使用できます。また、サブプロセス内で使用されるデータ・オブジェクトを定義するデータ・アソシエーションが含まれています。

サブプロセスには、タイマー境界イベント、メッセージ境界イベントおよびエラー境界イベントを含めることもできます。

必要に応じて、プロセスにはネストしたサブプロセスを含めることができます。ただし、ネストしたサブプロセスは、プロセスをわかりやすくするために必要な場合にのみ使用してください。

6.9.1.1 サブプロセスとシーケンス・フロー

サブプロセス内のフロー・オブジェクトには、サブプロセス外部のフロー・オブジェクトに接続するシーケンス・フローを含めることができません。

他のフロー・オブジェクトと同様に、サブプロセスには、受信シーケンス・フローおよび送信シーケンス・フローがあります。

6.9.1.2 コンテキスト内のサブプロセス

図6-51は、サブプロセスの例を示しています。この例では、サブプロセスは、営業見積の処理に使用されるサービス・タスクをグループ化するために使用されています。

図6-51 サブプロセスの例

図6-51の説明が続きます
「図6-51 サブプロセスの例」の説明

6.9.1.3 ループ・サブプロセス

プロセス・フローのコンテキスト内で、複数回繰り返すようにサブプロセスを構成できます。ループは、プロセスの設計時にプロセス・アナリストが検討する必要がありますが、実装はプロセス開発者が行います。


注意:

Oracle Business Process Composerではループを構成できません。ループを構成するには、Oracle BPM Studioを使用する必要があります。詳細は、Oracle BPMモデリングおよび実装ガイドを参照してください。


6.9.2 インライン・ハンドラの概要

インライン・ハンドラはサブプロセスのタイプで、通常のプロセス・フローの外部で発生する条件をモデル化できます。

インライン・ハンドラは、次の開始イベントで使用できます。

  • エラー開始

  • タイマー開始

  • メッセージ開始

インライン・ハンドラをプロセスに追加すると、デフォルトでは、メッセージ開始イベントで作成されます。開始イベントのタイプは、必要に応じて変更できます。


注意:

一連のインライン・ハンドラには、1つの開始イベントのみを使用できます。ただし、プロセス内では複数のインライン・ハンドラを使用できます。


6.10 プロセス内のデータ・オブジェクトの値の変更

この項では、スクリプト・タスクを使用してプロセス内のデータ・オブジェクトの値を変更する方法について説明します。データ・オブジェクトの一般的な情報については、第10章「データ・オブジェクトおよび式の使用」を参照してください。

6.10.1 スクリプト・タスクの概要

スクリプト・タスクは、プロセス内のデータ・オブジェクトの値を変更するために使用します。スクリプト・タスクは、値の変更をビジネス・プロセス内で明示的に表示する場合、または別のフロー・オブジェクトの外部でデータ・オブジェクトの値を変更する場合に使用します。多くの場合、スクリプト・タスクは、プロセス開始時にデータ・オブジェクトの初期値を設定するために使用します。

図6-52は、スクリプト・タスクのデフォルトの表記を示しています。

図6-52 スクリプト・タスク

図6-52の説明が続きます
「図6-52 スクリプト・タスク」の説明

スクリプト・タスクは、プロセスおよびプロセスベースのアプリケーション内におけるデータ・オブジェクトの動作の定義を担当する、プロセス開発者がプロセスに追加します。

6.10.1.1 コンテキスト内のスクリプト・タスク

図6-53は、営業見積サンプルの開始時に使用される2つのスクリプト・タスクの例を示しています。営業見積サンプルでは、プロセス・インスタンスの作成時にデータ・オブジェクトに対して初期値を設定し、いくつかのビジネス・インジケータに値を設定するスクリプト・タスクが使用されています。

図6-53 営業見積サンプル内のスクリプト・タスク

図6-53の説明が続きます
「図6-53 営業見積サンプル内のスクリプト・タスク」の説明

プロジェクト・データ・オブジェクトは、プロジェクト内に定義するデータ・オブジェクトです。プロジェクト内のすべてのプロセスは、定義されているデータ・オブジェクトにアクセスしますが、実際の値はオブジェクトを使用するプロセスに応じて変化します。また、プロジェクトがビジネス・インジケータを使用するように構成されている場合には、ビジネス・インジケータとしてマークされたデータ・オブジェクトの値が、エンジンによってプロセス分析データベースに保存されます。

図6-54は、ビジネス・インジケータの初期値を設定するために使用されるデータ・アソシエーションを示しています。

図6-54 ビジネス・インジケータの設定スクリプト・タスクによって使用されるデータ・アソシエーション

図6-54の説明が続きます
「図6-54 ビジネス・インジケータの設定スクリプト・タスクによって使用されるデータ・アソシエーション」の説明

データ・アソシエーションを受け入れる他のフロー・オブジェクトと同様に、式を使用してデータ・オブジェクトの値を変更できます。図6-55は、割引プロジェクト変数の値を変更する場合の式の使用方法を示しています。

図6-55 割引プロジェクト変数の値の変更に使用される式

図6-55の説明が続きます
「図6-55 割引プロジェクト変数の値の変更に使用される式」の説明


注意:

BPM Studioを使用して、変換を使用するスクリプト・タスクを実装した場合、Business Process ComposerでBPMプロジェクトを開く際それらのタスクは表示されません。


6.11 測定マークを使用したプロセス・パフォーマンスの測定

測定マークを使用して、プロセス・パフォーマンスを測定できます。測定マークを使用すると、プロセス内の特定の位置、またはプロセスの特定のセクションにおいて、タイプが測定のビジネス・インジケータを測定できます。

測定マークおよびプロセス分析データベースの使用方法の詳細は、Oracle BPMモデリングおよび実装ガイドのプロセス分析の使用を参照してください。

測定マークによって、プロセス分析データベースに次のデータが保存されます。

1つの測定マークを使用して、複数の測定ビジネス・インジケータを測定できます。

BPMNサービス・エンジンでは、測定ビジネス・インジケータの値が保存されるときに、プロセスに定義されたディメンションの値も保存されます。後でプロセスを監視するためにダッシュボードを構築するときに、これらのディメンションを使用して値を様々なカテゴリにグループ化できます。たとえば、営業見積サンプルでは、承認済見積件数の合計を地域ごとに表示できます。

定義できる測定マークのタイプは次のとおりです。

6.11.1 プロセスへの測定マークの追加方法

測定マークは、コンポーネント・パレットからプロセス・エディタ・キャンバスにドラッグすることによって、ビジネス・プロセスに追加できます。

単一測定マークをプロセスに追加するには:

  1. BPMNプロセスを開きます。

  2. コンポーネント・パレットで、「アーティファクト」セクションを開き、次のいずれかを選択します。

    • 「測定の開始」マーク

    • 「測定の終了」マーク

    • 「単一測定」マーク(スナップショット)

  3. ビジネス・インジケータを測定するシーケンス・フロー付近まで測定マークをドラッグします。シーケンス・フローが青色になったら、測定マークをドロップします。

  4. 測定マークを右クリックして、「プロパティ」を選択します。

  5. 「名前」フィールドに、測定マークを識別するための名前を入力します。

  6. 「ビジネス・インジケータ」セクションで、使用可能なビジネス・インジケータのリストからビジネス・インジケータを選択し、2つのリストの間にある矢印を使用して「選択済」リストに移動します。


    注意:

    1つの測定マークで複数のビジネス・インジケータを測定できます。



    注意:

    ビジネス・インジケータを選択しない場合、この測定マークにはデフォルト・ビジネス・インジケータの値のみが保存されます。「測定マーク・プロパティ」ダイアログ・ボックスを開いた状態でビジネス・インジケータを追加するには、「選択済」リストの下にある「新規」ボタンをクリックします。


  7. 「OK」をクリックします。