Skip to main content

Loop Block を知る

学習の目的

この単元を完了すると、次のことができるようになります。

  • 管理パッケージ用 Omnistudio で Loop Block とその機能を定義する。
  • キーとマージコードで Loop Block を構成する。
  • Omnistudio Data Mapper Transform を作成して JSON オブジェクト内の特定のデータを検索し、各 JSON ノードにマージする。
メモ

このモジュールでは、管理パッケージランタイムとカスタムオブジェクトを使用する、管理パッケージ用 Omnistudio について説明しています。標準ランタイムでの Omnistudio についての詳細は、Salesforce ヘルプの「Omnistudio」を参照してください。

このバッジを受講すべきかどうかを判断するには、「Which Version of Omnistudio Do You Have? (使用している Omnistudio バージョンを調べる)」を参照してください。

始める前に

このモジュールを受講する前に、以下のコンテンツを修了していることを確認してください。ここでの作業は、そのコンテンツの概念や作業に基づいて行います。

また、次の推奨コンテンツを受講することも検討してください。

高度な機能について学ぼう

これは Robert です。Get Cloudy Consulting のテクニカルアーキテクトで、Omnistudio データツールを使用しています。 

時間のかかる Apex コードなしでソリューションを構築するために使用できる高度な機能を学習する準備はできています。このモジュールでは、Robert がこうした機能について学び、それをいくつかのユースケースに適用するところを見ていきます。

Get Cloudy の医療保険市場の重要な顧客である ClearLight Health から Robert が受け取った要件を最初に確認しましょう。今日のヘルスケア消費者は、すばやく簡単にオンラインで予約可能時間を確認し、診察の予約ができることを求めています。ClearLight では、健康保険プランのメンバーにポータルを提供していますが、ポータルにはオンライン予約機能がありません。Robert がこの機能を構築して ClearLight のメンバーポータルに追加する必要があります。

[Schedule a Provider (かかりつけ医を予約)] 画面では、担当のかかりつけ医には空いている予約時間枠が 5 つあります。 

医療サービス提供者とそれぞれの空き時間枠

Robert は Omnistudio Integration Procedure でアクションとブロックを構成して医療サービス提供者と予約のデータを取得できることを知っています。ただし、使用できるブロックとアクションがわかりません。さらに、Apex コードを使用せずに配列を反復処理して各ノードを変更する方法もわかりません。 

その答えは Loop Block です。

対応する情報のフロー図

このモジュールでは、Loop Block とは何か、その構成方法、このユースケースの Integration Procedure でデータがどのように流れるのかをRobert と一緒に学んでいきます。

Loop Block とは?

Loop Block はデータ配列の項目を反復処理し、項目ごとに Loop Block 内のアクションを繰り返します。

Get Cloudy での Robert の同僚の 1 人が、先月納入したコミュニケーションソリューションで Loop Block を使用したことを教えてくれました。そのチームは 4 つの商品を一度にショッピングカートに入れられるようにするため Loop Block を使用しました。Loop Block がなかったら、Remote Action を別個に 4 回実行して商品を追加する必要がありました。 

Roberts はもう Loop Block が大好きになっています。構成方法を学ぶ前に、この例の Loop Block (LoopBlock1) の使用可能なプロパティを確認しましょう。

Loop Block のプロパティ

  • [Loop List (ループリスト)] (1) で配列が含まれる JSON ノードを受け入れます。
  • [Additional Loop Output (追加ループアウトプット)] (2) を使用して Loop Block にある Action のレスポンスを構成します。指定したキー/値ペアは Integration Procedure の後続ステップで使用できます。
  • [Execution Conditional Formula (実行条件式)] (3) を使用し、true または false を評価する式に基づいていつ Loop Block を実行するかを制御します。

[Additional Loop Output (追加ループアウトプット)] は慎重に使用してください。システムパフォーマンスに影響を与える可能性があります。反復するたびに、要求したデータがレスポンスで返されるからです。たとえば、Loop Block が 1,000 回繰り返されると 1,000 個のレスポンスが返されます。

