USER MANUALS

拡張機能 (プラグイン)

Denodo Scheduler では、ユーザーは独自のエクスポーターまたはハンドラーを作成できます。

以降のセクションでは、新しい exporter または handler の実装方法を説明します。

拡張機能の開発後、Denodo ナレッジベースの記事「 How to debug Denodo custom extensions with Eclipse 」の指示に従ってその拡張機能のデバックを実行できます。

拡張機能を実装したら、構成メタデータ (拡張機能のタイプ、名前、入力パラメータ) を指定する XML ファイル、および (オプションで) メタデータに指定された入力パラメータのデフォルト値を指定する別の XML ファイルとともに、JAR ファイルにパッケージ化する必要があります。メタデータは自動生成された構成ウィザードを通じて拡張機能を構成するために管理ツールで使用され (メタデータは、拡張機能が init メソッドで受け取るパラメータの値を指定)、デフォルト値は構成ウィザードでパラメータの値を初期設定するために使用できます。

メタデータファイルの名前と場所は、拡張機能を実装するクラスの名前や場所と同じである (実装クラスと同じパッケージ内にある) 必要があります。メタデータファイルは、JAR ファイル <DENODO_HOME>/lib/contrib/denodo-configuration.jar にある DTD custom-metaconfig.dtd に従っている必要があります。この XML ファイルでは、 element タグによって、拡張子のタイプ ( type ) とサブタイプ ( subType ) を指定することができます。各構成パラメータは param エレメントを使用して指定します。その属性を以下に示します。

  • パラメータ名 ( name )。

  • 必須かどうか ( mandatory )。

  • 複数の値を指定可能かどうか ( multivalued )。

  • Java の型 ( javaType )。

  • 機密データが含まれるかどうか ( hidden )。

    • 隠しパラメータの値は、構成ウィザードではドットの文字列で表示されます。

  • 構成ウィザードで表示されるラベル ( displayName )。

    • displayName が指定されない場合は、パラメータのラベルに name パラメータが使用されます。

  • 構成ウィザードでヒントとして表示されるヘルプテキスト ( helpText )。

  • 値が環境に依存するかどうか ( environmentDependent )。

    • true に設定すると、このパラメータはプロパティとともに、別のプロパティファイルにエクスポートされます ( エクスポート で説明)。

パラメータが複合型の場合、パラメータのコンポーネントは components エレメント内にリストで表示されます。

Scheduler サンプルに含まれている XMLCustomHandler ハンドラーの以下のメタデータ XML ファイルは、例として示されています。下の例が示すとおり、これは「xml-custom-handler」と呼ばれるハンドラーエレメントであり、入力パラメータとして入力ファイルパスと出力ファイルパスがあります。

 <?xml version="1.0" encoding="UTF-8"?>

 <!DOCTYPE metaconfig SYSTEM "custom-metaconfig.dtd">

 <metaconfig>
   <element type="handler" subType="xml-custom-handler"
       class="com.denodo.scheduler.demo.XMLCustomHandler" />

   <param javaType="java.lang.String" mandatory="false" multivalued="false"
       name="Input file absolute path" />
   <param javaType="java.lang.String" mandatory="true" multivalued="false"
       name="Output XML file absolute path" />
</metaconfig>

重要

エクスポート/インポートプロセス (詳細については、「 バックアップのインポート/エクスポート 」のセクションを参照) は、「datasource」と呼ばれるすべてのパラメータの値について、ID から名前への変換を試みた後、名前から ID への変換を試みます (データソースの ID はインストールごとに異なるため)。そのため、拡張機能のパラメータの値としてデータソースの ID を使用する必要がある場合は、それを「datasource」と呼ぶ必要があります。拡張機能のパラメータの値としてデータソースの名前を使用する必要がある場合は、「datasource」とは異なるパラメータ名を使用する必要があります (それ以外の場合は、この拡張機能を使用してジョブをエクスポートしてからインポートした後、「datasource」パラメータの値が ID で置き換えられます)。

オプションのデフォルト値ファイルはメタデータファイルと同じディレクトリ内に配置し、「default_」が先頭に付加された同じ名前にする必要があります。また、JAR ファイル <DENODO_HOME>/lib/contrib/denodo-configuration.jar 内で見つかる DTD default-custom-config.dtd に従っている必要があります。この XML ファイルでは、 simple-param タグと compound-param タグを使用して、それぞれ単純型パラメータと複合型パラメータのデフォルト値を設定できます。どちらもパラメータの名前を指定するための属性 (name) を受け入れます。値はネストされた value タグを使用して指定されます。単純型パラメータの場合、 value タグにはパラメータの値自体が含まれ、複合型パラメータの場合は、それを構成するパラメータの値を指定するためのネストされた simple-param タグまたは compound-param タグが含まれます。単純型と複合型のパラメータが複数値を持つ場合でも、それぞれデフォルト値は 1 つずつしか指定できません。パラメータが複数の値を持つ場合は、最初に作成されるそのタイプのパラメータの数を指定するために、パラメータタグで属性 instances を使用できます (デフォルト値は 1 で、そのタイプのパラメータを作成する必要がない場合は 0 に設定できます)。ユーザーによって後から追加されたインスタンスも含めて、複数値パラメータのすべてのインスタンスが、その複数値パラメータを構成するパラメータに指定されたデフォルト値を使用して最初に作成されます。パラメータが複数値ではなく、オプションの場合は、パラメータを最初に作成する (instances を 1 に設定) か、作成しない (instances を 0 に設定) かを指定するために属性 instances を使用できます。

以下のデフォルト値 XML ファイルは、前出の XMLCustomHandler ハンドラーで使用できます。下の例が示すとおり、 Output XML file absolute path パラメータのデフォルト値として「/tmp」を指定しています。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE default-parameters SYSTEM "default-custom-config.dtd">

<default-parameters>

    <simple-param name="Output XML file absolute path">
        <value>/tmp</value>
    </simple-param>

</default-parameters>

最後に、 META-INF/MANIFEST.MF JAR ファイルでは、以下のメタデータを指定する必要があります。

  • Name: CustomElement

  • PluginType: エクスポーター | ハンドラー

  • PluginName: 拡張機能の名前 (管理ツールで拡張機能の名前として使用)

  • PluginClass: 拡張機能実装クラスの名前

Scheduler サンプルに含まれる XMLCustomHandler ハンドラーの以下の MANIFEST.MF フラグメントは、例として示されています。

Manifest-Version: 1.0
...

Name: CustomElement
PluginType: handler
PluginName: XMLCustomHandler
PluginClass: com.denodo.scheduler.demo.XMLCustomHandler

プラグイン 」のセクションでは、Scheduler で新しい拡張機能をインストールする方法が説明されています。

Add feedback