メイン コンテンツをスキップする 補完的コンテンツへスキップ

MetaServlet REST Webサービスを呼び出してタスクを実行

以下のシナリオでは、Talend Studioで作成したジョブにより、MetaServlet REST Webサービスを呼び出し、Talend Administration Center上で特定のタスクを実行します。

始める前に

Talend Administration CenterJob Conductorページに既存のタスクがあること。

Designerでのジョブのスクリーンショット。

コンポーネントをドロップしてリンク

Procedure

  1. [Palette] (パレット)からデザインワークスペースに、次のコンポーネントを配置します:
    • tSetGlobalVarコンポーネントを1つ
    • tRESTコンポーネントを1つ
    • tLogRowコンポーネントを1つ
  2. [Row] (行) > [Main] (メイン)接続を使って、tRESTコンポーネントをtLogRowコンポーネントに接続します。
  3. [Trigger] (トリガー) > [OnSubjobOK]接続を使って、tSetGlobalVarコンポーネントをtRESTコンポーネントに接続します。

コンテキスト変数を設定する

MetaServlet REST Webサービスを呼び出すために使用する変数を定義する必要があります。

Procedure

  1. [Context] (コンテキスト)ビューで、[+]ボタンを4回クリックし、変数を4つ追加します。
  2. これらの変数に、tac_urltac_usertac_pwdtask_idという名前を付けます。
  3. [Default] (デフォルト)コンテキストの下の[Value] (値)フィールドに変数値を入力します。
    • tac_url変数に対しては、Talend Administration Center Web アプリケーションのURL (http://localhost:8080/org.talend.administratorなど)を入力します。
    • tac_user変数に対しては、Talend Administration Center Webアプリケーションの管理者ユーザー名(admin@company.comなど)を入力します。
    • tac_pwd変数に対しては、Talend Administration Center Webアプリケーションの管理者パスワード(adminなど)を入力します。
    • task_id変数については、生成するID (1など)を入力します。
  4. Ctrl + Sを押し、変更内容を保存します。

ルーチンを設定する

MetaServletパラメーターをREST APIに送信できるようにbase64にエンコードするユーザールーチンを定義する必要があります。このルーチンをジョブで呼び出します。

Procedure

  1. [Repository] (リポジトリー)ツリービューで、[Code] (コード)を展開し、[Routines] (ルーチン)を表示します。
  2. [Routines] (ルーチン)を右クリックし、[Create routine] (ルーチンの作成)を選択します。
  3. [New routine] (新規ルーチン)ダイアログボックスが開きます。ルーチンを作成するために必要な情報を入力し、[Finish] (終了)をクリックして次のステップに進みます。

    作成したばかりのルーチンが、[Repository] (リポジトリー)ツリービューの[Routines] (ルーチン)ノードのすぐ下に表示されます。ルーチンエディターが開き、デフォルトでモデルルーチンが示されます。これには、青色の説明文と対応するコードで構成される単純な例が含まれます。

  4. 最初のパッケージルーチンコード行のすぐ後に次のコードを入力します:

    import com.sun.org.apache.xml.internal.security.utils.Base64;

    そのためには、最初の数文字を入力し、[Ctrl] + [Space]を押してテンプレートリストを開きます。次に、com.sun.org.apache.xml.internal.security.utils.*;を選択して、*記号をBase64に置き換えます。

  5. 自分のコードを使って、モデルの最後の部分を変更します。
    public static String base64Encode(String message) {
    
        	return message==null ? null : "" + Base64.encode(message.getBytes()).replace("\n", "");
        }
    public static void main(String[] args) {
        	String tmp = "{\"actionName\":\"runTask\",\"taskId\":\"1\",\"mode\":\"synchronous\",
    \"authPass\":\"talend\",\"authUser\":\"talend@talend.com\"}";
    
        	System.out.println("Base 64: " + base64Encode(tmp));
        }
    }

    これにより、MetaServletアクションのrunTaskをbase64でエンコードできます。

    MetaServletで利用可能なパラメーターとアクションの詳細は、Talend Administration Center MetaServlet API commandsをご覧ください。

MetaServlet REST Webサービスを呼び出すコンポーネントを設定してタスクを実行

Procedure

  1. tSetGlobalVarコンポーネントをダブルクリックし、[Component] (コンポーネント)タブで[Basic settings] (基本設定)ビューを開きます。
  2. [+]ボタンをクリックし、[Variables] (変数)テーブルに行を1行追加します。
    • [Key] (キー)フィールドに、jsonEncodedと入力します。

    • [Value] (値)フィールドに、次の内容を入力します。

      MetaServlet.base64Encode("{\"actionName\":\"runTask\",\"taskId\":\"" + context.task_id + "\",\"mode\"
      :\"synchronous\",\"context\":{\"Default\":\"" + ((String)globalMap.get("tMsgBox_1_RESULT")) + "\"},
      \"authPass\":\"" + context.tac_pwd + "\",\"authUser\":\"" + context.tac_user + "\"}") 

      これは、前に作成したルーチンを呼び出すためです。

  3. tRESTコンポーネントをダブルクリックし、[Basic settings] (基本設定)ビューを開きます。
  4. [URL]フィールドに、起動するWebサービスのURLを入力します。このユースケースでは、次のように入力します。
    context.tac_url + "/metaServlet?" +((String)globalMap.get("jsonEncoded"))

    これは、サービスを呼び出し、MetaServletパラメーターをJSON形式にエンコードするためです。

  5. [HTTP Method] (HTTPメソッド)リストで、GETを選択し、タスクを生成するためのHTTPリクエストを送信します。
    これによってMetaServletは、Talend Administration CenterのREST APIを使い、関連するパラメーターと共に起動されます。
  6. tLogRowコンポーネントの[Basic settings] (基本設定)ビューで、[Basic] (基本)オプションを選択し、[Run] (実行)コンソールに結果を表示します。
  7. ジョブを保存し、F6を押して起動させます。

Results

指定したタスクを実行するためにtRESTコンポーネントからサーバー側にHTTPリクエストが送信されたこと、およびタスクがエラーなしで実行されたことがコンソールに示されています。

ジョブの実行に成功した後のコンソールのスクリーンショット。

Talend Administration CenterJob Conductorページで、タスクのステータスが[Ready to run] (実行可能)になります。

Job Conductorページのスクリーンショット。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。