エクスポーター

Denodo Scheduler では、新しいカスタムエクスポーターを作成できます。

新しい エクスポーター を作成するには、インターフェイス com.denodo.scheduler.api.exporter.Exporter を実装する必要があります。このインターフェイスには、以下のメソッドがあります。

  • init: エクスポーターを初期化します。オプションで、データのターゲット (ある場合) が到達可能で正しく構成されているかどうかをテストします。

  • export: Scheduler がドキュメントのエクスポートを実行するために呼び出すメソッド。

  • getName: Scheduler が エクスポーター の名前を取得するために呼び出すメソッド。

com.denodo.scheduler.api.exporter.SchedulerExporter と呼ばれるインターフェイスを別途実装して、ジョブの実行時間 (再試行を必要とするジョブが再試行前に最初に実行された時間)、ジョブの再試行回数、および再試行の実行時間に関する情報が提供されるようにすることができます。このインターフェイスには、以下のメソッドがあります。

  • open: エクスポーターが必要とするリソースを初期化し、実行されたジョブに関する実行時の情報を取得します。

  • close: エクスポーターによって開かれたリソースを閉じて、必要な場合は一連のリソースを返します。たとえば、以下のコードスニペットが示すように、エクスポーターによって生成されたファイルのパスを返すことができます。その後、ハンドラーでそれらのリソースを取得できます。

Collection<ExporterResource> resources = new LinkedHashSet<ExporterResource>();
resources.add(new DefaultExporterResource(outputPath));
return resources;

両方のメソッドでスローされた例外は、ジョブレポートに表示されます。

このインターフェイスは、インターフェイス com.denodo.scheduler.api.exporter.SchedulerExporterExtended によって拡張され、以下の 2 つの新しいメソッドを提供します。

  • isOpen: エクスポーターが正常に開かれていて、まだ閉じられてはいない場合に true を返します。

  • isClosed: エクスポーターが一度も開かれていないか、すでに閉じられている場合に true を返します。閉じられたエクスポーターは、エクスポートする新しいドキュメントを Scheduler から受信しませんが、他のエクスポーターが受信します。このように、エクスポーターは open メソッドに失敗するとエクスポートするドキュメントを受信しないため、結果としてパフォーマンスが向上します。

CSV エクスポーターは、エクスポートされたファイルを 1 回だけ開き、すべてを書き込んでから閉じるために、このインターフェイスを実装します。JDBC エクスポーターは、データベースへのコネクションを 1 回だけ開いて、テーブルコンテンツを削除し (そのように構成されている場合)、エクスポートされたタプルを挿入してコネクションを閉じるためにこのインターフェイスを実装します (絶対にロールバックしないように構成されている場合は、「 エクスポーターセクション 」のセクションを参照)。新しいユーザー定義のエクスポーターもこのインターフェイスを実装することができます。

JDBC エクスポーターは、インターフェイス com.denodo.scheduler.api.exporter.batch.ExporterBatch を実装します。このインターフェイスには、以下のメソッドが 1 つ定義されています。

ユーザー定義のエクスポーターもこのインターフェイスを実装できます。 ExporterBatch を実装すると、エクスポーターの export メソッドを呼び出すたびに受信するドキュメントの数を構成できます。 ExporterBatch を実装するカスタムエクスポーターでは、バッチサイズを指定するための構成パラメーターを定義することをお勧めします。そうすれば、ユーザーはエクスポーターのバッチサイズをグラフィカルツールを使用して構成できます。 ExporterBatch を実装しない場合、デフォルトのバッチサイズは 200 です。

カスタムエクスポーターも、以下のメソッドを 1 つ定義するインターフェイス com.denodo.commons.schema.ISchema を実装できます。

  • setSchema(com.denodo.commons.schema.Schema schema): Scheduler サーバーがエクスポートするデータのスキーマをエクスポーターに提供します。このメソッドは、 SchedulerExporteropen メソッドが呼び出される前に、Scheduler サーバーによって呼び出されるため、 ISchemaSchedulerExporter を実装しているエクスポーターは、エクスポーターに必要なリソースを初期化する前に、エクスポートされたデータのスキーマを認識できます (たとえば、DB でテーブルを作成する前)。

詳細については「 Scheduler API の Javadoc 」を、エクスポーターを作成する例については「 <DENODO_HOME>/samples/scheduler/exporter-api 」を参照してください。