このトピックでは、ノード依存ループの定義、ノード依存ループが形成される理由、およびノード依存ループの解決策について説明します。
ノード依存ループとは
ノードが他のノードの祖先ノードとして機能するだけでなく、1 つ以上の子孫ノードにも依存している場合、ノード依存ループが形成されます。ループ内のノードは自動的にスケジュールされることができません。本番環境では、ノード依存ループが形成されると、アラート通知が自動的に送信されます。詳細については、このトピックの監視とアラートセクションをご参照ください。
原因と解決策
ノードが他のノードの祖先ノードとして機能するだけでなく、1 つ以上の子孫ノードにも依存している場合、ノード依存ループが形成されます。この場合、ワークフローを分析し、ループの原因となっている依存関係をできるだけ早く削除する必要があります。
たとえば、祖先ノードが同じスケジューリングサイクルで子孫ノードによって生成されたテーブル内のデータに依存し、データ処理結果をテーブルに書き込む場合、ノード依存ループが形成されます。この場合、ビジネスシナリオを確認し、依存関係を変更して、祖先ノードが前のスケジューリングサイクルで子孫ノードによって生成されたテーブル内のデータに依存するようにします。
サンプルシナリオ: ノード A が実行されてテーブル C のデータがクエリされ、テーブル A が生成されます。ノード B はテーブル A のデータをクレンジングし、取得したデータをテーブル B に書き込みます。次に、ノード C はテーブル B のデータをクレンジングし、取得したデータをテーブル C に書き込みます。この場合、ノード依存ループが形成されます。次の図は、ノード依存ループを示しています。
解決策: ワークフローを分析し、ループの原因となっている依存関係を削除します。祖先ノードが前のスケジューリングサイクルで子孫ノードによって生成されたデータをクレンジングするようにするには、サイクル間スケジューリング依存関係を設定できます。次の図に示すサンプルシナリオでは、ノード A とノード C の間にサイクル間スケジューリング依存関係を設定できます。

監視とアラート
DataWorks は、自動トリガーされたタスクを定期的に監視およびスキャンするための組み込みアラートルールを提供します。これにより、自動トリガーされたタスクをスケジュールどおりに実行し、自動トリガーされたタスクのインスタンスを生成できます。例外が発生した場合、アラートがトリガーされます。ノード依存ループが形成されると、アラート通知が自動的に送信されます。できるだけ早くアラートを処理することをお勧めします。
DataWorks は、毎日 09:00、12:00、16:00、20:00、および 22:00 に自動トリガーされたタスクをスキャンします。例外が発生した場合、DataWorks はアラート通知を送信します。ただし、スキャンの開始 10 分前に例外が発生した場合、その例外は現在のスキャンのスキャン範囲外となり、次のスキャンまで検出されません。
ノード依存ループのアラートルールは、DataWorks によって提供される組み込みルールです。アラートルールがトリガーされると、SMS または E メールでノード所有者にアラート通知が送信されます。[ルール管理] ページでアラートの連絡先を変更できます。詳細については、「カスタムアラートルールを作成する」をご参照ください。