Skip to main content

Loop Block を知る

学習の目的

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

  • Loop Block とその機能を定義する。
  • キーとマージコードで Loop Block を構成する。
  • DataRaptor 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) という DataRaptor Transform Action が含まれており、アウトプットを JSON フォーマットに変換します。Response Action (5) で JSON データを切り取ります。

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

Integration Procedure のデータフロー

  1. データフローではまず HTTP Action が外部システムから医療サービス提供者データを取得します。
  2. Loop Block が返されたデータ配列の項目を反復処理します。
  3. DataRaptor Transform は、データが目的のロジックに従って変更されたことを保証します。
  4. DataRaptor Transform Action が DataRaptor 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%」と入力します。 

DataRaptor Transform 構成

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

DataRaptor Transform では JSON、XML、および Apex データ型間で中間データ変換を実行し、コード不要で空き時間枠データをマージできます。Robert はコーディングのプロですが、労力をかけずに DataRaptor Transform に大変な作業を任せられるならそれに越したことはありません。 

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

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

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

[FORMULAS (数式)] タブ

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

DataRaptor Transform の [Formulas (数式)] タブ

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

  • 最初の [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 (変換)] タブを調べましょう。

DataRaptor Transform の [Transforms (変換)] タブ

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

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

[Preview (プレビュー)] タブを使用して DataRaptor のアウトプットをテストします。 

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

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

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

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

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

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

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

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

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

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

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

リソース

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる