17 プロセスへの遅延、期限および時間ベース・サイクルの追加
遅延および期限の追加などの時間条件を追加するタイマー・イベントを使用し、BPMNプロセスへの追加アクティビティを実行します。
17.1 タイマー・イベントの概要
タイマー・イベントを使用すると、時間条件を使用してプロセスのフローを制御できます。タイマー・イベントはビジネス・カレンダ定義に基づきません。
タイマー・イベントは次の場合に使用できます。
-
アクティビティ実行の前に遅延を作成する
-
アクティビティの期限を構成する
-
プロセスの期限を構成する
-
一定時間経過後に追加のアクティビティをトリガーする
-
プロセスを起動する
-
プロセスを定期的にトリガーする
Oracle BPMでは、次のものを使用するタイマーを構成できます。
-
特定の日付および時間
タイマー・イベントが特定の日付に起動するように構成できます。特定の日付を指定するか、または関数を使用して日付を計算できます。
-
相対的な時間
タイマー・イベントが一定時間の経過後に起動するように構成できます。経過時間を指定するか、関数を使用して時間を計算できます。タイマー・イベントが開始イベントまたは連続する境界イベントの場合、複数回起動されます。
タイマー・イベントを境界イベントとして定義した場合、連続しないイベントか連続するイベントのどちらとして構成するかを選択できます。
連続しないタイマー・イベントが発生した場合、トークンはメイン・プロセス・フローを離れて、タイマーによって定義されたフローを進みます。連続しないタイマー・イベントによって定義されたフローは、メイン・プロセス・フローを再開できます。
連続するイベントが起動した場合は、メイン・プロセス・フローで実行されているトークンのコピーがBPMNサービス・エンジンによって作成され、タイマー・イベントによって定義されたフローにコピーがルーティングされます。連続するイベントによって定義されたフローはメイン・プロセス・フローを再開できません。
ノート:
カレンダの実行時の変更はサポートされないため、カレンダの変更は設計時のみ行ってください。これの技術的な理由は、カレンダのデータベースにアクセスするカレンダ・キャッシュがないためパフォーマンスの問題が生じることにあります。17.2 プロセス・フローへの遅延の追加
中間タイマー・キャッチ・イベントを追加することにより、プロセス・フローに遅延を追加できます。トークンがタイマー・イベントに到達すると、タイマー・イベントで指定された期間待機した後、プロセス内の次のアクティビティに移行します。
たとえば、複数のデータベースを更新するプロセスの場合、プロセスを数分間遅延するタイマー・アクティビティを追加し、プロセスが続行する際にすべてのデータベースが更新されるようにします。
特定の日付まで待機するか、特定の期間待機するように中間タイマー・キャッチ・イベントを構成できます。いずれの場合も、固定値を選択するか、対応する日付または間隔を指定する式を使用できます。
タイマー中間イベントをサイクルとして構成すると、タイマー・イベントは1回だけ実行されます。指定された期間が経過するのを待ち、その後、トークンが残りのプロセス・フローを実行します。
17.3 時間条件に基づいて起動するプロセスの設計
プロセスにタイマー開始イベントを追加し、時間条件に基づいてトリガーされるように構成できます。タイマー開始イベントで指定された時間条件がtrueと評価されると、BPMNサービス・エンジンがプロセスに新規インスタンスを作成します。
たとえば、労働時間を報告するプロセスの場合、プロセス内にインスタンスを1日1回作成するタイマー開始イベントを追加できます。
特定の日付に起動するか、定期的にインスタンスを作成するようにプロセスを構成できます。いずれの場合も、固定値を選択するか、対応する日付または間隔を指定する式を使用できます。
過去の日付を指定するタイマー開始イベントが含まれるプロセスをデプロイすると、BPMNサービス・エンジンは自動的にプロセスのインスタンスを作成します。
17.3.1 時間条件に基づいて起動するプロセスの設計方法
特定の日付に達した場合、または一定期間が経過した後に定期的に起動するようにプロセスを設計できます。
時間条件に基づいて起動するようプロセスを設計するには:
-
BPMNプロセスを開きます。
-
プロセスで1つの開始イベントを使用する場合、開始イベントを右クリックして「トリガー・タイプの変更」を選択し、「タイマー」を選択します。
プロセスで複数の開始イベントを使用する場合、コンポーネント・パレットの「開始イベント」セクションでタイマー開始イベントを選択する必要があります。タイマー開始イベントをプロセスにドロップします。タイマー開始イベントを右クリックし、「プロパティ」を選択します。
-
プロセスを特定の日付に起動する場合、タイマー・イベントを時間日付として構成する必要があります。「特定の日付および時間を使用するタイマー・イベントの構成方法」を参照してください。
プロセスを一定期間の後に起動する場合、タイマー開始イベントをサイクルとして構成する必要があります。「間隔を使用するタイマー・イベントの構成方法」を参照してください。
特定のスケジュールに基づいてプロセスを開始する場合は、スケジュールとしてタイマーを構成する必要があります。「定期的に実行されるタイマー・イベントの構成方法」を参照してください。
17.4 アクティビティの期限の構成
アクティビティの期限を構成するには、プロセスの別の位置に移動する、連続しない境界イベントとして構成された連続しないタイマー・キャッチ・イベントを使用します。トークンが予定よりも長い期間、または特定の日付よりも後までアクティビティに残留している場合、タイマー・キャッチ・イベントがトリガーされてプロセス・フローを中断します。
期限が特定の日付に発生するように構成したり、トークンがアクティビティで一定の時間を費やした後に発生するように構成できます。いずれの場合も、固定された日付または間隔を指定するか、対応する日付または間隔を計算する式を使用できます。
たとえば、発注プロセスでは、クレジット・カードの承認を必要とするアクティビティは承認を1日待機するように構成できます。承認にそれ以上時間がかかる場合、メッセージを顧客に送信するアクティビティにトークンを移動します。
17.5 BPMNプロセスの期限の構成
連続しないタイマー開始イベントで開始されるイベント・サブプロセスを使用して、プロセスのプロセス期限を構成できます。一定の期間が経過するか日付に到達すると、タイマー・イベントが起動します。トークンがまだプロセス中であれば、イベントのサブプロセスに移動します。
タイマー・イベントは、トークンがプロセス中にある場合のみアクティブです。
期限が特定の日付に発生するように構成したり、トークンがアクティビティで一定の時間を費やした後に発生するように構成できます。いずれの場合も、固定された日付または間隔を指定するか、対応する日付または間隔を計算する式を使用できます。
たとえば、発注プロセスで、トークンがプロセス中に3か月以上残留している場合、自動的にプロセスが終了されるように構成できます。
イベントのサブプロセスにエラー終了イベントを使用して、プロセスの実行が成功して完了しないようにできます。
17.5.1 BPMNプロセスの期限の構成方法
BPMNプロセスの期限を構成できます。期限切れになった時点で、プロセス・フローを終了するか、フロー・オブジェクトのグループを実行するよう選択できます。
BPMNプロセスの期限を構成するには:
-
BPMNプロセスを開きます。
-
コンポーネント・パレットの「アクティビティ」セクションで「イベント・サブプロセス」を選択します。
-
イベント・サブプロセスをプロセスにドロップします。
-
イベント・サブプロセスの開始イベントをタイマー・イベントに構成します。
-
イベント・サブプロセスの開始イベントを右クリックします。
-
「プロパティ」を選択します。
-
「実装」タブをクリックします。
-
「実装タイプ」リストから「タイマー」を選択します。
-
「イベントの中断中」を選択します。
-
期限を特定の日付に発生させる場合、タイマー・イベントを時間日付として構成する必要があります。「特定の日付および時間を使用するタイマー・イベントの構成方法」を参照してください。
期限を一定期間の後に発生させる場合、タイマー・イベントをサイクルとして構成する必要があります。「間隔を使用するタイマー・イベントの構成方法」を参照してください。
特定のスケジュールを使用して期限を設定する場合は、スケジュールとしてタイマーを構成する必要があります。「定期的に実行されるタイマー・イベントの構成方法」を参照してください
-
17.6 追加アクティビティの実行
アクティビティまたはプロセスの実行中に、時間条件に基づいた追加アクティビティを実行できます。追加アクティビティは、定期的にトリガーするか、特定の日付にトリガーするよう選択できます。
一般的には、現在実行中のアクティビティの完了までに長時間かかる場合に追加アクティビティを実行します。たとえば、データベースの更新に20時間かかるサービスを実行している場合、更新の進行状況を通知する電子メールを関係者に送信できます。
タイマー・イベントは、トークンがアクティビティ中にある場合のみアクティブです。
プロセスの実行中にも追加アクティビティを実行できます。これらのアクティビティは、メイン・プロセス・フローとパラレルに実行されます。
17.6.1 アクティビティ実行中の追加アクティビティの実行方法
アクティビティの実行中に、パラレル・プロセス・フローを実行できます。一般的には、メイン・アクティビティの完了までに長時間かかるとわかっている場合に、一定期間の後にパラレル・プロセス・フローをトリガーするように設計します。
アクティビティ実行中に追加アクティビティを実行するには:
17.6.2 プロセス実行中の追加アクティビティの実行方法
メイン・プロセス・フローの実行中に、追加アクティビティを実行できます。一般的には、プロセスの完了までに長時間かかるとわかっている場合に、一定期間の後にパラレル・プロセス・フローをトリガーするように設計します。
プロセス実行中に追加アクティビティを実行するには:
17.7 タイマー・イベントの構成
特定の日時に起動するか、一定の時間が経過した後に起動するようにタイマー・イベントを構成できます。いずれの場合も、固定した時間値を指定するか、時間値を計算する式を指定できます。
定期的に実行されるようにタイマー・イベントを構成することもできます。サポートされている粒度は、日次、週次および月次です。いずれの場合も、そのプロジェクトに定義されているカレンダ・ルールを使用して日付を計算し、休日と一致したイベントを再スケジュールするようにタイマー・イベントを構成できます。
17.7.1 特定の日付および時間を使用するタイマー・イベントの構成方法
タイマー・イベントが特定の日時を使用するよう構成できます。日付と時間を指定するか、計算式を使用できます。
特定の日時を使用するタイマー・イベントを構成するには:
17.7.2 間隔を使用するタイマー・イベントの構成方法
タイマー・イベントが間隔を使用するよう構成できます。間隔を指定するか、間隔を計算する式を使用できます。
間隔を使用するタイマー・イベントを構成するには: