プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Business Process Management Studioでのビジネス・プロセスの開発
12c (12.2.1.1)
E79347-01
目次へ移動
目次

前
次

17 プロセスへの遅延、期限および時間ベース・サイクルの追加

この章では、タイマー・イベントを使用してBPMNプロセスに時間条件を追加する方法を説明します。様々なタイマー・イベントを使用して遅延および期限を追加し、追加アクティビティを実行する方法を説明します。

この章の内容は次のとおりです。

17.1 タイマー・イベントの概要

タイマー・イベントを使用すると、時間条件を使用してプロセスのフローを制御できます。タイマー・イベントはビジネス・カレンダ定義に基づきません。

タイマー・イベントは次の場合に使用できます。

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

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

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

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

  • プロセスを起動する

  • プロセスを定期的にトリガーする

Oracle BPMでは、次のものを使用するタイマーを構成できます。

  • 特定の日付および時間

    タイマー・イベントが特定の日付に起動するように構成できます。特定の日付を指定するか、または関数を使用して日付を計算できます。

  • 相対的な時間

    タイマー・イベントが一定時間の経過後に起動するように構成できます。経過時間を指定するか、関数を使用して時間を計算できます。タイマー・イベントが開始イベントまたは連続する境界イベントの場合、複数回起動されます。

タイマー・イベントを境界イベントとして定義した場合、連続しないイベントか連続するイベントのどちらとして構成するかを選択できます。

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

連続するイベントが起動した場合は、メイン・プロセス・フローで実行されているトークンのコピーがBPMNサービス・エンジンによって作成され、タイマー・イベントによって定義されたフローにコピーがルーティングされます。連続するイベントによって定義されたフローはメイン・プロセス・フローを再開できません。

注意:

カレンダの実行時の変更はサポートされないため、カレンダの変更は設計時のみ行ってください。これの技術的な理由は、カレンダのデータベースにアクセスするカレンダ・キャッシュがないためパフォーマンスの問題が生じることにあります。

17.2 プロセス・フローへの遅延の追加

中間タイマー・キャッチ・イベントを追加することにより、プロセス・フローに遅延を追加できます。トークンがタイマー・イベントに到達すると、タイマー・イベントで指定された期間待機した後、プロセス内の次のアクティビティに移行します。

たとえば、複数のデータベースを更新するプロセスの場合、プロセスを数分間遅延するタイマー・アクティビティを追加し、プロセスが続行する際にすべてのデータベースが更新されるようにします。

特定の日付まで待機するか、特定の期間待機するように中間タイマー・キャッチ・イベントを構成できます。いずれの場合も、固定値を選択するか、対応する日付または間隔を指定する式を使用できます。

タイマー中間イベントをサイクルとして構成すると、タイマー・イベントは1回だけ実行されます。指定された期間が経過するのを待ち、その後、トークンが残りのプロセス・フローを実行します。

図17-1 プロセス・フローの遅延

図17-1の説明が続きます
「図17-1 プロセス・フローの遅延」の説明

17.2.1 プロセス・フローへの遅延の追加方法

2つのフロー・オブジェクト間の遅延を追加できます。

プロセス・フローに特定の日付までの遅延を作成するには:

  1. プロセス中の遅延を追加する場所を決定します。
  2. コンポーネント・パレットの「イベントの捕捉」セクションで「タイマー」を選択します。
  3. 遅延を追加する場所にタイマー・イベントをドロップします。
  4. プロセスを特定の日付まで遅延する場合、タイマー・イベントを時間日付として構成する必要があります。「特定の日付および時間を使用するタイマー・イベントの構成方法」を参照してください。

    プロセスを一定期間遅延する場合、タイマー開始イベントをサイクルとして構成する必要があります。「間隔を使用するタイマー・イベントの構成方法」を参照してください。

    特定のスケジュールを使用してタイマーを実行する場合は、スケジュールとしてタイマーを構成する必要があります。「定期的に実行されるタイマー・イベントの構成方法」を参照してください。

17.2.2 プロセス・フローへの遅延の追加時に行われる処理

中間タイマー・イベントに到達したトークンは、タイマー・イベントで指定された時間になるまでタイマー・イベントに残留します。タイマー・イベントが日付を使用するよう構成されている場合、トークンは指定された日付までタイマー・イベントに残留します。タイマー・イベントがサイクルを使用するよう構成されている場合、トークンは指定された時間が経過するまでタイマー・イベントに残留します。

