データソースのランタイム・クラスの作成

DataSourceRuntimeは、データソース・インスタンスのランタイム表現です。これはDataSource.createDataSourceRuntime()によって作成され、データソースの存続期間の間は存在します。

IAS ServerはPipelineComponentRuntimeContextクラスを作成し、DataSource.createDataSourceRuntime()渡します。PipelineComponentRuntimeContextは、出力チャネル、エラー・チャネル、状態ディレクトリおよび他のランタイム・プロパティを指定します。

ErrorChannel.discard()メソッドは、レコード取得プロセスから無効なレコードを破棄します。また、レコードの破棄に加え、ErrorChannelクラスはキャッチした例外を処理します。この処理では、レコード用の適切なメトリックを増分し、さらにias-service.logファイルにレコードを記録します。ErrorChannelは、レベルWARN以上のイベントを記録します。

データソースのランタイム・クラスを作成する手順は次のとおりです。

  1. DataSource実装を含むJavaプロジェクトに、DataSourceRuntimeのサブクラスを作成します。
    たとえば、次のようになります。
    public class CsvDataSourceRuntime extends DataSourceRuntime {
    
    }
  2. DataSourceRuntimeコンストラクタを実装します。
  3. 抽象メソッドrunFullAcquisition()を実装して、データソースからコンテンツを取得する方法を定義します。実装は、カスタム・データソースに依存します。
  4. runFullAcquisition()の実装内で、必要に応じてErrorChannel.discard()をコールして無効またはエラーのあるレコードを破棄し、さらに処理された各レコードに対してはOutputChannel.output()をコールします。
  5. データソースでテキスト抽出のサポートが必要とされる場合、オプションで、BinaryContentFileProviderインタフェースまたはBinaryContentInputStreamProviderインタフェースのいずれかを実装します。詳細は、「データソースでのドキュメント変換のサポート」を参照してください。
  6. オプションで、Integrator Acquisition Systemに変更を算出させるかわりに、IncrementalDataSourceRuntimeを実装して、データソースでの変更を計算します。詳細は、「データソースでの増分取得のサポート」を参照してください。
  7. オプションで、拡張機能のランタイム・オブジェクトを適切なタイミングで停止するメカニズムを提供することによって、取得を停止するリクエストを処理します。これには、PipelineComponentRuntimeContext.isStopped()をポーリングしたり、PipelineComponentRuntime.stop()をオーバーライドすることが含まれる場合があります。詳細は、「取得の停止時の拡張機能の停止」を参照してください。
  8. オプションで、PipelineComponentRuntime.endAcquisition()をオーバーライドして、PipelineComponentRuntimeに使用されたリソースをクリーンアップします。詳細は、「拡張機能が使用したリソースのクリーンアップ」を参照してください。

データソース・ランタイムの例

前述の手順の詳細は、<インストール・パス>\IAS\<バージョン>\sample\ias-extensions\src\main\com\endeca\ias\extension\sample\datasource\csvのサンプル・データソース拡張機能を参照してください。