DataWorks では、ノードのサイクル間のスケジューリング依存関係を設定できます。現在のサイクルでノードに対して生成されたインスタンスを、前のサイクルで 1 つ以上の特定のノードに対して生成されたインスタンスに依存するように設定できます。現在のサイクルでノードに対して生成されたインスタンスは、ノードが依存する 1 つ以上の特定のノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。現在のサイクルでノードに対して生成されたインスタンスが前の日に別のノードに対して生成されたインスタンスのデータに依存する必要がある場合、または現在のサイクルで時間または分でスケジュールされたノードに対して生成されたインスタンスが前のサイクルで同じノードに対して生成されたインスタンスに依存する必要がある場合は、サイクル間のスケジューリング依存関係を設定できます。このトピックでは、ノードのサイクル間のスケジューリング依存関係を設定する方法と、サイクル間の依存関係のタイプについて説明します。
注意事項
サイクル間のスケジューリング依存関係を設定する場合は、次の表に記載されている項目に注意してください。| 項目 | 説明 | 参照 |
| サイクル間のスケジューリング依存関係の表示 | サイクル間のスケジューリング依存関係は、ノードの有向非巡回グラフ(DAG)では破線として表示されます。 | 付録: DAG で提供される機能を使用する |
| サイクル間のスケジューリング依存関係の設定後に同じサイクルのスケジューリング依存関係を設定する必要があることの確認 | ノードのスケジューリング依存関係を設定すると、ノードはすべての祖先ノードが正常に実行された後にのみ実行を開始できます。 デフォルトでは、同じサイクルのスケジューリング依存関係の自動解析機能が有効になっています。ノードにサイクル間のスケジューリング依存関係が設定されている場合は、ノードに同じサイクルのスケジューリング依存関係が必要かどうかを確認する必要があります。ノードに同じサイクルのスケジューリング依存関係が必要ない場合は、ノードの実行への影響を防ぐために、自動的に生成された同じサイクルのスケジューリング依存関係を削除する必要があります。 | スケジューリング依存関係の削除 |
| サイクル間のスケジューリング依存関係が必要な複雑なシナリオ | 複雑なシナリオでは、同じサイクルのスケジューリング依存関係ではビジネス要件を満たせない場合があります。この場合、サイクル間のスケジューリング依存関係を設定できます。 たとえば、日でスケジュールされたノードが時間でスケジュールされたノードに依存する場合、日でスケジュールされたノードに対して生成されたインスタンスは、デフォルトで現在の日に時間でスケジュールされたノードに対して生成されたすべてのインスタンスに依存します。自己依存関係を時間でスケジュールされたノードに設定できます。このようにして、日でスケジュールされたノードに対して生成されたインスタンスは、特定のスケジューリングサイクルで時間でスケジュールされたノードに対して生成されたインスタンスに依存できます。 | 複雑な依存関係シナリオにおけるスケジューリング設定の原則とサンプル |
| ノードのスケジューリング依存関係のプレビュー | 本番環境で自動トリガーされたノードが期待どおりではないスケジューリング依存関係によって遅延するのを防ぐために、ノードを本番環境にデプロイする前にノードのスケジューリング依存関係をプレビューすることをお勧めします。これにより、自動トリガーされたノードに対して生成されたインスタンスが期待どおりに実行されるようになります。 | スケジューリング依存関係のプレビュー |
| ノードのデプロイ | ノードのサイクル間のスケジューリング依存関係を設定した後、ノードとその祖先ノードを本番環境にデプロイする必要があります。デプロイが完了すると、本番環境のオペレーションセンターでサイクル間のスケジューリング依存関係を表示できます。 | ノードのデプロイ |
サイクル間のスケジューリング依存関係の設定のエントリポイント