ユースケースの Loop Block

医療サービス提供者の空き時間枠を表示するために Robert が作成しなければならない Integration Procedure の構造を確認しましょう。 

Integration Procedure の構造

この例の Integration Procedure には 2 つの HTTP Action が含まれています。HTTPActionGetCareProviders は医療サービス提供者データを取得し (1)、HTTPActionGetTimeslots は医療サービス提供者の対応可能な空き時間のデータを取得します (2)。

LoopBlockProviders Loop Block (3) には SlotsForOneProviderTest (4) という Data Mapper Transform Action が含まれており、アウトプットを JSON フォーマットに変換します。Response Action (5) で JSON データを切り取ります。

この Integration Procedure のデータフローがどうなるか見てみましょう。 

Integration Procedure のデータフロー

  1. データフローではまず HTTP Action が外部システムから医療サービス提供者のデータを取得します。
  2. Loop Block が返されたデータ配列の項目を反復処理します。
  3. Data Mapper Transform は、データがソリューションの要件を満たすように変更されたことを保証します。
  4. Data Mapper Transform Action が Data Mapper Transform を呼び出します。
  5. Response Action が変換ロジックに従って結果を絞り込みます。
  6. Response Action がデータを Omnistudio Flexcard または Omniscript に送信します。このレスポンスで Integration Procedure から REST API を呼び出すこともできます。

構造の部分を詳しく見ていきましょう。

メモ

このモジュールでは、受講者が管理パッケージ用 Omnistudio 開発者で、ここに記載の操作を実行する適切な権限を有すると想定しています。ただし、そうでなくても大丈夫です。このまま読み進み、本番組織で開発者がどのような手順を実行するのか確認します。Trailhead Playground で次の手順を実行しないでください。Trailhead Playground では管理パッケージ用 Omnistudio を使用できません。

医療サービス提供者データを取得する

Integration Procedure には 2 つの HTTP Action が必要です。最初の HTTP Action で医療サービス提供者データを取得します。

医療サービス提供者データを取得する HTTP Action

このアクションを作成するには、HTTP Action (1) を [Structure (構造)] パネルにドラッグします。

HTTP メソッド (GET、PUT、POST、DELETE など) を選択します。この場合、HTTP Path から医療サービス提供者に関連するデータを取得する必要があるため、[HTTP Path (HTTP パス)] 項目 (2) に URL を入力します。次に、[HTTP Method (HTTP メソッド)] (3) に「GET」を設定します。

空き時間枠データを取得する

2 つ目の HTTP Action で空き時間枠に関連するデータを取得します。 

空き時間枠データを取得する HTTP Action

このアクションを作成するには、もう 1 つの HTTP Action (1) を [Structure (構造)] パネルにドラッグします。外部システムの [HTTP Path (HTTP パス)] (2) を入力し、[HTTP Method (HTTP メソッド)] (3) を指定します。 

Loop Block を構成する

医療サービス提供者と空き時間枠に関するデータをアウトプットでマージするため、Robert は Loop Block の構成を開始します。 

[Loop List (ループリスト)] と [Additional Loop Output (追加ループアウトプット)] が構成された Loop Block

Loop Block を構成するには、Loop Block (1) を [Structure (構造)] パネルにドラッグします。

[Loop List (ループリスト)] の値 (2)を HTTPActionGetCareProviders:careProviders に設定します。これで各医療サービス提供者のリストが作成されます。[Additional Loop Output (追加ループアウトプット)] (3) にキーとして careProviders、マージコード値として %SlotsForOneProviderTest% と入力します。 

Data Mapper Transform 構成

Robert の次のタスクは Omnistudio Data Mapper Transform を作成することです。なぜでしょうか?

Data Mapper Transform では JSON、XML、および Apex データ型間で中間データ変換を実行し、コード不要で空き時間枠データをマージできます。

Robert はコーディングのプロですが、労力をかけずに Data Mapper Transform に大変な作業を任せられるならそれに越したことはありません。 

新規 Data Mapper を作成