17.3 時間条件に基づいて起動するプロセスの設計

プロセスにタイマー開始イベントを追加し、時間条件に基づいてトリガーされるように構成できます。タイマー開始イベントで指定された時間条件がtrueと評価されると、BPMNサービス・エンジンがプロセスに新規インスタンスを作成します。

たとえば、労働時間を報告するプロセスの場合、プロセス内にインスタンスを1日1回作成するタイマー開始イベントを追加できます。

特定の日付に起動するか、定期的にインスタンスを作成するようにプロセスを構成できます。いずれの場合も、固定値を選択するか、対応する日付または間隔を指定する式を使用できます。

過去の日付を指定するタイマー開始イベントが含まれるプロセスをデプロイすると、BPMNサービス・エンジンは自動的にプロセスのインスタンスを作成します。

図17-2 時間条件に基づくプロセスの起動

図17-2の説明が続きます
「図17-2 時間条件に基づくプロセスの起動」の説明

17.3.1 時間条件に基づいて起動するプロセスの設計方法

特定の日付に達した場合、または一定期間が経過した後に定期的に起動するようにプロセスを設計できます。

時間条件に基づいて起動するようプロセスを設計するには:

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

  2. プロセスで1つの開始イベントを使用する場合、開始イベントを右クリックして「トリガー・タイプの変更」を選択し、「タイマー」を選択します。

    プロセスで複数の開始イベントを使用する場合、コンポーネント・パレットの「開始イベント」セクションでタイマー開始イベントを選択する必要があります。タイマー開始イベントをプロセスにドロップします。タイマー開始イベントを右クリックし、「プロパティ」を選択します。

  3. プロセスを特定の日付に起動する場合、タイマー・イベントを時間日付として構成する必要があります。「特定の日付および時間を使用するタイマー・イベントの構成方法」を参照してください。

    プロセスを一定期間の後に起動する場合、タイマー開始イベントをサイクルとして構成する必要があります。「間隔を使用するタイマー・イベントの構成方法」を参照してください。

    特定のスケジュールに基づいてプロセスを開始する場合は、スケジュールとしてタイマーを構成する必要があります。「定期的に実行されるタイマー・イベントの構成方法」を参照してください。

17.3.2 時間条件に基づいて起動するプロセスの設計時に行われる処理

タイマー開始イベントの時間条件がtrueと評価されるたびに、BPMNサービス・エンジンによってプロセスにインスタンスが作成されます。タイマー開始イベントが特定の日付を使用するよう構成すると、指定された日付に到達した時点でBPMNサービス・エンジンによってインスタンスが作成されます。タイマー開始イベントがサイクルを使用するよう構成すると、BPMNサービス・エンジンによって定期的にプロセスにインスタンスが作成されます。

17.4 アクティビティの期限の構成

アクティビティの期限を構成するには、プロセスの別の位置に移動する、連続しない境界イベントとして構成された連続しないタイマー・キャッチ・イベントを使用します。トークンが予定よりも長い期間、または特定の日付よりも後までアクティビティに残留している場合、タイマー・キャッチ・イベントがトリガーされてプロセス・フローを中断します。

期限が特定の日付に発生するように構成したり、トークンがアクティビティで一定の時間を費やした後に発生するように構成できます。いずれの場合も、固定された日付または間隔を指定するか、対応する日付または間隔を計算する式を使用できます。

たとえば、発注プロセスでは、クレジット・カードの承認を必要とするアクティビティは承認を1日待機するように構成できます。承認にそれ以上時間がかかる場合、メッセージを顧客に送信するアクティビティにトークンを移動します。

図17-3 アクティビティの期限

図17-3の説明が続きます
「図17-3 アクティビティの期限」の説明

17.4.1 アクティビティの期限の構成方法

期限切れになった後にトークンが別のアクティビティに移動するようにアクティビティの期限を構成できます。期限切れの後、トークンがどのアクティビティに移動するかを指定できます。

