OmniStudioとは何ですか？

[OmniStudioに戻る](https://qiita.com/Keiji_otsubo/items/c1e3b177c56e87ff41f7)



# OmniStudioとは何ですか？

+ [Vlocity と Salesforce Industries: 知っておくべきことすべて](https://dazeworks.com/blog/vlocity-and-salesforce-industries/)

OmniStudio はモジュール式システムを反映しており、Salesforce 内で再利用可能な業界固有のソリューションを設計するのに役立ちます。その結果、時間を大幅に節約しながら、重要で複雑なプロセスを構築できます。これを可能にするコンポーネントには次のようなものがあります。

1. OmniScripts:複雑な販売およびサービスのプロセスをユーザーにガイドする説明ツールです。さらに、ドラッグ アンド ドロップ機能を使用すると、要素を使用してシーケンスをキュレーションすることで顧客との対話をデザインできます。
+ 画面 
+ 行動
+ 機能 
+ 入力
+ グループ 

2\. フレックス カード:フレックス カードは、さまざまなソースからコンテキスト データを収集し、ユーザーがどのデバイスからでも表示できるように表示します。すべてはクリックベースのコンポーネントを通じてスムーズに設定されます。 

3\. OmniStudio DataRaptors: DataRaptors を使用すると、データを簡単に操作できます。たとえば、新しいデータを変更、送信、保存したい場合は、この機能を使用できます。OmniStudio 統合手順を使用して、Salesforce オブジェクトやその他の外部ソースからデータにアクセスし、変換します。

4\. OmniStudio 統合手順 (IP): IP はクリックベースのプロセスであり、ユーザーの操作なしでサードパーティのサービスから情報を取得するために使用されます。さらに、サーバー側の処理により、サーバー/クライアントの呼び出しが軽減され、パフォーマンスが向上します。 

**デジタルエクスペリエンス層**

デジタル エクスペリエンス層には、2 つの主要なユーザー インターフェイス (UI) コンポーネントが含まれています。 

+ **OmniStudio FlexCards:FlexCard** は、基本情報を一目で要約し、オンデマンドで詳細情報を表示し、コンテキストに関連した一般的なタスクへの迅速なアクセスを提供します。たとえば、コールセンターのシナリオでは、コールセンターのエージェントが電話で顧客と対話するときに、エージェントは顧客の情報を表示し、通話中に FlexCard からガイド付きプロセスを開始します。

OmniStudio インタラクション コンソールには、顧客のアカウントと情報の全体的なビューが表示されます。FlexCard は、これらの 360° ビューのコンポーネントです。コンソール自体は Salesforce Lightning コンソールです。

+ **OmniScripts**:ビジネス プロセスを完了するためのガイド付きパス

これらの宣言型ツールは、簡単に理解できる豊富なユーザー対話エクスペリエンスを提供します。これらは Salesforce Lightning Web コンポーネント (LWC) 上に構築されており、Salesforce 内で実行され、UI のパフォーマンスが向上します。 

有効化すると、FlexCard と OmniScript は Lightning Web コンポーネントになります。この UI テクノロジーのおかげで、ユーザーは FlexCard 上のアクションをクリックすると、LWC 対応の OmniScript をフライアウトとして起動して追加情報を表示できます。 

LWC 対応の OmniScript に FlexCard を埋め込むこともできます。埋め込み FlexCard は、LWC 対応の OmniScript からデータを受信し、FlexCard で使用可能なアクションを実行します。

**サービス管理層**

サービス管理レイヤーには、Salesforce 内外のデータの読み取り、書き込み、変換、計算、追跡を行うデータ サービスが含まれています。 

+ **OmniStudio DataRaptors**:データの取得、変換、更新のための構成可能なサービス

DataRaptor は、Salesforce データの読み取り、変換、書き込みを可能にするマッピング ツールです。DataRaptor には、Turbo Extract、Extract、Load、Transform の 4 つのタイプがあります

||DataRaptor Type|
|:--------------------------------|:----------------------|
|単一の Salesforce オブジェクトからデータを取得する |DataRaptor Turbo Extract|
|1 つ以上の Salesforce オブジェクトからデータを取得する|DataRaptor Extract|
|データを 1 つ以上の Salesforce オブジェクトに保存する|DataRaptor Load|
|Salesforce 内外からのデータを操作する|DataRaptor Transform|


作成または更新: DataRaptor のロードはどのように決定されるのでしょうか?
DataRaptor Load は、既存のデータを上書きするか、データがまだ存在しない場合は新しいレコードも作成することにより、Salesforce のレコードへの更新を保存します。レコードを更新または挿入するこのプロセスをupsertと呼びます。 

チェックボックスを選択すると、DataRaptor フィールド マッピングの任意のフィールドを Upsert キー (1) として指定できます。これは、Salesforce 内の固有のレコードと一致する必要があることを意味します。 

DataRaptor の命名規則は lowerCamelCase である必要があります。

+ **OmniStudio Integration Procedures**: 1 回のサーバー呼び出しで複数のアクションを実行する宣言的なサーバー側プロセス

DataRaptor とIntegration Proceduresは、UI コンポーネントとの間でデータをやり取りします。これらは、Apex クラス、計算エンジン、外部アプリケーション プログラミング インターフェイス (API) への呼び出しを調整し、プロセスで必要なビジネス ロジックを実行します。統合プロシージャはバックグラウンドでデータを取得、保存、操作する方法です

利点

+ ほとんどの場合、サーバーはクライアントよりもデータの処理が速いため、サーバー側の処理によりパフォーマンスが向上します。
+ 単一のサーバー呼び出しで複数のアクションを組み合わせると、サーバーへのラウンドトリップが防止されます。
+ ラウンドトリップが増えるとパフォーマンスが低下するため、クライアント/サーバー呼び出しを最小限に抑えることは有益です。

統合プロシージャ要素は、グループまたはアクションのいずれかです。 

グループ
**キャッシュブロック**
+ ステップ内のステップの出力をセッションまたは組織のキャッシュに保存し、すぐに取得できるようにします。
+ 頻繁にアクセスされ、頻繁に更新されないデータを保存することで、データベースへのラウンドトリップが節約され、パフォーマンスが向上します。
+ キャッシュせずにデータを更新できる
+ 異なるキャッシュされたデータを異なるタイミングで期限切れにすることができます


**条件付きブロック(これは最も基本的なブロック タイプです。)**
+ 指定された条件が true の場合に実行するか、その条件内のステップを一連の相互排他的な代替として処理します。
+ OmniScript の条件付きビューのように機能する分岐ワークフローをサポートします。

価格と州コードに基づいて、統合プロシージャは消費税を計算し、合計価格を報告します。 

**ループブロック**
+ データ配列内の項目を反復処理し、項目ごとに個別の Action 要素を必要とするのではなく、その中のアクションを項目ごとに繰り返すことができるようにします。

ユーザーがカートに製品を追加するシナリオでは、ループ ブロック内の 1 つのリモート アクションで 4 つの製品すべてを追加できます。ループ ブロックがなければ、カートに 4 つの製品を追加するには、4 つの別々のリモート アクションを実行する必要があります。

**トライキャッチブロック**
+ ブロック内のステップの実行を「試行」し、ステップが失敗した場合にエラーを「キャッチ」できます。
+ 指定された出力を返すか、Apex クラス内のステップが失敗した場合は Apex クラスを呼び出します。


統合プロシージャは、指定された LastName を持つ連絡先を作成および削除し、LastName フィールドが空白の場合はエラー メッセージを返します。

ブロックを他のブロック内にネストできます。たとえば、Try Catch ブロックまたは Cache ブロック内に Loop ブロックをネストできます。

すべてのブロックには、実行条件式という共通のプロパティがあります。 

この式が true と評価されるか、定義されていない場合、ブロックが実行されます。
false と評価された場合、ブロックはスキップされます。

**Action 要素**
Action 要素とは何なのかを見てみましょう。

アクション要素は、あらゆる統合手順の重要な構成要素です。これらのアクションでは、データ値の設定、関数の実行、DataRaptor の呼び出し、Apex クラスの呼び出し、メールの送信、REST エンドポイントの呼び出し、他の統合プロシージャの実行などが可能です。

ブロックを使用して、条件付き実行、キャッシュ、リスト処理、エラー処理のアクションをグループ化することもできます。


**開発者エクスペリエンス層**

開発者エクスペリエンス層は、開発者が環境間で OmniStudio コンポーネントの変更を管理および移動するためのツールのアプリケーション ライフサイクル層です。これらの開発者ツールは次のとおりです。



+ IDX Build Tool: OmniStudio Datapack をソース管理しやすい形式でパッケージ化して移行するコマンドライン自動化ツール
+ IDX Workbench:開発者がデータパックと Salesforce メタデータをある組織から別の組織に、または組織から Git リポジトリに移行できるようにするデスクトップ アプリケーション

単純な移行の場合、開発者はコンポーネントをデータパックとしてエクスポートおよびインポートできます。これは、エクスポートおよびインポートの目的で一緒にパッケージ化された OmniStudio コンポーネントのコレクションです。たとえば、開発者は、特定の統合手順を使用して FlexCard をエクスポートおよびインポートできます。  

大規模または複雑な移行の場合、開発者は IDX Build Tool または IDX Workbench を使用します。

IDX ビルド ツールは、依存関係を保存し、データを検証し、移行の成功を検証します。 

IDX ワークベンチには、ユーザーがテスト手順を実行し、段階的なパフォーマンスのガント チャートを表示できるテスト コンソールが含まれています。テストプロシージャは、DataRaptor、計算マトリックス、Apex クラス、さらには別の統合プロシージャなど、統合プロシージャが呼び出すことができるほぼすべての単体テストを実行する統合プロシージャです。


# OmniStudio ツールの連携動作

顧客がコールセンターに電話して、住所の詳細を更新し、他のアカウントの詳細を確認したとします。

コンピュータ テレフォニー インテグレーション (CTI) 画面を介して、コール センター エージェントは、発信者とそのアカウントに関する情報を表示するコンソール ページを起動します。このページには、特定のコンテキストに関連する情報とアクションを表示し、複数のソースから受信したデータをレンダリングする一連のFlexCardが表示されます。データの一部は Salesforce データベースからの内部データであり、一部は外部システム (請求システムなど) からのものです。 

FlexCard に接続されている統合プロシージャ(次の図では「IP」と省略) は、請求システムへの API 呼び出しを行い、そのデータを取得して「請求データ」FlexCard に表示します。一方、別の統合プロシージャは天気予報 Web サイトへの API 呼び出しを実行し、顧客の場所の 現在の気温(54°F または 11°C)を表示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/41362fbb-5a7d-2fb9-6e04-82d083e6ef79.png)


各 FlexCard には、そのデータに関連するさまざまなアクションがあります。それらのアクションの 1 つは、顧客の住所 (現在は1234 Main St. Any City, State 01234 )を更新するプロセスを開始することです。このアクションをクリックすると、アドレスを変更するための手順とガイドラインが記載されたモーダル ページが開きます。これはオムニスクリプトです。住所詳細のほとんどは、DataRaptor Extract が Salesforce Account オブジェクトからこのデータを取得することにより、事前に入力されています。エージェントが住所を456 Second Street, Any City, State 01236に変更し、ガイド付きプロセスを完了すると、DataRaptor Loadによって変更されたデータが Account オブジェクトに保存されます。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/1ebfe981-7585-742d-48bb-3685435bcb73.png)