Data Mapper Transform を作成するには、Data Mapper Transform Action コンポーネントを [Structure (構造)] パネルから Loop Block にドラッグし、[Element Name (要素名)] (1) を指定します。[Data Mapper Interface (Data Mapper インターフェース)] で、ドロップダウンリストから [+ Create New Data Mapper (+ 新規 Data Mapper を作成)] (2) を選択します。

この場合、Data Mapper Transform で JSON オブジェクト内の医療サービス提供者ごとに時間枠を検索し、空き時間枠をそれぞれの医療サービス提供者 JSON ノードにマージする必要があります。 

次は [Formulas (数式)] タブ、[Transforms (変換)] タブ、[Preview (プレビュー)] タブを理解しましょう。 

[FORMULAS (数式)] タブ

Data Mapper では、[Formulas (数式)] タブを使用して、アウトプット用にデータの追加や操作を行います。 

Data Mapper Transform の [Formulas (数式)] タブ

[Formula(数式)] 項目に目的のロジックを追加し、[Formula Result Path (数式結果パス)] 項目に数式の結果を保存する JSON ノードを指定します。この例では、3 つの数式を作成して目的の Data Mapper アウトプットを構成します。 

  • 最初の [Formula(数式)] (1) は careProviders:careProviderId で [Formula Result Path (数式結果パス)] は careProviderId です。
  • 2 つ目の [Formula(数式)] (2) は各 careProviderId の空き時間枠値を検索します。数式は VALUELOOKUP (Slots, careProviderId) で [Formula Result Path (数式結果パス)] は slotsProvider です。
  • 3 つ目の [Formula(数式)] (3) は各提供者の予定枠を記録します。数式は slotsProviderr で、[Formula Result Path (数式結果パス)] は careProvider:timings です。

[Transforms (変換)] タブ

次は [Transforms (変換)] タブを調べましょう。

Data Mapper Transform の [Transforms (変換)] タブ

インプット JSON とアウトプット JSON のパスを使用してデータをマッピングします。

[Input JSON Path (インプット JSON パス)] 項目 (2) にインプットパスを指定します。[Output JSON Path (アウトプット JSON パス)] 項目 (3) にアウトプットパスを追加します。この例ではインプットパスとアウトプットパスの両方に careProviders を使用しています。 

[Preview (プレビュー)] タブ

[Preview (プレビュー)] タブでは、Data Mapper 出力をテストします。 

[Input (インプット)] ペイン (1) にサンプルインプットを貼り付け、[Execute (実行)] を選択します。[Response (レスポンス)] ペイン (2) に絞り込まれた結果が表示され、医療サービス提供者のデータとその対応可能な空き時間枠が含まれています。空き時間枠と関連する Care Provider Id を含む配列の並びを確認できます。 

Data Mapper Transform の準備ができたところで、Integration Procedure に追加します。 

新規 Data Mapper を作成

Integration Procedure で Data Mapper Transform Action (1) を選択します。[Data Mapper Interface (Data Mapper インターフェース)] 項目で、ドロップダウンリストから [VLKUP2_ProviderSlots] (2) を選択します。

次に、Response Action を [Structure (構造)] パネルにドラッグします。 

[Response Format (レスポンスフォーマット)] が JSON の Response Action

Response Action (1) を使用して、Data Mapper Transform から JSON フォーマットで返されたデータを送信します。[Response Format (レスポンスフォーマット)] (2) に、適切なフォーマット (この場合は JSON) を入力します。 

結果をプレビューします。 

[Response (レスポンス)] が表示されている [Preview (プレビュー)] タブ

[Preview (プレビュー)] タブ (1) に移動し、[Execute (実行)] (2) をクリックします。[Response (レスポンス)] セクション (3) に、提供者配列が医療サービス提供者 ID と共に表示されます。 

Loop Block と Data Mapper Transforms のしくみがわかって、この先の道筋が見えてきました。続けて ClearLight メンバーポータルに空き時間枠機能を実装します。 

ただし、Robert の作業には終わりはありません。List Action を使用して次のアプリケーション要件を実現します。

次の単元では List Action について学習します。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む