マッパー
「マッパー」操作は、各種操作の出力を組み合わせて、出力のオブジェクト、コレクション、配列、文字列を必要に応じて再構築することによって、カスタム出力を作成します。出力に対して各種関数を実行することもできます。この操作を使用することで、複数の操作から特定のフィールドの値や出力を取得して組み合わせるために、複雑な Node.js コードを記述する必要がなくなります。マッパーは、以下の操作に役立つさまざまなモジュール式機能を提供します。
• 出力の結合
• オブジェクト、配列、文字列、コレクションの繰り返し
• 値の操作とテスト
「マッパー」操作の使用
ワークフローでこの操作を使用するには、ThingWorx Flow にこれを接続します。フローに接続するには、次の操作を行います。
1. をクリックし、
「開発者ツール」ユーティリティの下の
「マッパー」操作をキャンバスにドラッグし、この操作にマウスポインタを合わせて
をクリックするか、この操作をダブルクリックします。「マッパー」操作ウィンドウが開きます。
2. 必要に応じて、「ラベル」名を編集します。デフォルトでは、ラベル名は操作名と同じです。
3. をクリックし、キーと値の新しいペアを作成します。
a. キーフィールドの名前を変更し、値を入力します。以前の操作の出力を、値フィールドへの入力としてマッピングできます。
b. 指定した入力に関数を追加するには、</> をクリックします。
キーと値の複数のペアを追加するには、
をクリックします。
4. 「完了」をクリックします。
マッパーのデータタイプ
マッパーは、配列、コレクション、オブジェクト、文字列データタイプを入力値としてとります。
• 配列 - 指定したキーが配列を返す場合に使用されます。配列をデータタイプとして設定するには、
をクリックし、リストから「配列」を選択します。</> をクリックすることで、配列に関数を適用できます。
• コレクション - このデータタイプは、指定したキーがオブジェクトの配列を返す場合に使用されます。前の操作からのコレクションを値フィールドにコレクションキーとして直接マッピングするか、キーと値のペアを別個にコレクションキーの下に追加できます。
コレクションをデータタイプとして設定するには、
をクリックし、リストから「コレクション」を選択します。</> をクリックすることで、コレクションに関数を適用できます。
• オブジェクト - 指定したキーがオブジェクトを返す場合に使用されます。前の操作からのオブジェクトを値フィールドにオブジェクトキーとして直接マッピングするか、キーと値のペアを別個にオブジェクトキーの下に追加できます。
オブジェクトをデータタイプとして設定するには、
をクリックし、リストから「オブジェクト」を選択します。ここで、オブジェクトの名前を指定し、「キー」フィールドの横の「+」リンクをクリックして、キーと値のペアを追加する必要があります。この後、これらの各プロパティに任意のデータタイプを選択できます。
関数を適用するときに使用可能なコンソール (</>) リンクは、「オブジェクト名」フィールドの横と、そのオブジェクトの各「プロパティ名」フィールドの横にあります。
• 文字列 - 指定したキーが文字列値を返す場合に使用されます。デフォルトでは、キーと値のすべてのペアが文字列データタイプです。</> をクリックすることで、文字列に関数を適用できます。
マッパーでの組み込み関数の使用
マッパーでは、前の操作の出力に対して各種関数を実行できます。この操作では、ユーザーが使用可能な多数の事前組み込み関数 ('lodash' ライブラリから取得) が提供されます。ユーザーが独自のカスタム関数を記述することもできます。
• 配列関数:
◦ _.difference - 指定された数の配列から、1 つ目の配列にしかない値から成る配列を返します。
詳細を表示 ◦ _.intersection - 指定されたすべての配列に共通する値から成る配列を返します。
詳細を表示 • オブジェクト関数
◦ _.pick - 指定されたオブジェクトプロパティと一致するエレメントを持つオブジェクトを返します。
詳細を表示 • 文字列関数
◦ _.capitalize - 文字列の 1 つ目の文字を大文字に変更し、その他の文字を小文字に変更します。
詳細を表示 ◦ _.replace - 指定された条件と一致する文字列を特定の文字列に置き換えます。
詳細を表示 ◦ _.escape - 文字列内の &、<、>、'、" 文字をそれに対応する HTML エンティティに変換します。
詳細を表示 ◦ _.trim - 指定された文字列から先頭と末尾の空白および指定された文字を除去します。
詳細を表示 ◦ _.unescape - 指定された文字列内の HTML エンティティ &、<、>、"、'、` をそれに対応する文字に変換します。
詳細を表示 • 数値関数
• コレクション関数
◦ _filter: - 指定されたフィルタ条件を満たすエレメントから成る配列を返します。
詳細を表示 例: マッパーでの組み込み関数の使用
与えられた複数の配列から 1 つの配列に一意の値を読み込むとします。このためには、「配列操作」操作を使用して、(いくつかの共通の値が含まれている) 2 つの配列を連結します。この後、マッパーでの出力を使用して、_.uniq 関数を実行することで、重複する値を除外します。
1. 「配列操作」、「マッパー」、および「電子メールを送信」操作をキャンバスに追加し、これらを以下に示すように接続します。
2. 「配列操作」操作を以下のように設定します。
◦ 「配列操作の選択」 - リストから「連結」を選択します。
◦ ソース配列 1 - 連結する 1 つ目の配列を入力します。
◦ ソース配列 2 - 連結する 2 つ目の配列を入力します。
さらに配列を追加するには、「追加」をクリックします。
意図的に、両方の配列で 'R2-D2' と 'Han' を使用しています。これにより、反復する値を含む配列が作成されます。「完了」をクリックします。キャンバスに戻ります。
3. 「マッパー」操作を以下のように設定します。
◦ キー 1 - キーの名前を入力します。
◦ をクリックして配列データタイプを選択し、
をクリックして関数を追加します。
◦ をクリックしてから、
をクリックして、「配列操作」操作の出力をコンソールウィンドウへの入力として追加します。
◦ 「関数」をクリックし、重複する値を配列から除去する _.uniq 関数を選択します。
◦ 「保存」をクリックします。「Custom Function」タブが「値」フィールドに入力として追加されます。
4. 「電子メールを送信」操作を以下のように設定します。
◦ 「送信先」 - 受信者の電子メール ID を入力します。
◦ 「件名」 - 電子メールの件名を入力します。
◦ 「本文タイプ」 - 電子メールの本文タイプとして「テキスト」を選択します。
◦ 「本文」 - このフィールドの入力として、コンフィギュレーションウィンドウの右側に表示されている「マッパー」操作の出力を追加します。
5. 「完了」をクリックし、ワークフローを実行します。与えられた複数の配列から 1 つの配列に一意の値が読み込まれ、指定した受信者に送信されます。
マッパーでのカスタム関数の追加
「マッパー」操作では、指定した入力値に対して操作を実行するカスタム関数を記述することもできます。カスタム関数については以下の例を参照してください。
例
前の例からの続きです。前の手順で実装した _.uniq 関数の出力に対してカスタム関数を適用するとします。
1. 既存のコードに以下の図に示すような変更を加えます。
2. コンソールでカスタム関数を追加した後、「保存」をクリックしてから、このワークフローを実行します。
| 指定した入力に実装可能なカスタム関数だけを記述することもできます。 |
出力スキーマ
「マッパー」操作は、入力したキーと値のペアに応じて出力スキーマを返します。以下の図に示すサンプル出力スキーマを参照してください。