DataWorks では、分、時間、日、週、月、または 年 単位でスケジュールされたタスク間のスケジューリング依存関係を設定できます。タスクのスケジューリングサイクル数は、タスクのスケジューリング頻度によって異なります。各スケジューリングサイクルでタスクのインスタンスが生成されます。このトピックでは、異なるスケジューリング頻度を持つ上位タスクと下位タスクに対して生成される自動トリガーされたタスクインスタンス間の依存関係について説明します。
背景情報
DataWorks では、自動トリガーされたタスクは、スケジューリング頻度とタスクのスケジューリングサイクル数に基づいてインスタンスを生成します。たとえば、時間単位でスケジュールされたタスクは、毎日、タスクのスケジューリングサイクル数と同じ数のインスタンスを生成します。タスクはインスタンスとして実行されます。本質的に、自動トリガーされたタスク間の依存関係は、タスクに対して生成されたインスタンス間の依存関係です。上位と下位の自動トリガーされたタスクに対して生成されるインスタンスの数と、インスタンス間の依存関係は、上位と下位のタスクのスケジューリング頻度によって異なります。
DataWorks は、さまざまなスケジューリング依存関係シナリオをサポートしています。特定のシナリオで、タスク間に同一サイクルまたは前サイクルのスケジューリング依存関係を設定できます。タスク間の同一サイクルのスケジューリング依存関係とタスク間の前サイクルのスケジューリング依存関係の詳細については、「同一サイクルのスケジューリング依存関係の設定」および「サイクルをまたぐスケジューリング依存関係の設定」をご参照ください。
スケジューリング依存関係を設定する前に、次の表に記載されている項目に注意する必要があります。
番号 | 説明 | 参照 |
1 | DataWorks は、分、時間、日、週、月、年というスケジューリング頻度をサポートしています。上位タスクと下位タスクのスケジューリング頻度が異なる場合、DataWorks では、スケジューリング時間近接の原則に基づいて、上位タスクと下位タスク間のスケジューリング依存関係を設定できます。 説明
| |
2 | DataWorks でタスク間のスケジューリング依存関係を設定すると、タスクのデータ間の依存関係が確立されます。タスクのスケジューリング時間に関わらず、タスクはすべての上位タスクが実行を完了した後にのみ、実行条件を満たします。 | |
3 | サンプルシナリオに基づいて、スケジューリング依存関係のスケジューリング時間近接の原則を理解できます。 |
|
スケジューリング依存関係のスケジューリング時間近接の原則
DataWorks では、自動トリガーされたタスクが実行されるようにスケジュールされるたびに、タスクのインスタンスが生成されます。そのため、複数のインスタンスが生成されます。下位インスタンスは上位インスタンスに依存します。そのため、上位インスタンスは、下位インスタンスのスケジューリング時間が来る前に生成される必要があります。
ほとんどの場合、現在のインスタンスが依存するインスタンスを指定しない場合、現在のインスタンスの依存関係はスケジューリング時間近接の原則に準拠します。これは、現在のインスタンスが、スケジューリング時間が現在のインスタンスのスケジューリング時間と等しいか、それよりも前で、かつ他のインスタンスの上位インスタンスではないインスタンスに依存することを示しています。次の表は、さまざまなシナリオにおける依存関係の原則を示しています。
タスクのスケジューリング時間が上位タスクのスケジューリング時間よりも前の場合、タスクはスケジューリング時間には実行されません。タスクは、上位タスクが実行を完了した後にのみ、実行をスケジュールできます。
スケジューリング時間近接の原則に基づいて、タスクの上位タスクに、当日タスクに対して生成された最初のインスタンスのスケジューリング時間よりも前のスケジューリング時間を持つインスタンスがない場合、タスクの最初のインスタンスは、デフォルトで当日上位タスクに対して生成された最初のインスタンスに依存します。
シナリオ | 説明 | 図 |
時間単位でスケジュールされたタスクと分単位でスケジュールされたタスクの依存関係シナリオ | タスク間の依存関係は、タスクに対して生成されたインスタンスのスケジューリング時間に関連しています。
| 次の図は、さまざまなシナリオにおける時間単位でスケジュールされたタスクと分単位でスケジュールされたタスク間のスケジューリング依存関係を示しています。 |
タスク間の依存関係は、タスクに対して生成されたインスタンスのスケジューリング時間に関係がありません。 時間単位でスケジュールされたタスクが別の時間単位でスケジュールされたタスクに依存するシナリオ、または分単位でスケジュールされたタスクが別の分単位でスケジュールされたタスクに依存するシナリオでは、上位タスクと下位タスクの両方でスケジューリングサイクル数(当日生成されたインスタンス)が同じであれば、上位インスタンスと下位インスタンス間に 1 対 1 のマッピングが確立されます。 | ||
日単位でスケジュールされたタスクが時間または分単位でスケジュールされたタスクに依存するシナリオ |
|
|
さまざまな依存関係シナリオにおけるタスクの依存関係と実行状況の詳細については、「付録: 複雑な依存関係シナリオ」をご参照ください。
タスクの実行に対するタスク間の依存関係の影響
タスク間の依存関係を設定した後、上位タスクが「成功」状態にならない場合、下位タスクは下位タスクのスケジューリング時間になっても実行を開始できません。
たとえば、時間単位でスケジュールされたタスク B は、日単位でスケジュールされたタスク A に依存しています。
タスク A: スケジューリング時間は
07:00です。タスク B: スケジューリング時間は
00:00、08:00、および16:00です。
タスク A が実行を完了しない場合、タスク B のスケジューリング時間 00:00 になっても、タスク B は実行をスケジュールされません。タスク B が実際に実行される最も早い時間は 07:00 です。
付録: 複雑な依存関係シナリオ
次の表は、さまざまな依存関係シナリオにおける、異なるスケジュール頻度を持つタスクの依存関係と実行状況を示しています。
タスクのスケジュール時刻が、その祖先タスクのスケジュール時刻よりも早い場合、タスクはスケジュール時刻に実行されません。タスクは、祖先タスクの実行が完了した後にのみ、スケジュールされて実行されます。
スケジュール時刻の近接性の原則に基づき、タスクの祖先タスクに、当日タスクに対して生成された最初のインスタンスよりも早いスケジュール時刻を持つインスタンスがない場合、タスクの最初のインスタンスは、デフォルトで当日祖先タスクに対して生成された最初のインスタンスに依存します。
時間単位でスケジュールされたタスクの依存関係
依存関係シナリオ | 説明 | 図 |
時間単位でスケジュールされたタスクが時間単位でスケジュールされた別のタスクに依存するシナリオ |
|
|
時間単位でスケジュールされたタスクが日単位でスケジュールされたタスクに依存するシナリオ |
|
|
時間単位でスケジュールされたタスクが分単位でスケジュールされたタスクに依存するシナリオ |
|
|
日単位でスケジュールされたタスクの依存関係
依存関係シナリオ | 説明 | 図 |
同じスケジューリングサイクル内で、日単位でスケジュールされたタスクが別の日にスケジュールされたタスクに依存するシナリオ |
|
|
日単位でスケジュールされたタスクが当日の時間単位でスケジュールされたタスクに依存するシナリオ |
|
|
日単位でスケジュールされたタスクが前日の時間単位または分単位でスケジュールされたタスクに依存するシナリオ |
| 次の図は、日単位でスケジュールされたタスクが前日の時間単位でスケジュールされたタスクにどのように依存するかを示す例です。 |
分単位でスケジュールされたタスクの依存関係
依存関係シナリオ | 説明 | 図 |
分単位でスケジュールされたタスクが時間単位でスケジュールされたタスクに依存するシナリオ |
|
|
分単位でスケジュールされたタスクが日単位でスケジュールされたタスクに依存するシナリオ |
|
|
週、月、または年単位でスケジュールされたタスクへの依存関係
日、時間、または分でスケジュールされたタスクが、週、月、または年でスケジュールされたタスクに依存している場合、スケジュール時間外にある期間において、週、月、または年でスケジュールされたタスクに対してドライランインスタンスが生成されます。ドライランインスタンスは、データを生成したり、リソースを占有したり、子孫タスクの実行をブロックしたりすることはありません。
日単位でスケジュールされたタスクが、週単位でスケジュールされ、自己依存が構成されていないタスクに依存するサンプルシナリオ:
週単位でスケジュールされたタスクは、毎週月曜日と金曜日に実行されるようにスケジュールされています。 火曜日、水曜日、木曜日、土曜日、日曜日の毎日、タスクのドライランインスタンスが生成されます。 ドライランインスタンスのスケジュール実行時刻になると、インスタンスのステータスは直接成功に設定されますが、インスタンスのコードは実行されません。 ドライランインスタンスは、子孫インスタンスの通常の実行に影響を与えません。
日単位でスケジュールされたタスクのインスタンスは毎日生成され、ドライランインスタンスを含む、週単位でスケジュールされたタスクに対して毎日生成されるインスタンスに依存します。 日単位でスケジュールされたタスクに対して生成されるインスタンスは、週単位でスケジュールされたタスクに対して生成されるインスタンスが毎日正常に実行された後に実行されるようにスケジュールできます。