アクティビティの期限を構成するには:

  1. 期限を構成するプロセス中のアクティビティを決定します。
  2. コンポーネント・パレットの「イベントの捕捉」セクションで「タイマー」を選択します。
  3. タイマー・イベントをアクティビティにドロップします。

    タイマー・イベントが境界イベントになります。境界タイマー・キャッチ・イベントから派生するシーケンス・フローが表示されます。

  4. カーソルを終了イベントの上に置き、クリックしてシーケンス・フローをその位置にドロップします。
  5. 期限を特定の日付に発生させる場合、境界タイマー・キャッチ・イベントを時間日付として構成する必要があります。「特定の日付および時間を使用するタイマー・イベントの構成方法」を参照してください。

    期限を一定期間の後に発生させる場合、境界タイマー・キャッチ・イベントをサイクルとして構成する必要があります。「間隔を使用するタイマー・イベントの構成方法」を参照してください。

    特定のスケジュールを使用して期限を設定する場合は、スケジュールとしてタイマーを構成する必要があります。「定期的に実行されるタイマー・イベントの構成方法」を参照してください

  6. 「実装」タブのタイマー・プロパティ・ダイアログ・ボックスで、「イベントの中断中」を選択します。

17.4.2 アクティビティの期限の構成時に行われる処理

タイマー・イベントの起動時にアクティビティがまだ実行中であった場合、トークンはアクティビティを中断し、プロセスの別の位置に移動します。タイマー・イベントは、構成方法により、特定の日程に到達した時点で、または指定した期間が経過すると起動します。

17.5 BPMNプロセスの期限の構成

連続しないタイマー開始イベントで開始されるイベント・サブプロセスを使用して、プロセスのプロセス期限を構成できます。一定の期間が経過するか日付に到達すると、タイマー・イベントが起動します。トークンがまだプロセス中であれば、イベントのサブプロセスに移動します。

タイマー・イベントは、トークンがプロセス中にある場合のみアクティブです。

期限が特定の日付に発生するように構成したり、トークンがアクティビティで一定の時間を費やした後に発生するように構成できます。いずれの場合も、固定された日付または間隔を指定するか、対応する日付または間隔を計算する式を使用できます。

たとえば、発注プロセスで、トークンがプロセス中に3か月以上残留している場合、自動的にプロセスが終了されるように構成できます。

イベントのサブプロセスにエラー終了イベントを使用して、プロセスの実行が成功して完了しないようにできます。

17.5.1 BPMNプロセスの期限の構成方法

BPMNプロセスの期限を構成できます。期限切れになった時点で、プロセス・フローを終了するか、フロー・オブジェクトのグループを実行するよう選択できます。

BPMNプロセスの期限を構成するには:

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

  2. コンポーネント・パレットの「アクティビティ」セクションで「イベント・サブプロセス」を選択します。

  3. イベント・サブプロセスをプロセスにドロップします。

  4. イベント・サブプロセスの開始イベントをタイマー・イベントに構成します。

    1. イベント・サブプロセスの開始イベントを右クリックします。

    2. 「プロパティ」を選択します。

    3. 「実装」タブをクリックします。

    4. 「実装タイプ」リストから「タイマー」を選択します。

    5. 「イベントの中断中」を選択します。

    6. 期限を特定の日付に発生させる場合、タイマー・イベントを時間日付として構成する必要があります。「特定の日付および時間を使用するタイマー・イベントの構成方法」を参照してください。

      期限を一定期間の後に発生させる場合、タイマー・イベントをサイクルとして構成する必要があります。「間隔を使用するタイマー・イベントの構成方法」を参照してください。

      特定のスケジュールを使用して期限を設定する場合は、スケジュールとしてタイマーを構成する必要があります。「定期的に実行されるタイマー・イベントの構成方法」を参照してください

17.5.2 BPMNプロセスの期限の構成時に行われる処理

連続しないタイマー・イベントで指定されたよりも長くプロセス中にトークンが残留すると、タイマー・イベントが起動します。イベント・サブプロセスのタイマー開始イベントが起動すると、トークンはプロセスを離れ、イベント・サブプロセスに移動します。

17.6 追加アクティビティの実行

アクティビティまたはプロセスの実行中に、時間条件に基づいた追加アクティビティを実行できます。追加アクティビティは、定期的にトリガーするか、特定の日付にトリガーするよう選択できます。

一般的には、現在実行中のアクティビティの完了までに長時間かかる場合に追加アクティビティを実行します。たとえば、データベースの更新に20時間かかるサービスを実行している場合、更新の進行状況を通知する電子メールを関係者に送信できます。

