ルートを作成して外部マップを使用
ルートを作成し、コンポーネントを設定して、外部マップ変数を作成および使用します。
手順
- Integrationパースペクティブで、[Route Designs] (ルートデザイン)ノードを右クリックして、[Create Route] (ルートを作成)をクリックします。
- ルートの名前、目的、説明を入力して[Finish] (完了)をクリックします。
-
次のコンポーネントをデザインワークスペースに追加し、[Row] (行) > [Route] (接続)接続にリンクさせます。
- cTimer
- cProcessor
- cSetBody
- cMap
- cLog
- 2つ目のcProcessor
ルートは次のようになります。 -
1つ目のcProcessorコンポーネントをダブルクリックして、以下のように設定します:
パラメーター 値 Import import java.util.*;
Code Map<String, Object> externalMap = new HashMap<>(); externalMap.put("current.date",TalendDate.getCurrentDate()); Map<String, Object> executionProperties = exchange.getIn().getHeaders(); if (executionProperties==null){ executionProperties = new HashMap<>(); exchange.getIn().setHeaders(executionProperties); } executionProperties.put("org.talend.transform.externalmap", externalMap);
このコードによって、後でマップで使えるcurrent.dateという名前の外部マップ変数を作成できます。
-
cSetBodyコンポーネントをダブルクリックして、以下のように設定します:
パラメーター 値 Language Constant Expression "<orders><order><orderId>abc-6545165186</orderId><shippingDetails><lastName>Kennedy</lastName><firstName>John</firstName><street>Santa Rosa South</street><city>Columbus</city><state>New York</state></shippingDetails><items><item><id>4987601</id><price>649.99</price><quantity>1</quantity></item><item><id>8570817</id><price>99.99</price><quantity>3</quantity></item></items></order></orders>" -
2つ目のcProcessorコンポーネントをダブルクリックして、以下のように設定します:
パラメーター 値 Code Map<String, Object> executionProperties = exchange.getIn().getHeaders(); if (executionProperties==null){ executionProperties = new HashMap<>(); exchange.getIn().setHeaders(executionProperties); } Map<String, Object> externalMap = (Map<String, Object>)executionProperties.get("org.talend.transform.externalmap"); System.out.println("Order ID: " + (String)externalMap.get("order.id")); System.out.println("Order due date: " + (String)externalMap.get("due.date"));
このコードによって、マップで定義するorder.id外部マップ変数とdue.date外部マップ変数を出力できます。