ダイナミックなドロップダウンリストを作成 - 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 Real-Time Big Data Platform
Module
Talend Studio
Content
ジョブデザインと開発 > サードパーティーシステム > カスタムコードコンポーネント > Javaカスタムコードコンポーネント
データガバナンス > サードパーティーシステム > カスタムコードコンポーネント > Javaカスタムコードコンポーネント
データクオリティとプレパレーション > サードパーティーシステム > カスタムコードコンポーネント > Javaカスタムコードコンポーネント
Last publication date
2024-02-28
最初のシナリオでは、tJavaコンポーネント内のリストをハードコードしました。しかし、リストの項目はデータソースからのものである場合があります。たとえば、項目はデータベーステーブルに保管されており、その数が不明であることがあります。

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

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

手順

  1. [Palette] (パレット)から、tMysqlInputコンポーネントとtJavaFlexコンポーネントをデザインワークスペースにドロップします。[行] > [メイン]リンクを使用してコンポーネントを接続します。
  2. [Palette] (パレット)から、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に関する情報がテーブルからクエリーされて、コンソールに出力されます。