タイマー・イベントは、トークンがアクティビティ中にある場合のみアクティブです。

プロセスの実行中にも追加アクティビティを実行できます。これらのアクティビティは、メイン・プロセス・フローとパラレルに実行されます。

図17-5 アクティビティ実行中の追加アクティビティの実行

図17-5の説明が続きます
「図17-5 アクティビティ実行中の追加アクティビティの実行」の説明

17.6.1 アクティビティ実行中の追加アクティビティの実行方法

アクティビティの実行中に、パラレル・プロセス・フローを実行できます。一般的には、メイン・アクティビティの完了までに長時間かかるとわかっている場合に、一定期間の後にパラレル・プロセス・フローをトリガーするように設計します。

アクティビティ実行中に追加アクティビティを実行するには:

  1. 追加アクティビティとパラレルで実行するアクティビティを決定します。
  2. メイン・プロセス・フローの外側に、シーケンス・フローで接続されたアクティビティを追加して、追加プロセス・フローを作成します。
  3. アクティビティの境界としてタイマー・イベントを追加します。

    アクティビティに接続するためのシーケンス・フローが表示されます。

  4. 作成した追加プロセス・フローにシーケンス・フローを接続します。

17.6.2 アクティビティ実行中の追加アクティビティの実行時に行われる処理

連続するイベントが起動した際にトークンがまだアクティビティ中に残留している場合、BPMNサービス・エンジンによってそのトークンのコピーが作成され、タイマー・イベントが定義するフロー内をルーティングされます。メイン・プロセス・フローのアクティビティが実行中に、タイマーが複数回起動することもあります。

17.6.3 プロセス実行中の追加アクティビティの実行方法

メイン・プロセス・フローの実行中に、追加アクティビティを実行できます。一般的には、プロセスの完了までに長時間かかるとわかっている場合に、一定期間の後にパラレル・プロセス・フローをトリガーするように設計します。

プロセス実行中に追加アクティビティを実行するには:

  1. プロセスにサブプロセス・イベントを追加します。
  2. サブプロセス・イベントの開始イベントを右クリックします。
  3. 「プロパティ」を選択します。
  4. 「実装」タブをクリックします。
  5. 「実装タイプ」リストから「タイマー」を選択します。
  6. 「イベントの中断中」オプションが選択されていないことを確認します。
  7. 追加アクティビティを特定の日付に実行する場合、タイマー・イベントを時間日付として構成する必要があります。「特定の日付および時間を使用するタイマー・イベントの構成方法」を参照してください

    追加アクティビティを定期的に実行する場合、タイマー・イベントをサイクルとして構成する必要があります。「間隔を使用するタイマー・イベントの構成方法」を参照してください。

    特定のスケジュールを使用して追加のアクティビティを実行する場合は、スケジュールとしてタイマーを構成する必要があります。「定期的に実行されるタイマー・イベントの構成方法」を参照してください

  8. 追加アクティビティをサブプロセス・イベントに追加します。

17.6.4 プロセス実行中の追加アクティビティの実行時に行われる処理

イベント・サブプロセスのタイマー開始イベントが起動すると、BPMNサービス・エンジンにより、メイン・プロセス・フローのトークンのコピーが作成されます。メイン・プロセス・フローのトークンのコピーは、サブプロセス・イベントによって定義される追加プロセス・フローを移動します。タイマー開始イベントは、メイン・プロセス・フローの実行中に複数回起動できます。

17.7 タイマー・イベントの構成

特定の日時に起動するか、一定の時間が経過した後に起動するようにタイマー・イベントを構成できます。いずれの場合も、固定した時間値を指定するか、時間値を計算する式を指定できます。

定期的に実行されるようにタイマー・イベントを構成することもできます。サポートされている粒度は、日次、週次および月次です。いずれの場合も、そのプロジェクトに定義されているカレンダ・ルールを使用して日付を計算し、休日と一致したイベントを再スケジュールするようにタイマー・イベントを構成できます。

17.7.1 特定の日付および時間を使用するタイマー・イベントの構成方法

タイマー・イベントが特定の日時を使用するよう構成できます。日付と時間を指定するか、計算式を使用できます。

