Luigiを構成する要素について、自分の中での整理の意味も込めて、書き出してみたいと思います。
随時、書き足していきます。
勘違いしている部分もあるかもしれないため、ご指摘いただけると幸いです。
タスク
- ワークフローを構成する処理の単位。
- タスク同士はワークフローにおいて、依存関係にある。
- タスク間で受け渡されるデータは、パラメータとターゲットの二種類。
- タスクの成功は、output()メソッドで指定したターゲットへのファイル作成。
- タスクの失敗は、タスク内における例外発生。
- タスクの成功によって生成されるファイルはチェックポイントとしても利用され、そのファイルが存在する場合には、そのタスクは何もせず、成功扱いとして処理される。
- 依存先タスクのoutput()メソッドで返却したターゲットには、依存元タスクからinput()メソッドとしてアクセスすることができる。
ターゲット
- 各種ファイルシステムへのアクセスを提供するためのインタフェース。
- open時のモードに応じてバッファリーダ/ライタや特定のファイルシステムに接続するためのクライアントを提供する機構を内包している。
- 実際にファイルにアクセスする際には、フォーマットが用いられる。
フォーマット
- 各種ファイルへのアクセス方法を提供するためのインタフェース。
- ターゲットのopen()時のモードによって、書き込み/読み込みのための処理を提供する。
依存について
- 通常の依存と動的依存の二種類がある。
- 通常の依存は、プログラム時に依存関係が静的に形成できる依存に用いる=行われるタスク数が事前に分かっている場合など。
- 動的依存は、プログラム時に依存関係が形成できない場合に用いる=行われるタスク数がそのタスクのinput()で引き渡されるデータに応じる場合など。