最初のシナリオでは、
tJavaコンポーネント内のリストをハードコードしました。しかし、リストの項目はデータソースからのものである場合があります。たとえば、項目はデータベーステーブルに保管されており、その数が不明であることがあります。
このジョブは、次のコンポーネントを使用します:
- employeeテーブルから人物情報をクエリーするtMysqlInputコンポーネント、
- コンテキスト変数で、ダイナミックなドロップダウンリストを準備して、ランタイムにユーザーから選択された値を保管するtJavaFlex、
- tJavaFlexによって処理された情報を生成する2つ目のtMysqlInputコンポーネント、
- コンソールに結果を出力するtLogRowコンポーネント。
手順
-
[Palette] (パレット)から、tMysqlInputコンポーネントとtJavaFlexコンポーネントをデザインワークスペースにドロップします。[行] > [メイン]リンクを使用してコンポーネントを接続します。
-
[Palette] (パレット)から、2番目のtMysqlInputコンポーネントとtLogRowコンポーネントをデザインワークスペースにドロップします。[行] > [メイン]リンクを使用してコンポーネントを接続します。 [Trigger] (トリガー) > [On Subjob ok] (サブジョブがOKの場合)接続を使って、最初のサブジョブを2番目のサブジョブにリンクします。
-
[Context] (コンテキスト)ビューをクリックし、String型のコンテキスト変数を定義して、namedと名付けます:
-
1つ目のtMysqlをダブルクリックして、以下の例のように設定します:
-
以下のクエリーをクエリーボックスに追加します:
"select name from employee"
-
スキーマを編集して、このスキーマを設定します。
-
tJavaFlexコンポーネントをクリックして、その[Basic settings] (基本設定)ビューを開いて、次のコードを追加します:
-
[Start code] (開始コード)ボックスに:
java.util.ArrayList<String> list=new
java.util.ArrayList<String> ();
-
[Main code] (メインコード)ボックスに:
-
[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;
-
tJavaコンポーネントの[Advanced Settings] (詳細設定)パネルに、このジョブで使用されるクラスの完全パスをインポートします。
-
上のシナリオのように、2つ目のtMysqlInputコンポーネントを設定し、employeeテーブルから人物情報をクエリーし、tLogRowを使って結果をコンソールに出力します。
-
ジョブを実行します。以下のように、テーブル内の名前はすべてリストの項目です:
-
たとえば、リストからNicolasを選択します。Nicolasに関する情報がテーブルからクエリーされて、コンソールに出力されます。