特定の日時を使用するタイマー・イベントの構成方法は、次のとおりです。

  1. タイマー・イベントを右クリックします。
  2. 「プロパティ」を選択します。
  3. 「実装」タブをクリックします。
  4. 「時間日付」を選択します。
  5. 日付を指定します。

    日付の指定時に、次のオプションを選択できます。

    注意:

    指定する日付および時間は、BPMNサービス・エンジンが使用するタイムゾーンに対応します。

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

17.7.2 特定の日付および時間を使用するタイマー・イベントの構成時に行われる処理

タイマー・イベントは指定された日時に起動します。日時の指定に式を使用している場合、エンジンはこの式を評価してタイマー・イベントの起動時間を決定します。

17.7.3 間隔を使用するタイマー・イベントの構成方法

タイマー・イベントが間隔を使用するよう構成できます。間隔を指定するか、間隔を計算する式を使用できます。

間隔を使用するタイマー・イベントの構成方法は、次のとおりです。

  1. タイマー・イベントを右クリックします。
  2. 「プロパティ」を選択します。
  3. 「実装」タブをクリックします。
  4. 「時間サイクル」を選択します。
  5. 時間間隔を指定するか、「式の使用」を選択し、間隔を返す式を作成します。

    詳細は、「タイマー・イベントでの式の記述」を参照してください

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

17.7.4 間隔を使用するタイマー・イベントの構成時に行われる処理

タイマー・イベントは、指定された間隔の時間を待機して、定期的に起動されます。タイマー・イベントが開始イベントまたは連続する境界イベントの場合、複数回起動されます。タイマー・イベントが中間タイマー・イベントまたは連続しない境界イベントの場合、起動まで指定された間隔待機しますが、1回だけ起動されます。

17.7.5 定期的に実行されるタイマー・イベントの構成方法

日次、週次または月次で、1つ以上の指定した時間に実行されるようにタイマー・イベントを構成することもできます。また、組織で定義されたカレンダ・ルールを使用してイベントをスケジュールし、イベントが休日や作業スケジュール外の日と重なった場合は指定したポリシーを使用してそのイベントを再スケジュールするようにタイマー・イベントを構成することもできます。

定期的に実行されるタイマー・イベントの構成方法は、次のとおりです。

  1. タイマー・イベントを右クリックします。
  2. 「プロパティ」を選択します。
  3. 「実装」タブをクリックします。
  4. 「時間のスケジュール」を選択します。
  5. 定義する期間に対応するタブを選択します。

    使用可能なオプションは次のとおりです。

    • 日次

    • 週次

    • 月次

  6. 「追加」ボタンをクリックして、イベントが発生する正確な時間を指定します。

    イベントが1日、1週間または1か月の間に複数回実行されるように構成することもできます。

    表17-1に、選択した期間に応じた時間の指定方法を示します。

    表17-1 選択した期間に応じた時間定義

    選択した期間 時間定義

    日次

    時刻を定義する必要があります。

    週次

    曜日と時刻を定義する必要があります。

    月次

    月、週、日および時刻を指定する必要があります。

    月の特定の日付にイベントが実行されるように構成するには、「週」列で「日付」を選択します。「日」列で月の日付を指定できます。

    イベントが毎月実行されるように構成するには、「月」列で「すべて」を選択します。

  7. さらに、次のオプションの設定を構成できます。
    • 実行元: イベントの実行が開始される日付と時刻を定義できます。

    • 実行先: イベントの実行が停止される日付と時刻を定義できます。

    • 反復: イベントが実行される回数を定義できます。定義した回数だけイベントが実行された後、イベントの実行が停止されます。

    • カレンダ・ルールの使用: 組織で定義されたカレンダ・ルールに基づいてイベントが実行されるよう指定します。

      このオプションを選択した場合は、イベントが休日や作業スケジュール外の日に実行されるようにスケジュールされた場合のイベントの再スケジュール方法を定義する必要があります。使用可能な再スケジュール・オプションは次のとおりです。

      再スケジュール・オプション 説明

      再スケジュールなし

      イベントは実行されず、再スケジュールもされません。

      できるだけ早く

      イベントは次に使用可能な作業時間に再スケジュールされます。

      できるだけ早く、ただし同じ時間に

      イベントは次に使用可能な稼働日の同じ時間に再スケジュールされます。

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