住所が変更されると、新しい住所が FlexCard に表示され、天気予報情報が発信者の新しい場所に適応します。発信者の所在地の気温は現在59°F (15°C)です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/98c8860c-2298-5002-6aab-46184095d210.png)


# ビジネスルールエンジンを備えた Developer Edition 組織にサインアップする

https://trailhead.salesforce.com/content/learn/modules/business-rules-engine/get-to-know-business-rules-engine?trailmix_creator_id=strailhead&trailmix_slug=prepare-for-your-salesforce-omni-studio-developer-credential

https://trailhead.salesforce.com/promo/orgs/business-rules-engine


# OmniStudio メタデータ移行ツールの紹介

+ IDX Workbench は、開発者が OmniStudio DataPack と Salesforce メタデータをある環境から別の環境 (組織から別の組織へ、または組織から Git リポジトリへ) に移行するために使用するデスクトップ アプリケーションです。 

+ IDX Build Tool は、 UI を使用せずに IDX Workbench のすべての機能を実行するコマンドライン ツールです。Jenkins などの環境で自動化を使用している開発者は、UI ベースのアプリケーションよりも構成が容易なコマンドライン ツールを好む場合があります。

+ OmniStudio データパック
OmniStudio では、メタデータの移行は DataPack を使用して行われます。

DataPack は、ある環境から別の環境へのデータ移行に必要なコンポーネントと関連機能のコレクションです。DataPack は、メタデータを JSON 形式で保持するファイルです。通常、展開中に DataPack を使用して、アプリケーションのコンポーネントと機能を開発環境から運用環境に移動します。

簡単な移行を実行するには、OmniStudio コンポーネントを DataPack としてエクスポートします。たとえば、特定の統合手順を含む OmniStudio FlexCard を本番組織にエクスポートするには、エクスポートオプションを使用します。

FlexCard とそれに関連する統合プロシージャをエクスポートする場合、それらを JSON ファイルとして DataPack に保存します。必要に応じて、この JSON ファイルを使用してコンポーネントを他の組織に移動します。

+ OmniStudio プロジェクト エクスプローラーの紹介
OmniStudio Project Explorer は、IDX Workbench を使用してグループとして組織間でコンポーネントを移行できるように、プロジェクトにコンポーネントを追加するために使用する Chrome ブラウザ拡張機能です。Project Explorer は、すべての Salesforce Industries コンポーネントと一部の Salesforce メタデータをサポートします。 

OmniStudio Project Explorer は、OmniStudio Foundations パッケージを使用する組織ではまだ使用できません。