Skip to main content

Loop Block を知る

学習の目的

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

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

前提条件

このモジュールを開始する前に、必須の前提条件を満たしていることを確認してください。十分に準備してこのモジュールを始めるために、推奨の前提条件を満たすことも検討してください。

必須

次のモジュールの修了:

推奨

次のモジュールの修了:

はじめに

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

テクニカルアーキテクトの Robert

Robert はすでに「OmniStudio を使用したガイド付きエクスペリエンスを構築する」トレイルを修了し、このデータツールについては理解しました。さらに高度な機能を学習する準備はできています。高度な機能を使用すれば時間のかかる Apex コードなしでソリューションを構築できます。

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

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

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

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

Robert は調査を始め、Loop Block にたどり着きました。 

対応する情報のフロー図

「Loop Block とは何か? どう構成するのか、このユースケースで Integration Procedure のデータフローのしくみはどうなるのか?」沢山の疑問が湧いてきますが、時間はありません。

Loop Block とは?

Roberts は Loop Block について猛スピードで学び始めました。Loop Block はデータ配列の項目を反復処理し、項目ごとに Loop Block 内のアクションを繰り返します。

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

Roberts はもう Loop Block が大好きになっています。構成方法を学ぶ前に、使用可能なプロパティを把握します。

Loop Block のプロパティ

LoopBlock1 の例のプロパティを見てみましょう。[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 が 1000 回繰り返されると 1000 個のレスポンスが返されます。

空き時間枠の構成

医療サービス提供者の空き時間枠を表示するために 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 UI コンポーネント、すなわち FlexCard または OmniScript に送信します。このレスポンスで Integration Procedure から REST API を呼び出すこともできます。

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

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 の次のタスクは 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) は各提供者の予定枠を記録します。数式は slotsProvider で、[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 を使用して次のアプリケーション要件を実現します。 

リソース

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

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

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