#Talendのコンポーネントを自作する#
以前に標準コンポーネントでは実現できない処理をカスタムコンポーネントで使用する方法を紹介しましたが、今回はコンポーネントを作成する方法を紹介いたします。
#Talendバージョン7以降ではコンポーネント作成手法が変更#
Talendのバージョン6以前ではTalendStudioにComponent Designerという機能が付随されており、これを使ってコンポーネントの作成ができるようになっていました。
しかしバージョン7以降ではComponent Designerが廃止され、EclipseやIntelliJなどのJava統合開発環境で開発する方法に変更されました。
#開発環境準備#
コンポーネントの開発にはTalend Component Kitが必要になりますので、プラグインが利用可能なIntelliJを使用します。
IntelliJを起動して空のプロジェクトを作成し、メニューのファイルから設定画面を開き、プラグインのマーケットプレイスの検索タブからTalendを入力するとTalend Component Kitが表示されますので、これを選択してインストールしてIntelliJを再起動します。
なお、JavaはJava JDK1.8.xが必須となります。
#プロジェクトの新規作成#
IntelliJ IDEA へようこそ画面からプロジェクトの新規作成をクリックし、Talend Component Kitを選択して次へをクリックします。
下図のTalend STARTER TOOLKITが表示されます。
#メタデータの定義#
Talend STARTER TOOLKIT画面ではコンポーネントとプロジェクトのメタデータを定義します。
今回は下図の内容を設定します。
各項目を入力し画面左側の③Add A ComponentをクリックするとConfigration画面が表示されます。
#コンポーネントの標準定義設定#
Configration画面ではコンポーネントの名前と入出力設定を行います。
今回は下図のように名前のみをLoggerに変更し入出力はデフォルト設定で行います。
次へをクリックすると下図のプロジェクト名と保存場所の設定画面が表示されますので、必要に応じて変更して完了ボタンをクリックします。
#プロジェクトの確認#
STARTER TOOLKITが完了するとIntelliJのプロジェクト画面に移行します。
この時点でコンポーネントの作成に必要な最低限の設定は完了しています。
プロジェクトからLoggerProcessor.javaを開くと、コンポーネント作成に必要なコードの下地が既に作成されています。
#コンポーネントのコンパイルとデプロイ#
この時点では特に何も機能しないコンポーネントではありますが、TalendOpenStudioへのデプロイまで実行してみます。
IntelliJのターミナルでmvnw clear installを入力してコンパイルを実行します。
下図のようにコンパイルが実行され正常に終了します。
続いて、mvnw talend-component:deploy-in-studio -Dtalend.component.studioHome="C:\Talend\7.1.1_TOS_DI"を入力してTalendOpenStudioへのデプロイを実行します。
ダブルクォーテーションで囲まれているパスには、デプロイするコンポーネントを使用するTalendOpenStudioのホームのパスを設定します。
下図のようにデプロイが実行され正常に終了します。
#TalendOpenStudioから作成したコンポーネントを使用する#
デプロイ先に指定したTalendOpenStudioを起動して空のジョブを作成します。
PaletteのMiscを開くと、STARTER TOOLKITのメタデータで定義したSampleFamilyが表示され、デプロイしたコンポーネントSampleFamilyLoggerが使用できるようになっていますので、これをジョブに配置して使用できることを確認します。
#入力内容を表示するコードを追加する#
このままでは実行しても見た目の結果が何もないコンポーネントなので、入力内容を表示するコンポーネントに変更します。
TalendOpenStudioを終了してIntelliJに戻り、LoggerProcessor.javaを開いて@ElementListenerを探して以下の2行を追加します。
//Log to the console
System.out.println("Input["+defaultInput+"]");
先ほどと同様にターミナルからコンパイルとデプロイを実行します。
再びTalendOpenStudioを起動して、先ほどのジョブを開いてコンポーネントのInput側にtFileInputDelimitedeを追加してジョブを実行すると、実行結果にファイルからの入力内容が表示されます。
#まとめ#
IntelliJとTalend Component Kitを使用することにより、簡単にコンポーネントの下地を作成することができました。
次回はもう少し深堀してコンポーネントを作成したいと考えてます。