ダイナミックなドロップダウンリストを作成 - Cloud - 8.0

Java custom code

Version
Cloud
8.0
Language
日本語 (日本)
Product
Talend Big Data
Talend Big Data Platform
Talend Cloud
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Real-Time Big Data Platform
Module
Talend Studio
Content
ジョブデザインと開発 > サードパーティーシステム > カスタムコードコンポーネント > Javaカスタムコードコンポーネント
データガバナンス > サードパーティーシステム > カスタムコードコンポーネント > Javaカスタムコードコンポーネント
データクオリティとプレパレーション > サードパーティーシステム > カスタムコードコンポーネント > Javaカスタムコードコンポーネント
最初のシナリオでは、tJavaコンポーネント内のリストをハードコードしました。しかし、リストのアイテムはデータソースからのものである場合があります。たとえば、アイテムはデータベーステーブルに保管されており、その数が不明であることがあります。

このジョブは、次のコンポーネントを使用します:

  • employeeテーブルから人物情報をクエリーするtMysqlInputコンポーネント、
  • コンテキスト変数で、ダイナミックなドロップダウンリストを準備して、ランタイムにユーザーから選択された値を保管するtJavaFlex
  • tJavaFlexによって処理された情報を生成する2つ目のtMysqlInputコンポーネント、
  • コンソールに結果を出力するtLogRowコンポーネント。

手順

  1. パレットからtMysqlInputコンポーネントとtJavaFlexコンポーネントをデザインワークスペースにドロップします。[行] > [メイン]リンクを使用してコンポーネントを接続します。
  2. パレットから2つ目のtMysqlInputコンポーネントとtLogRowコンポーネントをデザインワークスペースにドロップします。[行] > [メイン]リンクを使用してコンポーネントを接続します。 [Trigger] (トリガー) > [On Subjob ok] (サブジョブがOKの場合)接続を使って、最初のサブジョブを2番目のサブジョブにリンクします。
  3. [Context] (コンテキスト)タブをクリックして、String型のnamedと名付けられたコンテキスト変数を定義します。
  4. 1つ目のtMysqlをダブルクリックして、以下の例のように設定します:
    1. 以下のクエリーをクエリーボックスに追加します:
      "select name from employee"
    2. スキーマを編集して、このスキーマを設定します。
  5. tJavaFlexコンポーネントをクリックして、その[Basic settings] (基本設定)ビューを開いて、次のコードを追加します:
    1. [Start code] (開始コード)ボックスに:
      java.util.ArrayList<String> list=new
                                          java.util.ArrayList<String> ();
    2. [Main code] (メインコード)ボックスに:
      list.add(row1.name);
    3. [End code] (終了コード)ボックスに:
      String [] nameList=new String[list.size()];
                                      nameList=list.toArray(nameList);
                                      JFrame frame = new JFrame("Input Dialog Example");
                                      String returnValue = (String) JOptionPane.showInputDialog(frame,
                                      "Select the name you want to query?","Employee Information",JOptionPane.QUESTION_MESSAGE,null,nameList,nameList[0]);
                                      context.name=returnValue;
  6. tJavaコンポーネントの[Advanced Settings] (詳細設定)パネルに、このジョブで使用されるクラスの完全なパスをインポートします。
  7. 上のシナリオのように、2つ目のtMysqlInputコンポーネントを設定し、employeeテーブルから人物情報をクエリーし、tLogRowを使って結果をコンソールに出力します。
  8. ジョブを実行します。以下のように、テーブル内の名前はすべてリストのアイテムです:
  9. たとえば、リストからNicolasを選択します。Nicolasに関する情報がテーブルからクエリーされて、コンソールに出力されます。