Oracle® Fusion Middleware Oracle Business Process Management Business Process Composerユーザーズ・ガイド 11g リリース1(11.1.1.4.0) B61410-02 |
|
![]() 前 |
![]() 次 |
この章では、Oracle Business Process Management Suite内部でBusiness Process Management Notation and Modeling (BPMN)を使用して、ビジネス・プロセスを作成およびモデリングする方法について説明します。
この章では、オラクル社のBPMN 2.0の実装に関する具体的な情報について説明します。営業見積サンプル・プロジェクトを使用したBPMNの概要説明については、第2章「ビジネス・プロセス設計の概要」を参照してください。正式な仕様を含むBPMNの一般的な情報については、http://www.bpmn.orgを参照してください。
この章は、ビジネス・プロセスで実行する必要がある様々なタイプのタスクで構成されています。この章には次の項が含まれます。
この項では、スイムレーンを使用してプロセスを整理する方法を示します。また、ロールを使用してプロセスベースのアプリケーションの作業を実行するビジネス組織のメンバーを決定する方法についても説明します。
ビジネス・プロセスの設計においては、ユーザー相互作用を必要とする各タスクを完了させる責任を負うユーザーおよびロールを決定することが重要となります。プロセスにおいて、ロールは、ビジネス・プロセス内で実行される作業の実行責任者をモデリングするために使用されます。ロールを使用すると、組織内の職務や責任を表す機能上のカテゴリを定義できます。
また、プロセスに定義されたロールは、論理ロールとも呼ばれます。Oracle BPMプロジェクトがランタイム環境にデプロイされると、これらのロールは、実際の組織におけるユーザーに対応するLDAPロールにマップされます。
ロールは水平のスイムレーンに割り当てられます。スイムレーンには、プロセス内のアクティビティおよびタスクを完了する責任を負うロールが表示されます。Business Process Composerを使用すると、プロセス内で必要なロールを作成および編集して、それらをスイムレーンに割り当てることができます。
Oracle BPM Studioを使用すると、LDAPを使用する特定のユーザーにロールをマップすることもできます。また、Oracle BPM Studioでは、組織単位、カレンダおよび休日を使用して、より堅牢な組織モデルを作成できます。
プロセス・アナリストは、ビジネス・プロセスを設計するときにどのようなロールが必要となるかを決定します。
営業見積サンプルでは、次のロールが定義されています。
営業担当者: 営業担当者は、プロジェクトに定義された他のロールによって承認されるまでの間における、営業見積の作成および更新を担当します。
承認者: 承認者は、営業見積で定義された製品と価格設定構成の組合せの承認を担当します。
ビジネス実行: このロールは、営業見積の参照および承認を担当するユーザーを表します。これらのユーザーは、営業見積のレビューにおいて、追加の承認者を追加する権限も持っています。
契約: このロールは、営業見積に指定された条項の承認を担当するユーザーを表します。これらのユーザーは、顧客に転送可能な正式な法的文書の作成も担当します。
営業見積サンプル・プロジェクトの詳細は、2.2項「営業見積サンプルの概要」を参照してください。
スイムレーンは、プロセス・エディタを横方向に走る水平線です。すべてのフロー・オブジェクトは、スイムレーン内に配置する必要があります。
また、スイムレーンを使用して、プロセス内で定義されているロールに基づいてフロー・オブジェクトをグループ化することもできます。ユーザー・タスクを含むスイムレーンには、ロールを割り当てる必要があります。スイムレーンは、プロセス内の各フロー・オブジェクトを実行するロールを視覚的に表示します。また、複数のスイムレーンを同じロールに割り当てることができます。
同じプロセスの様々な部分で同じロールを使用する必要がある場合、スイムレーンを使用することでプロセスが読みやすくなります。
新しいプロセスを作成すると、Oracle BPM StudioおよびBusiness Process Composerによってデフォルトのスイムレーンが作成されます。必要に応じて、プロセスに追加のスイムレーンを追加できます。プロセスに対話型アクティビティや手動アクティビティを追加する場合は、スイムレーンにロールを割り当てる必要があります。
新しい手動プロセスを作成する場合は、プロセス作成のためのウィザードの一部としてロールを指定する必要があります。
注意: 開始イベントおよび終了イベントを含むスイムレーンのロールは削除できません。 |
BPMNプロセスにロールおよびスイムレーンを追加できます。
プロセスに新しいスイムレーンおよびロールを追加するには:
スイムレーンを追加するプロセスを開きます。
コンポーネント・パレットからフロー・オブジェクトを選択し、それを既存のスイムレーンの下のプロセス・キャンバスにドラッグ・アンド・ドロップします。
新しいスイムレーンが作成されます。ユーザー・タスクまたは手動タスクを追加した場合、スイムレーンには、デフォルトのロール名が含まれています。
Oracle BPM Studioでは、組織単位、カレンダおよび休日に基づいて、複雑な組織モデル内にロールを統合できます。
Business Process Composerでプロジェクト・テンプレートに基づいてプロジェクトを作成または編集するときに、そのプロジェクト内に定義されたロールにアクセスできます。ただし、プロジェクト内に定義された組織情報は表示または編集できません。
また、Business Process Composerを使用して新しいロールを作成することもできます。これらのロールは、プロジェクトの全体的な組織情報の一部として統合されます。
この項では、プロセスの開始と終了を定義するために使用するBPMNフロー・オブジェクトについて説明します。
開始イベントは、プロセスの開始点を定義するBPMNフロー・オブジェクトです。開始イベントには様々なタイプがあり、それによってプロセス・インスタンスの作成方法が定義されます。
一方、終了イベントはプロセスの終了点を定義します。終了イベントには様々なタイプがあり、それによってプロセス・インスタンス完了時の処理が定義されます。
注意: Oracle BPMでは、すべてのBPMNプロセスに少なくとも1つの開始イベントと1つの終了イベントが必要です。 |
開始イベントではプロセスの始まりを定義するため、受信シーケンス・フローは含まれません。同じく、終了イベントには送信シーケンス・フローを含めることができません。
ただし、None開始イベントとNone終了イベント以外の開始イベントと終了イベントには、プロセスへの入力と出力を含めることができます。
新しいプロセスを作成すると、Oracle BPM StudioおよびBusiness Process Composerがデフォルトの開始イベントと終了イベントを作成します。作成される開始イベントと終了イベントのタイプは、作成するプロセスのタイプによって異なります。
表6-1は、各プロセス・タイプのデフォルトの開始イベントと終了イベントを示しています。
表6-1 各プロセス・タイプのデフォルトの開始イベントおよび終了イベント
プロセス・タイプ | デフォルトの開始および終了イベント・タイプ |
---|---|
デフォルト・プロセス(Oracle BPM Studioのみ) |
メッセージ開始および終了イベント |
非同期サービス |
メッセージ開始および終了イベント |
同期サービス |
メッセージ開始および終了イベント |
手動プロセス |
None開始および終了イベント |
Oracle BPMでサポートされている様々なタイプのプロセスの詳細は、5.1項「Business Process Composerでのプロセスの使用」を参照してください。
サブプロセスには、デフォルトでNone開始イベントおよびNone終了イベントが含まれています。これらは必須の開始イベントおよび終了イベントであり、変更できません。
イベント・サブプロセスには、デフォルトでメッセージ開始イベントおよびNone終了イベントが含まれています。ただし、処理するイベントのタイプに応じて、開始イベントを変更できます。
1つのBPMNプロセスに、複数の開始点を定義できます。複数の開始点を定義すると、使用される開始イベントに応じて、プロセス・インスタンスの複数の作成方法を指定できます。
図6-2は、メッセージ開始イベントとタイマー開始イベントの両方を含むプロセスの例を示しています。
このプロセスは、他のプロセスまたはサービスから呼び出されたときにメッセージ・イベントを使用して開始できます。また、プロセス・インスタンスを自動的に作成する必要がある場合は、一定の時間間隔に基づいて開始することもできます。
複数の開始イベントを使用すると、2つの異なるプロセスを作成することなく、1つのプロセスが複数の方法で開始されるようにできます。
終了イベントは、プロセス・パスの終わりを示します。プロセスに1つしか終了イベントがないときに、トークンがその終了イベントに到達すると、終了イベント到達時にプロセスが停止します。
注意: メッセージ終了イベントは、メッセージ開始イベントによって起動されたプロセスを終了するためにのみ使用できます。また、1つのメッセージ開始イベントに関連付けられているメッセージ終了イベントが複数ある場合、これらのメッセージ終了イベントのそれぞれの出力引数の量とタイプは同じである必要があります。 |
複数の終了イベントを使用している場合は、1プロセス内で様々なトークンが様々なパスを経由する可能性があります。通常は、すべてのパラレル・パスが終了イベントに達して初めてプロセスが完了します。
ただし、次のような特別な場合には、すべてのプロセス・パスが完了する前にプロセス・インスタンスが停止することがあります。
エラー終了イベント: エラー終了イベントに達すると、すべてのプロセス・アクティビティが停止します。エラー・スロー・イベントと同様に、エラー終了イベントでは、プロセスのフローが停止されます。詳細は、6.2.9項「エラー終了イベントの概要」を参照してください。
強制終了イベント: 強制終了イベントが発生すると、プロセス上のすべての作業が即時に停止します。エラー処理や、その他の実行中プロセスのクリーン・アップは行われません。詳細は、6.2.11項「強制終了イベントの概要」を参照してください。
Oracle BPMでは、プロセス・インスタンスをトリガーするために次の方法がサポートされています。
メッセージ開始イベント、シグナル開始イベントまたはタイマー開始イベントを使用する方法。詳細は、次の各項を参照してください。
受信タスクが後に続くNone開始イベントを使用する方法。プロセス・インスタンスを作成するには、受信タスクを構成する必要があります。詳細は、6.4.4項「受信タスクの概要」を参照してください。
イニシエータ・パターンを使用して定義されたユーザー・タスクが後に続くNone開始イベントを使用する方法。詳細は、6.3.2項「ユーザー・タスクの概要」を参照してください。
新しいプロセス・インスタンスを作成するように構成されたEvent-based Gatewayを使用する方法。詳細は、6.12.2項「ガイド付きビジネス・プロセスの使用」を参照してください。
None開始イベントは、インスタンス・トリガーが明確に定義されていないときに使用します。プロセスで必要な開始イベントが不明な場合、または開始イベントが後でプロセス開発者によって定義および実装される場合、プロセス・アナリストはNone開始イベントをプレースホルダとして使用できます。
図6-3は、None開始イベントのデフォルトの表記を示しています。
None開始イベントは、プロセス・インスタンスが別のフロー・オブジェクトで作成される場合に、プロセスの始まりを指定するためにも使用されます。通常、None開始イベントは新しいプロセス・インスタンスの作成をトリガーしません。
ただし、次のタスクとともに使用する場合、None開始イベントは新しいプロセス・インスタンスをトリガーします。
受信タスク。受信タスクでは、「インスタンスの作成」プロパティがtrueに設定されている必要があります。
ユーザー・タスク。イニシエータ・パターンを使用して実装されたユーザー・タスク。
他の開始イベントと同様に、None開始イベントも受信シーケンス・フローを含むことはできません。含むことができるのは、デフォルトの送信シーケンス・フローのみです。
注意: Noneイベントは、サブプロセスの開始を定義するときに常に使用されます。 |
図6-4は、営業見積サンプル・プロジェクト内のNone開始イベントの例を示しています。この例では、None開始イベントによってプロセスの開始が定義されています。また、プロセスにはイニシエータ・パターンを使用して実装されたユーザー・タスクが含まれているため、None開始イベントによってプロセス・インスタンスがトリガーされます。
メッセージ開始イベントは、メッセージを受信するとプロセス・インスタンスをトリガーします。このメッセージは、別のBPMNまたはBPELプロセス、あるいはサービスから送信されます。
メッセージとは、プロセス間で情報を交換するために使用されるタイプのデータです。データ・オブジェクトが、プロジェクト内で使用されるデータを定義するために使用されるのと同様に、メッセージは、プロセス間またはプロセスとサービスとの間で使用されるデータを定義するために使用されます。
図6-5は、メッセージ開始イベントのデフォルトの表記を示しています。
他の開始イベントと同様に、メッセージ開始イベントには受信シーケンス・フローを含めることができません。メッセージ開始イベントには、デフォルトの送信シーケンス・フローが必要です。
他のプロセスやアプリケーションがプロセスを起動できるように、BPMNプロセスをサービスとして公開できます。プロセスをサービスとして公開するには、プロセスをメッセージ開始イベントで開始する必要があります。詳細は、Oracle BPMモデリングおよび実装ガイドの他のBPMNプロセスおよびサービスとの通信を参照してください。
図6-6は、営業見積プロセスの修正バージョンを示しています。ここでは、プロセスは、プロセス・インスタンスを開始するメッセージ開始イベントから開始されています。
シグナル開始イベントは、別のプロセスまたはサービスからの通信に基づくという点でメッセージ開始イベントに似ています。ただし、メッセージ開始イベントは、特定のプロセスに送信されたメッセージに応答します。対照的に、シグナル開始イベントは複数のプロセスにブロードキャストされたシグナルに対するレスポンスです。
シグナルは、BPMNプロセスからシグナル・スロー・イベントを使用してブロードキャストできます。シグナル・スロー・イベントとシグナル開始イベントを組み合せて使用すると、複数のプロセスを同時に起動できます。
シグナル開始イベントとシグナル・スロー・イベントは、プロセス開発者によってプロセスに追加されます。シグナル・スロー・イベントの実装の詳細は、Oracle BPMモデリングおよび実装ガイドのシグナル・イベントを使用したプロセス間の通信の概要を参照してください。
図6-7は、シグナル開始イベントのデフォルトの表記を示しています。
タイマー開始イベントは、特定の時間条件に基づいてプロセス・インスタンスの作成をトリガーします。タイマー開始イベントは、次の内容に基づいてプロセス・インスタンスをトリガーするように構成できます。
特定の日付および時刻。たとえば、12月31日の午後11時59分にプロセスをトリガーできます。
繰返し間隔。たとえば、10時間ごと、5分ごと、32秒ごとにプロセスをトリガーできます。
図6-8は、タイマー開始イベントのデフォルトの表記を示しています。
エラー開始イベントは、インライン・ハンドラの開始イベントとして使用されます。インライン・ハンドラを使用して、プロセス内で発生するエラーに対応する個別のプロセス・フローを定義できます。
図6-10は、None終了イベントのデフォルトの表記を示しています。
注意: 注意: エラー開始イベントを使用できるのは、インライン・ハンドラ内のみです。通常のプロセス・フロー内では使用できません。 |
複数のインライン・ハンドラを指定して、エラーの状況に対応できます。ただし、同じ例外を使用するインライン・ハンドラを複数定義することはできません。
None終了イベントは、プロセス・パスの終わりを示すために使用します。トークンは、None終了イベントに到達すると消費されます。プロセス・インスタンス内に他のトークンがない場合は、インスタンスが完了します。
None終了イベントは、プロセス完了後にアクションを実行する必要がない場合に使用します。また、このイベントは、後で実装時にプロセス開発者が変更するためのプレースホルダとして、プロセス・アナリストが使用することもできます。
図6-10は、None終了イベントのデフォルトの表記を示しています。
None終了イベントは、サブプロセスおよびイベント・サブプロセスの終わりを示すときに常に使用されます。
図6-11は、営業見積サンプル内のNone終了イベントの例を示しています。この例では、営業見積サービス・タスクを使用して、営業見積に関する情報をデータベースに保存しています。
トークンがプロセスの終わりに到達した場合は、他の作業を実行できないため、None終了イベントが使用されています。プロセス・トークンがすべてNone終了イベントに到達すると、プロセス・インスタンスが完了します。
エラー終了イベントは、エラー状態が原因でプロセスを終了する場合に使用します。
通常、エラー終了イベントは、エラー境界イベントとともに使用します。エラー境界イベントは、特定のエラーに基づいてプロセス・フローを変更するために使用します。通常、エラー境界イベントを使用したフローは、エラー終了イベントを使用して終了します。エラー中間イベントの使用方法の詳細は、6.8.3項「エラー・キャッチ・イベントの概要」を参照してください。
図6-12は、エラー終了イベントのデフォルトの表記を示しています。
エラー終了イベントの実装の詳細は、Oracle BPMモデリングおよび実装ガイドを参照してください。
メッセージ終了イベントは、プロセス完了時に他のプロセスやサービスにメッセージを送信するために使用します。メッセージ終了イベントは、常にメッセージ開始イベントまたはメッセージ・キャッチ・イベントとともに使用します。
注意: 複数の終了イベントを持つプロセスを作成する場合は、メッセージ終了イベントに到達するすべてのトークンがメッセージ開始イベントによって作成されることを確認する必要があります。たとえば、タイマー開始イベントによって開始されたプロセス・インスタンスを終了するためにメッセージ終了イベントを使用することはできません。 |
図6-13は、メッセージ終了イベントのデフォルトの表記を示しています。
メッセージ・スロー・イベントの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドのメッセージ・イベントを使用した、他のBPMNプロセスおよびサービスとの通信を参照してください。
強制終了イベントは、即時にプロセスを終了するために使用します。強制終了イベントに到達すると、プロセスは即時に終了します。エラー処理や、追加のクリーン・アップは行われません。
多くのビジネス・アプリケーションでは、組織内のプロセス参加者からの相互作用が必要です。相互作用は、フォームに情報を入力するなどの単純な操作の場合や、複数のワークフローおよび複数のユーザーが関与する場合があります。
この項では、プロセス参加者がビジネス・プロセスと相互作用する方法をモデリングするために使用されるBPMNフロー・オブジェクトについて説明します。内容は次のとおりです。
多くのエンドツーエンドのビジネス・プロセスでは、プロセスとの手動による相互作用が必要です。承認、例外管理、ビジネス・プロセスを進めるために必要なアクティビティの実行などにユーザーの相互作用が必要となります。
Oracle Human Workflowでは、次の機能によってユーザーの参加が包括的にサポートされます。
適切なユーザーまたはグループに対するタスクの割当ておよびルーティングを含む、プロセスとの手動による相互作用
タスクが適切なタイミングで実行されることを保証するために必要な期限、エスカレーション、通知およびその他の機能
プロセス参加者が各自のタスクを実行するときの生産性を向上するために必要な組織、フィルタ、優先順位付けおよびその他の機能。
スーパーバイザおよびビジネス所有者がタスクのパフォーマンスを管理するために必要なレポート、再割当て、ロード・バランシングおよびその他の機能。
詳細は、Oracle Fusion Middleware Oracle SOA Suite開発者ガイドのヒューマン・ワークフローの概要を参照してください。
ヒューマン・タスクは、Oracle Human Workflowのコンポーネントの1つです。ヒューマン・タスクを使用すると、エンドツーエンドのプロセス・フロー内のシステムおよびサービスとの接続を使用して、手動による相互作用をインタリーブできます。ヒューマン・タスクの役割は、ビジネス・プロセスに参加しているユーザーおよびグループのすべての相互作用を処理することです。これを行うために、組織内で該当するユーザーのタスクを作成して追跡しています。ユーザーは通常、ワークリスト・アプリケーション、電子メール、ポータル、カスタム・アプリケーションなどの各種クライアントを通じてタスクにアクセスします。
プロセス開発者は、ヒューマン・タスクを使用して、Oracle BPM SuiteおよびSOA Suiteを使用して作成されたプロセスベースのアプリケーションとプロセス参加者との相互作用の方法を定義できます。
プロセス開発者はヒューマン・タスクを使用して次の要素を作成することで、エンド・ユーザー相互作用のインタフェースとワークフローを定義できます。
ロールと割当て
期限とエスカレーション
プレゼンテーション
ヒューマン・タスクは、同じUIを使用する他のプロセス内で使用できる再使用可能なサービスです。ヒューマン・タスクは、Oracle BPM Studioを使用して作成されます。
注意: Business Process Composerを使用して、BPM Studioで作成したプロジェクトやプロジェクト・テンプレートでヒューマン・タスクを使用できます。Business Process Composerでヒューマン・タスクを作成または編集することはできません。 |
ユーザー・タスクは、プロセス内で、プロセス参加者が作業を実行する必要がある部分を表します。ユーザー・タスクは、フォームへの入力などの単純な相互作用である場合もあれば、複数のプロセス参加者からの入力を必要とする複雑なワークフローの一部である場合もあります。
図6-14は、ユーザー・タスクのデフォルトの表記を示しています。
Oracle BPM Suiteでは、プロセス参加者はOracle BPM WorkSpaceを使用してビジネス・アプリケーションと相互作用を行います。プロセス参加者に対して表示される画面やパネルなどの具体的なユーザー・インタフェース要素は、ヒューマン・タスクを使用して作成します。
プロセスの設計時には、多くの場合、プロセス・アナリストがユーザー・タスクをプロセス図に追加します。その後、プロセス開発者が必要なヒューマン・タスクを作成し、プロセスベースのビジネス・アプリケーション作成の構成要素として実装します。
トークンがユーザー・タスクに到達すると、対応するヒューマン・タスクが実行されます。トークンは、ヒューマン・タスクが完了するまで待機してから、次のフロー・オブジェクトに移動します。
ビジネス・カタログの要素をユーザー・タスクに割り当てる手順については、5.4.1項「ビジネス・カタログ・コンポーネントをフロー・オブジェクトに割り当てる方法」を参照してください。
ユーザー・タスクの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドのヒューマン・タスクの使用を参照してください。
他のフロー・オブジェクトと同様、ユーザー・タスクには受信および送信データ・アソシエーションを含めることができます。
また、ユーザー・タスクには、受信シーケンス・フローおよびデフォルトの送信シーケンス・フローを含めることもできます。
注意: Business Process Composerでは、Oracle BPM Studioでプロジェクト・テンプレートの構成要素として作成したユーザー・タスクにヒューマン・タスクを割り当てる操作のみを実行できます。新規ヒューマン・タスクの作成や既存ヒューマン・タスクの編集を行うことはできません。 |
営業見積サンプルでは、見積入力タスク(図6-15を参照)は見積情報を入力する作業を表します。
ユーザーが営業見積に関する情報を入力すると、プロセス・フローは送信シーケンス・フローに従ってプロセス内の次のフロー・オブジェクトに移動します。
Oracle BPM Studioを使用すると、対話型アクティビティをコンポーネント・パレットからプロセスに直接追加できます。対話型アクティビティは、Oracle Human Workflowのタスク・ルーティング機能および承認機能に基づくショートカットです。詳細は、Oracle Fusion Middleware Oracle SOA Suite開発者ガイドのヒューマン・ワークフローの概要を参照してください。
注意: 対話型アクティビティは、Business Process Composerのコンポーネント・パレットからは利用できません。Business Process Composerを使用してユーザーの相互作用をモデリングするには、プロセスに一般的なユーザー・タスクを追加します。対話型アクティビティは、プロセス開発者がOracle BPM Studioを使用して実装できます。 |
表6-2は、Oracle BPM Studioのコンポーネント・パレットから利用できる対話型アクティビティを示しています。
表6-2 対話型アクティビティ
パターン | 説明 |
---|---|
複合 |
ヒューマン・タスク内に定義されている複雑なルーティング・フローを使用します。 |
管理 |
スイムレーンに割り当てられたグループまたはロールに属するプロセス参加者の管理チェーン・パターンに割当て先を設定する管理チェーン・パターンを使用します。 |
FYI |
割当てはスイムレーンに定義された参加者、ロールまたはグループに基づきます。FYIアクティビティはユーザー対話型アクティビティに類似していますが、完了を待機せずに処理を続行する点が異なります。 |
グループ |
グループ投票パターンを使用します。タスクの割当て先はレーンに関連付けられたロールまたはグループに自動的に設定されます。この対話型アクティビティはロールまたはグループに関連付けられたスイムレーンにのみ追加できます。 |
イニシエータ |
イニシエータ・パターンは、プロセス・インスタンスを作成するために使用します。 |
Oracle BPM Studioを使用して、ヒューマン・タスクをビジネス・カタログに追加できます。プロセス・アナリストは、プロジェクト・テンプレートから作成されたプロジェクトを使用するときに、Business Process Composerでこれらのヒューマン・タスクを使用できます。
注意: Business Process Composerを使用してヒューマン・タスクを作成または編集することはできません。ヒューマン・タスクは、Oracle BPM Studioを使用して作成します。 |
ユーザー・タスクをプロジェクト・テンプレートに追加してBusiness Process Composer内で使用する場合は、次のガイドラインに従ってください。
プロセス開発者は、Business Process Composerでテンプレートを使用する前に、必要なすべてのヒューマン・タスク・サービスをOracle BPM Studioで作成する必要があります。ヒューマン・タスクは、ユーザー・タスク内に実装することも、プロジェクト・テンプレートに基づいてプロジェクトを編集するときに実装することもできます。
ただし、プロジェクト・テンプレート内でシールされたユーザー・タスクに対してヒューマン・タスク・サービスを実装する場合は、Business Process Composerでプロジェクト・テンプレートを使用する前にも実装を行う必要があります。
手動タスクは、Oracle BPMのスコープ外のプロセス参加者が実行するタスクを表します。手動タスクはプロセス内のプレースホルダとして使用され、実行時にBPMNサービス・エンジンによって管理されない作業を示します。また、手動タスクはOracle WorkSpaceアプリケーションには表示されません。
注意: 手動タスクはOracle BPMによって管理されません。Oracle BPMランタイムでは、手動タスクの開始および完了は追跡されません。 |
図6-16は、手動タスクのデフォルトの表記を示しています。
手動タスクでは、デフォルト受信シーケンス・フローとデフォルト送信シーケンス・フローをそれぞれ1つのみ使用できます。
多くのBPMNフロー・オブジェクトと異なり、手動タスクではデータ・オブジェクトを操作できません。以前のフロー要素に関連付けられたデータ・オブジェクトはそのままの状態で次のフロー要素に渡されます。
営業見積サンプルのコンテキストでは、図6-17に示すように正式な契約書を印刷して署名するための手動タスクを追加できます。
この例では、正式な契約書への署名をビジネス・プロセスの一部として明示的に示す必要がありますが、署名はBPMNサービス・エンジンによって管理されないため、手動タスクが使用されています。
Oracle BPMでは、プロセス指向アプリケーション内のビジネス・プロセス間の相互作用を定義できます。以降の項では、プロセス間の通信のモデリングに使用されるBPMNフロー・オブジェクトについて説明します。
この項では、Business Process Composerを使用してプロセス・モデルを作成する場合のこれらのフロー・オブジェクトの使用方法について説明します。プロセスベースのアプリケーションにおけるこれらのフロー・オブジェクトの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドを参照してください。
サービス・タスクを使用すると、他のプロセスおよびサービスと通信できます。プロセス・アナリストは、プロセスで外部サービスまたは外部プロセスを呼び出す必要がある場合、サービス・タスクを追加できます。
その後、プロセス開発者は必要なサービスを実装できます。サービス・タスクを使用して、次を呼び出すことができます。
他のBPMNプロセス
BPELプロセス
SOAサービス・アダプタ
サービスとして公開されているメディエータ
ビジネス・カタログの要素をサービス・タスクに割り当てる手順については、5.4.1項「ビジネス・カタログ・コンポーネントをフロー・オブジェクトに割り当てる方法」を参照してください。
サービス・タスクの動作は、送信タスクと受信タスクのペアの動作、およびメッセージ・スロー・イベントとメッセージ・キャッチ・イベントのペアの動作と似ています。主な違いは、サービス・タスクがプロセスおよびサービスを同期的に起動するために使用される点です。サービス・タスクがプロセスやサービスを起動すると、レスポンスが返されるまで、トークンはサービス・タスクで待機します。レスポンスを受信した後、トークンはプロセス内の次のシーケンス・フローに移動します。
サービスおよびBPMNプロセスを使用したサービス・タスクの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドのサービス・タスクを使用した、サービスおよびBPMNプロセスの同期操作の起動を参照してください。
図6-18は、サービス・タスクのデフォルトの表記を示しています。
コール・アクティビティを使用すると、再使用可能なプロセスを現在のプロセス内からコールできます。被コール側プロセスは、コール側プロセスの子プロセスになります。再使用可能なプロセスをコールしている場合、親プロセスのコール・アクティビティは、子プロセスが完了するまで待機してから処理を続行します。
図6-20は、コール・アクティビティのデフォルトの表記を示しています。
親プロセスのデータ・オブジェクトは、再使用可能なプロセスに対して自動的に使用可能になりません。データ・オブジェクトは、コール・アクティビティの引数マッピングを使用して、子プロセスとの間で受け渡す必要があります。
Oracle BPMでは、再使用可能なプロセスというプロセス・タイプをサポートしています。BPMN用語では、再使用可能なサブプロセスと呼ばれることもあります。再使用可能なプロセスを使用すると、別のBPMNプロセスからコールできるプロセスを作成できます。
再使用可能なプロセスを使用すると、別のBPMNプロセスからコールできるプロセスを作成できます。たとえば、すべてのプロセスにクレジット・カード払いが必要な場合は、再使用可能なクレジット・カード払いのサブプロセスを作成できます。
再使用可能なプロセスには、次の特性があります。
単一のNone開始イベントで開始する必要があります。
複数の終了イベントを含めることができます。
コールできるのは、別のBPMNプロセスのみです。
送信タスクでは、現在のプロセス外部のシステムまたはプロセスにメッセージが送信されます。このメッセージが送信されると、タスクは完了し、プロセスの実行はプロセス・フロー内の次のタスクに移動します。
多くの場合、送信タスクは受信タスクと組み合せて使用され、プロセスまたはサービスを起動してレスポンスを受信します。送信タスクおよび受信タスクは非同期的にプロセスおよびサービスを起動するために使用します。プロセスおよびサービスを同期的に起動する場合は、サービス・タスクを使用します。
注意: 送信タスクおよび受信タスクでは、メッセージ・スロー・イベントおよびメッセージ・キャッチ・イベントと同様の機能が実行されます。ただし、メッセージ開始イベントによって開始されるプロセスは、送信タスクを使用して起動できません。 |
図6-21は、送信タスクのデフォルトの表記を示しています。
プロセスまたはサービスを起動するための送信タスクの実装の詳細は、Oracle BPMモデリングおよび実装ガイドの送信タスクおよび受信タスクを使用した、BPMNプロセスでの同期操作の定義を参照してください。
プロセス間で通信するための送信タスクおよび受信タスクの使用方法の詳細は、第6章「送信タスクおよび受信タスクを使用した、プロセス間の通信」を参照してください。
送信タスクとは対照的に、受信タスクでは、現在のプロセス外部のシステムまたはプロセスからのメッセージを待機します。このメッセージを受信すると、タスクは完了し、プロセスの実行はプロセス・フロー内の次のタスクに移動します。
図6-22は、受信タスクのデフォルトの表記を示しています。
プロセスまたはサービスを起動するための送信タスクの実装の詳細は、Oracle BPMモデリングおよび実装ガイドの送信タスクおよび受信タスクを使用した、BPMNプロセスでの同期操作の定義を参照してください。
プロセス間で通信するための送信タスクおよび受信タスクの使用方法の詳細は、6.4.5項「送信タスクおよび受信タスクを使用した、プロセス間の通信」を参照してください。
受信タスクを使用して、プロセスの開始をトリガーできます。これは、他のプロセスから送信タスクを使用してプロセスを起動する場合に役立ちます。
受信タスクを使用してプロセスを開始する場合は、次の条件を満たしている必要があります。
受信タスクの前にNone開始イベントがあること。
プロセスに他の開始イベントが含まれていないこと。
「インスタンスの作成」プロパティが有効であること。
次の項では、プロセス間の通信で送信タスクおよび受信タスクを使用する方法について説明します。
送信タスクおよび受信タスクを使用すると、他のBPMNプロセスを起動して、起動したプロセスからメッセージを受信できます。受信タスクによって開始され、送信タスクを含むプロセスは、Oracle BPMアプリケーション内の他のプロセスやサービスから使用できるサービスとして公開されます。
図6-23は、送信タスクおよび受信タスクを使用してプロセスを起動し、レスポンスを受信する場合の基本的な動作の概要を示しています。
次の手順は、送信タスクおよび受信タスクを使用してプロセス間で通信する場合のシナリオの例を示しています。
プロセスAが起動されます。
プロセスAのトークンが送信タスクに到達します。
送信タスクによって、プロセスBが起動されます。
この動作は、送信タスクの実装によって定義されます。
プロセスAのトークンは、プロセスの次のフロー・オブジェクトに進みます。
受信タスクによって、プロセスBのプロセス・インスタンスが開始されます。
受信タスクには、「インスタンスの作成」プロパティが定義されている必要があります。6.4.4.2項を参照してください。
新しく作成されたトークンがプロセスBに沿って進みます。
プロセスの具体的な動作に応じて、次のシナリオが発生する場合があります。
プロセスAのトークンが、プロセスBからの送信タスクとペアになっている受信タスクに到達すると、プロセスAのトークンはレスポンスを受信するまで待機します。レスポンスを受信した後、プロセスAのトークンは次のフロー・オブジェクトに移動します。
プロセスBのトークンが、プロセスA内の受信タスクとペアになっている送信タスクに到達すると、プロセスBはプロセスAにレスポンスを送信します。プロセスBのトークンは、次のフロー・オブジェクトに移動します。
両方のプロセスが引き続き実行されます。この後に、さらに送信タスクと受信タスクのペアを使用して、2つのプロセス間での通信を定義できます。
メッセージ・スロー・イベントを使用すると、他のプロセスまたはサービスにメッセージを送信できます。
図6-24は、メッセージ・スロー・イベントのデフォルトの表記を示しています。
メッセージ・スロー・イベントを使用すると、次のタイプのプロセスおよびサービスを起動できます。
他のBPMNプロセス
BPELプロセス
SOAサービス・アダプタ
サービスとして公開されているメディエータ
プロセス・アナリストは、プロセスにメッセージ・スロー・イベントを追加して、プロセスから他のプロセスやサービスを呼び出す必要がある位置を定義できます。ただし、他のプロセスとの接続の実装は、通常はプロセス開発者が担当します。また、メッセージ・スロー・イベントによって起動されるサービスの作成および実装も、通常はプロセス開発者が担当します。
メッセージ・スロー・イベントの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドのメッセージ・イベントを使用した、他のBPMNプロセスおよびサービスとの通信を参照してください。
多くの場合、メッセージ・スロー・イベントは、他のプロセスのメッセージ開始イベントを呼び出すことによって他のBPMNプロセスを起動するために使用します。詳細は、6.2.4項「メッセージ開始イベントの概要」を参照してください。
また、多くの場合、メッセージ・スロー・イベントは、起動したプロセスまたはサービスからレスポンスを受信するメッセージ・キャッチ・イベントとともに使用します。ただし、メッセージ・スロー・イベントは常に非同期的に使用されます。メッセージ・スロー・イベントから他のプロセスまたはサービスにメッセージが送信された後、トークンは即時にプロセスの次のフロー・オブジェクトに移動します。
プロセスで同期的にレスポンスを受信する場合は、サービス・タスクを使用してプロセスまたはサービスを起動します。詳細は、6.4.1項「サービス・タスクの概要」を参照してください。
注意: 送信タスクおよび受信タスクでは、メッセージ・スロー・イベントおよびメッセージ・キャッチ・イベントと同様の機能が実行されます。ただし、メッセージ受信タスクによって開始されるプロセスをメッセージ・スロー・イベントを使用して起動することはできません。 |
メッセージ・キャッチ中間イベントでは、別のプロセスまたはサービスからのメッセージを受信できます。
図6-25は、メッセージ・キャッチ・イベントのデフォルトの表記を示しています。
多くの場合、メッセージ・キャッチ・イベントは、他のBPMNプロセスと通信するためのメッセージ・スロー・イベントとともに使用されます。メッセージ・スロー・イベントとメッセージ・キャッチ・イベントを組み合せて使用する方法の詳細は、6.4.8項を参照してください。
メッセージ・スロー・イベントの実装方法の詳細は、Oracle BPMモデリングおよび実装ガイドのメッセージ・イベントを使用した、他のBPMNプロセスおよびサービスとの通信を参照してください。
スロー・イベントとキャッチ・イベントを組み合せて使用することによって、他のBPMNプロセスを起動したり、他のBPMNプロセスと通信できます。スロー・イベントを使用して他のプロセスを起動する場合は、次の条件を満たしている必要があります。
起動されるプロセスは、非同期プロセスである必要があります。メッセージ・スロー・イベントを使用して同期プロセスを起動することもできますが、起動したプロセスから同期的にメッセージをキャッチするメカニズムは用意されていません。
同期プロセスを起動する場合は、サービス・タスクを使用します。詳細は、6.4.1項「サービス・タスクの概要」を参照してください。
最初にメッセージ・スロー・イベントを使用する場合は、他のプロセスのメッセージ開始イベントとペアにする必要があります。これは、プロセス・インスタンスをトリガーするために必要となります。インスタンスがトリガーされた後は、2つ目のプロセスによってキャッチされる後続のメッセージ・スロー・イベントを使用できます。
メッセージ開始イベントで開始し、メッセージ終了イベントで終了するプロセスは、Oracle BPMアプリケーション内の他のプロセスやサービスから使用できるサービスとして公開されます。
他のプロセスから起動されたプロセスは、子プロセスであるとはみなされません。このことは、強制終了イベントをプロセスの終了点として使用するプロセスを設計する場合に重要となります。たとえば、コール側プロセスの終了イベントでは、メッセージ・スロー・イベントによって起動されたプロセスは停止しません。
図6-26は、メッセージ・スロー・イベントおよびキャッチ・イベントを使用してプロセスを起動し、レスポンスを受信する場合の基本的な動作を示しています。
次の手順は、メッセージ・スロー・イベントおよびメッセージ・キャッチ・イベントを使用してプロセス間で通信を行う場合のシナリオの例を示しています。
プロセスAが起動されます。
プロセスAのトークンが、プロセスBを起動するように構成されているメッセージ・スロー・イベントに到達します。
メッセージ・スロー・イベントからプロセスBのメッセージ開始イベントにメッセージが送信されます。
プロセスAのトークンは、次のフロー・オブジェクトに進みます。
メッセージ開始イベントによって、プロセスBのインスタンスがトリガーされます。
新しく作成されたトークンがプロセスBに沿って進みます。
プロセスの動作に応じて、次のシナリオが発生する場合があります。
プロセスAのトークンが、プロセスBからのスロー・イベントとペアになっているキャッチ・イベントに到達すると、プロセスAのトークンはメッセージを受信するまで待機します。メッセージを受信した後、プロセスAのトークンは次のフロー・オブジェクトに移動します。
プロセスBのトークンが、プロセスAのキャッチ・イベントとペアになっているスロー・イベントに到達すると、プロセスBはプロセスAにメッセージをスローします。プロセスBのトークンは、次のフロー・オブジェクトに移動します。
両方のプロセスが引き続き実行されます。この後に、さらにキャッチ・イベントとスロー・イベントのペアを使用して、2つのプロセス間での通信を定義できます。
この項では、ビジネス・ルール・タスクを使用してビジネス・プロセス内にOracle Business Rulesを取り込む方法について説明します。Business Process Composerを使用したOracle Business Rulesの利用の詳細は、第9章「Oracle Business Rulesの使用」を参照してください。
ビジネス・ルール・タスクを使用すると、プロセス内にOracle Business Rulesを取り込むことができます。
図6-27は、ビジネス・ルール・タスクのデフォルトの表記を示しています。
ビジネス・プロセス内にOracle Business Rulesを取り込むユース・ケースは、主に2つあります。
構造ルールの使用
構造ルールを使用すると、ビジネス・プロセス内で使用される計算を実行できます。たとえば、信用度を計算するためにビジネス・ルールを使用できます。
運用ルールの使用
運用ルールは、プロセスのフローを変更するために使用します。運用ルールの典型的な使用方法として、ルール・カタログ内のルール条件のチェックの実行があります。その後、出力データ・アソシエーションの一部として、式を使用してデータ・オブジェクトに値を割り当てます。
このシナリオでは、ビジネス・ルール・タスクの直後にゲートウェイが配置されます。このゲートウェイは、データ・オブジェクトの値に従ってプロセス・パスを分岐するために使用されます。
営業見積サンプル内での操作ルールの使用方法の詳細は、6.5.2.1項「コンテキスト内のビジネス・ルール・タスク」を参照してください。
ビジネス・カタログの要素をビジネス・ルール・タスクに割り当てる手順については、5.4.1項「ビジネス・カタログ・コンポーネントをフロー・オブジェクトに割り当てる方法」を参照してください。
図6-28は、営業見積サンプル・プロセス内のビジネス・ルール・タスクの例を示しています。
この項では、シーケンス・フローを使用してビジネス・プロセスの動作を定義する方法を説明します。
シーケンス・フローでは、プロセス内で作業が実行される順序(シーケンス)が定義されます。シーケンス・フローによって、プロセス内のフロー・オブジェクトが接続され、プロセス内でプロセス・トークンが移動するパスが特定されます。
受信シーケンス・フローは、フロー・オブジェクト内に移動するシーケンス・フローです。送信シーケンス・フローは、フロー・オブジェクトから外部に移動するプロセス・パスを特定するシーケンス・フローです。
多くのフロー・オブジェクトには、受信シーケンス・フローと送信シーケンス・フローの両方が含まれています。ただし、開始イベントと終了イベントは例外です。開始イベントには送信シーケンス・フローのみを、終了イベントには受信シーケンス・フローのみ含めることができます。また、イベント・サブプロセスには、受信シーケンス・フローも送信シーケンス・フローも含まれません。
無条件シーケンス・フローは2つのフロー・オブジェクト間の典型的なパスです。デフォルトのシーケンス・フローは図6-29のように矢印線として表示されます。
ほとんどのフロー・オブジェクトでは、デフォルト送信シーケンス・フローを1つのみ使用できます。プロセスのパラレル・パスを表す複数の無条件シーケンス・フローを使用できるのは、パラレル・ゲートウェイのみです。
排他ゲートウェイ、包含ゲートウェイおよび条件ゲートウェイには、無条件送信シーケンス・フローを使用できません。これらのゲートウェイでは、条件シーケンス・フローおよびデフォルト・シーケンス・フローを使用して、プロセスのフローを決定します。
条件シーケンス・フローは、特定の条件に基づいてプロセスのフローを制御するために使用します。無条件シーケンス・フローと同様に、条件シーケンス・フローは、矢印線として表示されます。
図6-30は、2つの送信条件シーケンス・フローと1つのデフォルト・シーケンス・フローを示しています。
送信条件シーケンス・フローを使用できないフロー・オブジェクトもあります。送信条件シーケンス・フローを使用できるのは、次のタイプのゲートウェイのみです。
排他ゲートウェイ
包含ゲートウェイ(スプリット)
条件シーケンス・フロー内で使用される条件は、式を使用して定義されます。式エディタを使用して式を定義する方法は、7.4項「式の概要」を参照してください。
条件シーケンス・フローと同様に、デフォルト・シーケンス・フローは排他ゲートウェイ、包含ゲートウェイおよび条件ゲートウェイへの送信シーケンス・フローとして使用されます。デフォルト・シーケンス・フローは、いずれの条件もtrueと評価されない場合に、プロセスがこれらのゲートウェイから脱出するパスを表します。
デフォルト・シーケンス・フローは、図6-30のように一方の端にチック・マークが付いた矢印として表示されます。
この項では、ゲートウェイを使用してプロセスのフローおよび動作を制御する方法を説明します。
ゲートウェイはプロセスのフローを定義するフロー要素です。ゲートウェイはトークンがプロセスを辿るパスを指定します。ゲートウェイはパスのスプリットとマージによってプロセス内の制御ポイントを定義します。
プロセスのデフォルト・パスに対する例外または逸脱となるパスには、可能なかぎりゲートウェイを使用します。
次のゲートウェイにはスプリットとマージのペアが必要です。
パラレル・ゲートウェイ
包含ゲートウェイ
複合ゲートウェイ
これらのゲートウェイのいずれかをBPMNプロセスに追加すると、Oracle BPM Studioはスプリットとマージのフロー・オブジェクトを自動的に作成します。
ゲートウェイのマージ部分は常に必要となりますが、必ずしもスプリットされたすべてのパスをマージ部分に戻す必要はありません。
ゲートウェイでスプリットされたプロセス・パスのうち、ゲートウェイでマージされないものがあってもかまいませんが、通常はお薦めしません。ゲートウェイのマージ動作の詳細は、後述の各ゲートウェイ・タイプの項を参照してください。
注意: プロセスからマージ・ゲートウェイを削除すると、対応する分割ゲートウェイも削除されます。 |
排他ゲートウェイを使用すると、プロセスを複数のパスにスプリットできます。ただし、複数の送信シーケンス・フローが存在する場合でも、プロセスが経由するパスは、これらのパスのうちの1つのみです。排他ゲートウェイでは、条件送信シーケンス・フローを使用でき、少なくとも1つのデフォルト送信シーケンス・フローが必要です。
プロセスが条件シーケンス・フローを経由するかどうかを決定するために使用される式を定義できます。詳細は、7.4項「式の概要」を参照してください。
プロセスに排他ゲートウェイの送信シーケンス・フローが複数ある場合は、それらの評価順序を定義できます。評価の順序は、排他ゲートウェイのプロパティで構成されます。
複数の条件でtrueと評価された排他ゲートウェイがあると、プロセスは、この順序に従って決定された最初の条件シーケンス・フローの下で続行されます。
排他ゲートウェイは、他のゲートウェイとは異なり、スプリット後、対応するマージをプロセス内に明示的に定義する必要はありません。
図6-31は、排他ゲートウェイのデフォルトの表記を示しています。
図6-32は、営業見積サンプル内で使用されている排他ゲートウェイの例を示しています。ここでは、排他ゲートウェイは、ビジネス実行のレビューが必要であるかどうかを評価するために使用されます。
この評価は、送信条件シーケンス・フローに定義された式によって決定されます。評価がtrueである場合、プロセス・フローは「はい」のパスを進みます。評価がfalseである場合、プロセス・フローは、デフォルト送信シーケンス・フローのパスを進みます。
トークンが排他ゲートウェイに到達すると、送信条件シーケンス・フローの1つがtrueに評価されるまで、送信条件シーケンス・フローが評価されます。排他ゲートウェイのプロパティを構成することによって、送信条件シーケンス・フローが評価される順序を定義できます。この構成に基づいて、最初の条件シーケンス・フローの評価がtrueである場合、トークンはこの送信シーケンス・フローに従って次のフロー・オブジェクトに移動します。複数の送信条件シーケンス・フローがある場合は、それらの評価順序を決定できます。trueと評価される送信条件シーケンス・フローが存在しない場合、トークンはデフォルト送信シーケンス・フローに従って移動します。したがって、排他ゲートウェイには、デフォルト送信シーケンス・フローを定義する必要があります。
排他ゲートウェイでは受信シーケンス・フローもマージできます。ただし、プロセス・フロー内の他のパスから受信する可能性がある他のトークンと同期されません。
注意: 他のトークンが排他ゲートウェイのマージに到達した場合、そのトークンもそのまま次のフロー・オブジェクトに渡されます。トークンを同期する場合や、受信シーケンス・フローで評価を実行する場合は、別のタイプのゲートウェイを使用する必要があります。 |
包含ゲートウェイを使用すると、プロセスを複数のパスにスプリットできます。ただし、排他ゲートウェイとは異なり、送信条件シーケンス・フローの評価結果に応じて、トークンは1つ以上のパスに移動する場合があります。
包含ゲートウェイのスプリットには、複数の送信条件シーケンス・フローを指定できます。また、少なくとも1つのデフォルト・シーケンス・フローを定義する必要があります。
図6-33は、包含ゲートウェイのスプリットのデフォルトの表記を示しています。
図6-34は、包含ゲートウェイのマージのデフォルトの表記を示しています。
包含ゲートウェイでは、排他ゲートウェイと同様にプロセスがスプリットされますが、トークンが複数の送信シーケンス・フローを進むことができる点が異なります。トークンが包含ゲートウェイに到達すると、包含ゲートウェイの条件シーケンス・フローの式が評価されます。
次に、trueと評価された各条件シーケンス・フローに対してトークンが生成されます。トークンは、デフォルト・シーケンス・フローに対しても生成されます。
これらのトークンは、包含ゲートウェイのマージで結合されます。トークンがマージ・ゲートウェイに到達すると、分割によって生成されたすべてのトークンがマージに到達するまで待機します。すべてのトークンが包含ゲートウェイのマージに到達すると、マージが完了して、トークンはゲートウェイに続く次のシーケンス・フローに移動します。
Parallel Gatewayを使用して、プロセスを複数のパスに分割すると、プロセス・フローがすべてのパス上を同時に進むようにできます。Parallel Gatewayは、プロセスで複数のタスクをパラレルに実行する必要がある場合に便利です。
図6-35は、パラレル・ゲートウェイのスプリットのデフォルトの表記を示しています。
図6-36は、パラレル・ゲートウェイのマージのデフォルトの表記を示しています。
営業見積のサンプルでは、プロセスの承認ステージでパラレル・ゲートウェイを使用しています。図6-37に、パラレル・ゲートウェイを使用して2つのプロセス・パスを同時に実行する方法を示します。
この例では、2つの異なるプロセス・パスが同時に実行されます。
トークンがパラレル・ゲートウェイに到達すると、パラレル・ゲートウェイでは各送信シーケンス・フローのトークンが作成されます。パラレル・ゲートウェイのスプリットでは、送信シーケンス・フローは評価されません。
パラレル・ゲートウェイを使用して、パラレル・ゲートウェイによってスプリットされたプロセス・パスをマージすることもできます。パラレル・ゲートウェイのマージでは、各受信シーケンス・フローからのトークンの到着が待機されます。すべてのトークンが到着すると、1つのトークンのみが送信シーケンス・フローに渡されます。
注意: Parallel Gatewayのマージの各受信シーケンス・フローにトークンが到着するようにプロセスを設計してください。このように設計しないと、到着しないトークンをマージで待機し続け、プロセスがフリーズする可能性があります。 |
複合ゲートウェイでは、包含ゲートウェイと同様にプロセスが分割されます。ただし、複合ゲートウェイのマージにすべてのトークンが到着しない場合でもインスタンスを続行できるアクティブ化条件を定義できます。
たとえば、2つ以上のトークンが到着した後に続行する、複合ゲートウェイを構成できます。包含ゲートウェイの条件のうち2つのみがtrueと評価されると、プロセス・インスタンスは次のアクティビティに進みます。ただし、包含ゲートウェイではすべての条件シーケンス・フローが即時に評価されるため、これらのプロセス・パスのすべてのフロー・オブジェクトもすべて実行されます。
図6-38は、複合ゲートウェイのスプリットのデフォルトの表記を示しています。このアイコンは、包含ゲートウェイのスプリットのアイコンと同じです。
図6-39は、複合ゲートウェイのマージのデフォルトの表記を示しています。
Event-based Gatewayを使用すると、イベントが発生する可能性に基づいてプロセス・フローを分岐できます。これは、コンテキストに応じて、様々なイベント・タイプの1つになります。
Event-based Gatewayでは、様々なタイプのイベントがプロセス内の特定の位置で発生する可能性を予想できます。これは排他ゲートウェイに類似していますが、式に基づいてパスを選択するのではなく、Event-based Gatewayではプロセス内でのイベントの発生に基づいてパスを選択します。
たとえば、注文処理プロセスでは、現在使用可能な在庫がない場合にプロセス内のある位置に移動できます。プロセスは、在庫が使用可能になるまで待機する必要がありますが、無限に待機することはできません。Event-based Gatewayを使用すると、プロセスは、(メッセージ・キャッチ・イベントを使用して)新しい在庫の到着を知らせるメッセージを待機したり、(タイマー・イベントを使用して)一定時間の経過後にメッセージを受信しない場合に処理を続行できます。
図6-40は、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を削除すると、すべての送信シーケンス・フローも削除されます。関連付けられたイベントは削除されません。 |
プロセスの最初でEvent-based Gatewayを使用して新しいプロセス・インスタンスを作成することもできます。これはプロセス内に複数の開始イベントを保持するのと同じです。
Event-based Gatewayを使用可能にして新しいプロセス・インスタンスを作成するには、次のことを確認する必要があります。
Event-based GatewayのInitiateプロパティが有効であること。
Event-based Gatewayへの受信シーケンス・フローがないこと。
Event-based Gatewayは、新しいプロセス・インスタンスの作成に使用できますが、別のプロセスからのデータ入力は受け入れません。プロセス・インスタンスに渡す必要があるデータは、ターゲット・イベントを使用して構成する必要があります。
この項では、中間イベント、および中間イベントを使用してプロセスのフローおよび動作を制御する方法について説明します。
開始イベントおよび停止イベントとは異なり、中間イベントはプロセス・フローの最中に発生します。
中間イベントには次の2つのタイプがあります。
標準フロー・イベント
標準フロー・イベントは、プロセスの一般的なフローで発生します。
境界イベント
境界イベントは、プロセスの中断をトリガーします。境界イベントはフロー・オブジェクトに関連付けられており、これらのオブジェクトの通常の動作を中断するように構成できます。
境界イベントは、プロセスが経由するフロー・オブジェクトのパスを特定するために使用されるという点で、シーケンス・フローと同様に動作します。
境界イベントは、連続しないタイプおよび連続するタイプの2つのタイプに分類されます。
タイマー・キャッチ・イベントを使用すると、時間条件を使用してプロセスのフローを制御できます。次に、タイマー・キャッチ・イベントの使用例を示します。
アクティビティ実行の前に遅延を作成する
アクティビティの期限を構成する
プロセスの期限を構成する
一定時間経過後に追加のアクティビティをトリガーする
図6-41は、タイマー・キャッチ・イベントのデフォルトの表記を示しています。
タイマー・イベントは、アクティビティの境界イベントとして使用できます。タイマー・イベントは、連続しない境界イベントまたは連続する境界イベントとして定義できます。
連続しないタイマー・イベントが発生した場合、トークンはメイン・プロセス・フローを離れて、タイマー・イベントによって定義されたフローを進みます。連続しないタイマー・イベントによって定義されたフローは、メイン・プロセス・フローに直接戻ることができます。
連続するイベントが発生した場合は、トークンのコピーが作成され、タイマー・イベントによって定義されたフローに渡されます。連続するイベントによって定義されたフローからメイン・プロセス・フローに戻ることはできません。
エラー・キャッチ・イベントは、プロセス・フロー内で発生したエラーを処理するために使用される中間イベントです。
注意: インライン・ハンドラを使用して、プロセス内で発生するエラー状態に対応することもできます。 |
エラー・キャッチ・イベントは、常に境界イベントとして使用されます。このイベントは、次の対象にアタッチできます。
サービス・タスク
コール・アクティビティ
ユーザー・タスク
送信タスク
受信タスク
スクリプト・タスク
ルール・タスク
サブプロセス
エラー・キャッチ・イベントは常に割込みを実行します。つまり、このイベントによって、プロセスの通常のフローが中断されます。
図6-42は、サービス・タスクに境界イベントとしてアタッチされたエラー・キャッチ・イベントのデフォルトの表記を示しています。
サービスまたはプロセスでエラーが発生すると、エラー・キャッチ・イベントがトリガーされます。これにより、プロセス・フローはエラー・キャッチ・イベントの送信シーケンス・フローのパスに進みます。
このフローを使用して、エラーの処理方法を定義できます。エラーは、次の2通りの方法のいずれかで処理されます。
プロセス・フローが、メイン・プロセス・フローに戻ります。実行する必要があるすべての作業は、メイン・フローに戻る前にエラー・プロセス・フロー内で処理されます。
注意: 境界イベントが非割込みである場合、境界フローはメイン・フローに戻ることができません。 |
プロセス・フローは終了イベントに移動します。プロセスは即時に停止されます。プロセスの制御は、そのプロセスを開始したサービスまたはプロセスに戻ります。
サブプロセスおよびインライン・ハンドラを使用して、プロセスを整理できます。機能領域をグループ化してプロセスをさらにわかりやすくできます。
サブプロセスを使用すると、BPMNフロー・オブジェクトをグループ化して、プロセスをさらにわかりやすくできます。Oracle BPMでは、サブプロセスは埋込みのサブプロセスとなります。サブプロセスは、親サブプロセスの一部として包含されます。サブプロセスは、None開始イベントで始まり、None終了イベントで終わる必要があります。
サブプロセスは開閉できます。図6-43は、プロセス内の閉じられたサブプロセスの表示を示しています。
図6-44は、プロセス内の開かれたサブプロセスの表示を示しています。サブプロセスを開くと、サブプロセス内のフロー・オブジェクトを編集できます。また、サブプロセス・ウィンドウの端をクリックしてドラッグすると、ウィンドウのサイズを変更できます。
他のタイプのプロセスと同様に、サブプロセスには開始イベントと終了イベントがあり、個別のプロセス・フローが含まれています。サブプロセスは、None開始イベントで始まり、None終了イベントで終わる必要があります。サブプロセスにスイムレーンを含めることはできません。
また、サブプロセスはアクティビティと同様に動作します。受信シーケンス・フローおよび送信シーケンス・フローを使用できます。また、サブプロセス内で使用されるデータ・オブジェクトを定義するデータ・アソシエーションが含まれています。
サブプロセスには、タイマー境界イベント、メッセージ境界イベントおよびエラー境界イベントを含めることもできます。
必要に応じて、プロセスにはネストしたサブプロセスを含めることができます。ただし、ネストしたサブプロセスは、プロセスをわかりやすくするために必要な場合にのみ使用してください。
サブプロセス内のフロー・オブジェクトには、サブプロセス外部のフロー・オブジェクトに接続するシーケンス・フローを含めることができません。
他のフロー・オブジェクトと同様に、サブプロセスには、受信シーケンス・フローおよび送信シーケンス・フローがあります。
図6-45は、サブプロセスの例を示しています。この例では、サブプロセスは、営業見積の処理に使用されるサービス・タスクをグループ化するために使用されています。
インライン・ハンドラはサブプロセスのタイプで、通常のプロセス・フローの外部で発生する条件をモデル化できます。
インライン・ハンドラは、次の開始イベントで使用できます。
エラー開始
タイマー開始
メッセージ開始
インライン・ハンドラをプロセスに追加すると、デフォルトでは、メッセージ開始イベントで作成されます。開始イベントのタイプは、必要に応じて変更できます。
注意: 一連のインライン・ハンドラには、1つの開始イベントのみを使用できます。ただし、プロセス内では複数のインライン・ハンドラを使用できます。 |
この項では、スクリプト・タスクを使用してプロセス内のデータ・オブジェクトの値を変更する方法について説明します。データ・オブジェクトの一般的な情報については、第7章「データ・オブジェクトおよび式の使用」を参照してください。
スクリプト・タスクは、プロセス内のデータ・オブジェクトの値を変更するために使用します。スクリプト・タスクは、値の変更をビジネス・プロセス内で明示的に表示する場合、または別のフロー・オブジェクトの外部でデータ・オブジェクトの値を変更する場合に使用します。多くの場合、スクリプト・タスクは、プロセス開始時にデータ・オブジェクトの初期値を設定するために使用します。
図6-46は、スクリプト・タスクのデフォルトの表記を示しています。
スクリプト・タスクは、プロセスおよびプロセスベースのアプリケーション内におけるデータ・オブジェクトの動作の定義を担当する、プロセス開発者がプロセスに追加します。
図6-47は、営業見積サンプルの開始時に使用される2つのスクリプト・タスクの例を示しています。営業見積サンプルでは、プロセス・インスタンスの作成時にデータ・オブジェクトに対して初期値を設定し、いくつかのビジネス・インジケータに値を設定するスクリプト・タスクが使用されています。
プロジェクト・データ・オブジェクトは、プロジェクト内に定義するデータ・オブジェクトです。プロジェクト内のすべてのプロセスは、定義されているデータ・オブジェクトにアクセスしますが、実際の値はオブジェクトを使用するプロセスに応じて変化します。また、プロジェクトがビジネス・インジケータを使用するように構成されている場合には、ビジネス・インジケータとしてマークされたデータ・オブジェクトの値が、エンジンによってプロセス分析データベースに保存されます。
図6-48は、ビジネス・インジケータの初期値を設定するために使用されるデータ・アソシエーションを示しています。
図6-48 ビジネス・インジケータの設定スクリプト・タスクによって使用されるデータ・アソシエーション
データ・アソシエーションを受け入れる他のフロー・オブジェクトと同様に、式を使用してデータ・オブジェクトの値を変更できます。図6-49は、割引プロジェクト変数の値を変更する場合の式の使用方法を示しています。
測定マークを使用して、プロセス・パフォーマンスを測定できます。測定マークを使用すると、プロセス内の特定の位置、またはプロセスの特定のセクションにおいて、タイプが測定のビジネス・インジケータを測定できます。
測定マークおよびプロセス分析データベースの使用方法の詳細は、Oracle BPMモデリングおよび実装ガイドのプロセス分析の使用を参照してください。
測定マークによって、プロセス分析データベースに次のデータが保存されます。
プロセスのデフォルト測定の値
該当する測定マークに関連付けられている測定ビジネス・インジケータの値
プロセスに定義されているディメンションの値
1つの測定マークを使用して、複数の測定ビジネス・インジケータを測定できます。
BPMNサービス・エンジンでは、測定ビジネス・インジケータの値が保存されるときに、プロセスに定義されたディメンションの値も保存されます。後でプロセスを監視するためにダッシュボードを構築するときに、これらのディメンションを使用して値を様々なカテゴリにグループ化できます。たとえば、営業見積サンプルでは、承認済見積件数の合計を地域ごとに表示できます。
定義できる測定マークのタイプは次のとおりです。
単一測定
間隔の開始
間隔の停止
測定マークは、コンポーネント・パレットからプロセス・エディタ・キャンバスにドラッグすることによって、ビジネス・プロセスに追加できます。
単一測定マークをプロセスに追加するには:
BPMNプロセスを開きます。
コンポーネント・パレットで、「アーティファクト」セクションを開き、次のいずれかを選択します。
「測定の開始」マーク
「測定の終了」マーク
「単一測定」マーク(スナップショット)
ビジネス・インジケータを測定するシーケンス・フロー付近まで測定マークをドラッグします。シーケンス・フローが青色になったら、測定マークをドロップします。
測定マークを右クリックして、「プロパティ」を選択します。
「名前」フィールドに、測定マークを識別するための名前を入力します。
「ビジネス・インジケータ」セクションで、使用可能なビジネス・インジケータのリストからビジネス・インジケータを選択し、2つのリストの間にある矢印を使用して「選択済」リストに移動します。
注意: 1つの測定マークで複数のビジネス・インジケータを測定できます。 |
注意: ビジネス・インジケータを選択しない場合、この測定マークにはデフォルト・ビジネス・インジケータの値のみが保存されます。「測定マーク・プロパティ」ダイアログ・ボックスを開いた状態でビジネス・インジケータを追加するには、「選択済」リストの下にある「新規」ボタンをクリックします。 |
「OK」をクリックします。
この項では、Business Process Composerでガイド付きビジネス・プロセスを使用する方法について説明します。
ガイド付きビジネス・プロセスは、プロセス・フローのガイド付き視覚表現を提供します。プロセス参加者にビジネス・プロセスのカプセル化された階層ビューを提供することによって、ユーザーの操作性を向上します。
プロセス設計者は、ガイド付きビジネス・プロセスを使用することによって、プロセス参加者がプロセスに関連付けられた一連のガイド付き手順に従ってビジネス・プロセスを完了できるように設定できます。ガイド付きビジネス・プロセスには手順の概要が示されます。この手順に従うことによって、プロセス参加者はより少ないトレーニングでビジネス・プロセスを完了できるようになり、プロセスの結果もより予測可能になります。
ガイド付きビジネス・プロセスは、ビジネス・プロセスに基づいたアクティビティ・ガイドとしてモデリングされます。アクティビティ・ガイドには、一連のマイルストンが含まれています。マイルストンには、プロセス参加者が完了する必要がある一連のタスクが含まれています。マイルストンに含まれている一連のタスクをユーザーが正常に実行すると、マイルストンが完了します。
各マイルストンは、ヒューマン・ワークフロー・タスクの特定のセットです。各ヒューマン・ワークフロー・タスクは、それ自体が、様々なロールの複数の参加者のコラボレーションを必要とするタスク・フローである場合があります。タスク・フローの内容によっては、参加者は未完了のタスク・フローをいったん保存して、後でそのタスク・フローに戻ることもできます。
Business Process Composerを使用すると、ガイド付きビジネス・プロセスを構成して、それらにマイルストンを追加できます。
プロジェクトのアクティビティ・ガイドを構成するには:
プロジェクト・ナビゲータで、アクティビティ・ガイドを構成するプロジェクトを開きます。
「アクティビティ・ガイド」を右クリックして、「構成」を選択します。
アクティビティ・ガイドのタイトルを入力します。
次のオプションのプロパティを構成します。
表示モード: ガイド付きビジネス・プロセス内のマイルストンおよびタスクにおけるリンクの表示方法を指定します。マイルストンおよびタスクで他の構成が使用される場合は、ガイド付きビジネス・プロセスの構成は無視されます。
可能な値は次のとおりです。
常時: このガイド付きビジネス・プロセスのすべてのマイルストンで、マイルストンおよびタスクのリンクを常に表示します。
インスタンス化時: ガイド付きビジネス・プロセスのすべてのマイルストンで、マイルストンの1つ以上のユーザー・タスクがインスタンス化されているときにのみ、マイルストンおよびタスクのリンクを表示します。
タスク・アクセス: タスクが完了した後、ガイド付きビジネス・プロセスではこの構成を使用してリンクが表示されます。タスク・モードが「アクティブのみ」の場合は、タスクのリンクがグレー表示されます。タスク・モードが「任意の状態」の場合は、タスクのリンクは有効なままになり、タスクを実行するときにメッセージが表示されます。
可能な値は次のとおりです。
アクティブのみ: タスクへのリンクは、タスクがアクティブであり、ユーザーが更新可能なときにのみ有効になります。タスクを完了すると、タスクへのリンクはグレー表示されます。
任意の状態: タスクへのリンクは、タスクをインスタンス化した後は常に有効になります。タスクを完了した後でも有効なままです。
ルート・プロセス: このアクティビティ・ガイドに使用されるプロセスを指定します。BPMプロジェクトごとに、1つのガイド付きビジネス・プロセスのみを定義できます。このプロセスが、ルート・プロセスです。
説明: アクティビティ・ガイドのオプションの説明を指定します。
プロジェクト・ツールバーで「保存」をクリックします。
新しいマイルストンを作成する手順は、次のとおりです。
プロジェクト・ナビゲータで、アクティビティ・ガイドを構成するプロジェクトを開きます。
「アクティビティ・ガイド」を右クリックして、「構成」を選択します。
「新規マイルストンをクリックします。
リストから、今作成したマイルストンを選択します。
必要に応じて、マイルストンを構成します。
プロジェクト・ツールバーで「保存」をクリックします。
マイルストンにユーザー・タスクを追加するには:
マイルストンを追加するプロセスを開きます。
マイルストンに追加するユーザー・タスクを右クリックします。
リストからマイルストンを選択して、「OK」をクリックします。