サイクル間のスケジューリング依存関係のタイプ
| タイプ | 説明 | シナリオ |
| 前のサイクルで現在のノードに対して生成されたインスタンスへの依存関係 | 現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。 | 現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスの最新のビジネスデータに依存します。 |
| 前のサイクルでノードのレベル 1 の子孫ノードに対して生成されたインスタンスへの依存関係 | 現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで現在のノードの子孫ノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。 | 現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで現在のノードの出力テーブルデータが現在のノードの子孫ノードに対して生成されたインスタンスによってクレンジングされるかどうかに依存します。 |
| 前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスへの依存関係 | 現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。 | 現在のサイクルでノードに対して生成されたインスタンスは、ビジネスロジックでは前のサイクルで 1 つ以上の他のノードに対して生成されたインスタンスの出力テーブルデータに依存しますが、コードではデータを使用しません。 |
前のサイクルで現在のノードに対して生成されたインスタンスへの依存関係
現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで同じノードに対して生成されたインスタンスの最新のビジネスデータに依存します。次の図は、スケジューリング依存関係の設定とインスタンス間の依存関係を示しています。
- 時間でスケジュールされたノードまたは分でスケジュールされたノードに自己依存関係が設定されていない
時間でスケジュールされたノードまたは分でスケジュールされたノードに自己依存関係が設定されていない場合、日でスケジュールされたノードに対して生成されたインスタンスは、現在の日に時間でスケジュールされたノードまたは分でスケジュールされたノードに対して生成されたすべてのインスタンスに依存します。この場合、日でスケジュールされたノードは、現在の日に時間でスケジュールされたノードまたは分でスケジュールされたノードに対して生成されたすべてのインスタンスのすべてのテーブルデータを集計して処理します。
- 時間でスケジュールされたノードまたは分でスケジュールされたノードに自己依存関係が設定されている
時間でスケジュールされたノードまたは分でスケジュールされたノードに自己依存関係が設定されている場合、日でスケジュールされたノードに対して生成されたインスタンスは、スケジューリング時間の近接性の原則に基づいて、時間でスケジュールされたノードまたは分でスケジュールされたノードに対して生成された特定のインスタンスのみに依存します。2 つのインスタンスのスケジューリング時間は最も近くなります。
前のサイクルでノードのレベル 1 の子孫ノードに対して生成されたインスタンスへの依存関係
このタイプのスケジューリング依存関係をノードに設定すると、現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルでノードのレベル 1 の子孫ノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。
前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスへの依存関係
このタイプのスケジューリング依存関係をノードに設定すると、現在のサイクルでノードに対して生成されたインスタンスは、前のサイクルで 1 つ以上の指定されたノードに対して生成されたインスタンスが正常に実行された後にのみ実行を開始できます。
祖先ノードのドライラン属性の受け渡し
ほとんどの場合、分岐ノードを使用する場合は、この設定を行う必要があります。- エントリポイントノードの [アップストリームのエアランニング属性に従う] パラメーターを [いいえ] に設定できます。このようにして、ノードおよびノードの子孫ノードに対して生成されたすべてのインスタンスは、通常どおり実行できます。

- シナリオ
ノードには複数の子孫ノードがあります。ノードが実行されると、子孫ノードのステータスはドライランになります。現在のサイクルでドライランの子孫ノードに対して生成されたインスタンスを前のサイクルでドライランの子孫ノードに対して生成されたインスタンスに依存するように設定すると、ノードのドライラン属性はドライランノードの子孫ノードに渡されます。この場合、ドライランノードおよびドライランノードの子孫ノードに対して生成されたすべてのインスタンスはドライランになります。ドライラン属性を渡したくない場合は、[プロパティ] タブの [依存関係] セクションで、ドライランの子孫ノードの [アップストリームのエアランニング属性に従う] パラメーターを [いいえ] に設定できます。
- 例
- Assign_Node は割り当てノードです。Branch_Node は分岐ノードです。Shell_Node1 と Shell_Node2 は Branch_Node の子孫ノードです。これらのノードはすべて日でスケジュールされています。
- Shell_Node1 はドライランであり、Shell_Node2 は通常どおり実行されます。
- 現在のサイクルで Shell_Node1 に対して生成されたインスタンスは、前のサイクルで Shell_Node1 に対して生成されたインスタンスに依存するように設定されています。
- Shell_Node1 は、現在のサイクル(T)で自動トリガーされたインスタンス
Shell_Node1'を生成します。 - Shell_Node1 は、前のサイクル(T-1)で自動トリガーされたインスタンス
Shell_Node1を生成します。

Shell_Node1'インスタンスはShell_Node1インスタンスに依存します。Shell_Node1 ノードのドライラン属性が渡されます。したがって、Shell_Node1 ノードおよび Shell_Node1 ノードの子孫ノードに対して生成されたすべてのインスタンスはドライランになります。
スケジューリング依存関係のプレビュー
ノードのスケジューリング依存関係を設定した後、スケジューリング依存関係をプレビューできます。詳細については、「後続の手順: スケジューリング依存関係が期待どおりかどうかを確認する」をご参照ください。