【Salesforce】OmniStudioについて

# OmniStudio
OmniStudioは、Salesforceが提供するエンドツーエンドのワークフロープラットフォームの１つです。
OmniStudioを使うと、ガイド付きプロセスの実装や演算処理を伴う実装がより簡単に行えるようになります。
主な機能は、３つのレイヤ（デジタルエクスペリエンスレイヤ、サービス管理レイヤ、開発者エクスペリエンスレイヤ）に分けることができます。

### デジタルエクスペリエンスレイヤ
デジタルエクスペリエンスレイヤには、2種類のUIコンポーネントが存在します。
|名称  |説明  |
|---|---|
|OmniScript | ドラッグ&ドロップなどによる簡単な操作で、ビジネスプロセスを実装できます。<br>また、ガイド付きプロセスの実装も行うことができます。|
|FlexCards |UIコンポーネントを構成します。<br>親子関係による拡張やフライアウトの利用など、拡張性に優れています。  |

### サービス管理レイヤ
サービス管理レイヤには、Salesforce内外からのデータの取得、書き込み、変換、計算、追跡を行うデータサービスが含まれます。
|名称  |説明  |
|---|---|
|DataRaptor | Salesforceの中から情報を取得したり、取得した情報を変換したりできます。 |
|Integration Procedure | 外部ソースの情報も含めた情報の取得を行える他、処理をまとめることもできます。 |

### 開発者エクスペリエンスレイヤ
開発者エクスペリエンスレイヤには、開発者がOmniScriptのコンポーネントの変更を管理したり、他の環境に移行するツールが含まれます。
|名称  |説明  |
|---|---|
|IDX Workbench | ソース管理経由で簡単にアップデートを共有し、Dev Opsをシンプル化します。 |

その他、Interaction ConsoleやOmni Analytics、Project Exploreなどがあります。
これらの機能を組み合わせることで、様々なデータソースから情報を取得し、ユーザにエクスペリエンスを提供することができます。
詳細は、下記のTrailheadをご覧ください。

## OmniScript
ドラッグ＆ドロップのノーコード開発により、動的なマルチステップのフォームなどを実装できます。
また、実装したUIを様々なチャンネルやデバイスに展開できます。

特徴としては、下記が挙げられます。
+ 標準部品の利用をすることで、ローコード/ノーコードで業務プロセスに応じた画面とパスが作成できます。
+ OmniScriptを任意のデバイスやチャンネルでリリースできます。
+ モジュール形式のアーキテクチャのため、再利用が可能です。
+ 複数のデータソースからデータの表示が可能です。
+ OmniScriptを使用して、署名付きドキュメント（DocuSign）を管理できます。
+ OmniScript アクションを利用することで、Integration ProcedureやDataRaptor、Calculation Procedureなどのその他の機能を呼び出すことができる。

OmniScriptの詳細につきましては、下記にまとめました。
[【Salesforce】OmniScriptについて](https://qiita.com/fe_su/items/4bdb899e86c6dc4571ee)


## FlexCards
ドラッグ&ドロップによるノーコード開発により、豊富なデータソースを利用して、顧客中心のUIを構築します。

主な機能として、下記が挙げられます。
+ 集約された情報とアクションをわかりやすく一括表示します。
+ 複数のソースから取得されたデータの集約・表示します。
+ より多彩なデザイン設計が可能です。
+ あらゆるデバイスやチャンネルでの表示が可能です。

FlexCardの詳細につきましては、下記にまとめました。
[【Salesforce】FlexCardについて](https://qiita.com/fe_su/items/1fa4a004331050cdf2e4)

## DataRaptor
SalesforceからOmni Script / Flex Card / Integration Procedureの各機能にデータを提供し、各機能からSalesforceに更新情報を書き戻すデータハブとしての機能を担います。

DataRaptorは4種類あり、それぞれ機能が異なります。

### DataRaptor Turbo Extract
1つのSalesforceオブジェクトからデータを取得できます。
設定が容易で、処理速度が速いことがメリットになります。
後で記載しようと思いますが、Integration Procedureと組み合わせて使うことで、処理を高速化しつつ、ガバナ制限に対応することができます。

### DataRaptor Extract
複数のSalesforceオブジェクトからデータを取得できます。
また、出力データのマッピングなど高度な設定を求められる場合にも対応できます。
ただし、DataRaptor Turbo Extractに比べると処理速度が遅いというデメリットがあります。

### DataRaptor Load
Salesforceに情報を書き込むためのDataRaptorです。
また、CSVデータをSalesforceに取り込むこともできます。
情報を書き込む際に重複データを作らせない設定として、［Upsert Key］や［Is Required For Upsert］というプロパティを設定できます。

### DataRaptor Transform
受け取ったJSONを指定するフォーマットに変換します。
また、PDFにデータを入力したり、DocuSignテンプレートに値を入力できます。

※Omni Studioでは、データをJSONで受け渡しします。
JSONはネストすることもあり、そのままではデータを使用しづらいことがあります。
そのため、DataRaptor TransformはJSON形式で受け取ったデータをXML形式に変換します。
（XMLからJSONへの変換も行えます。）

## Integration Procedure
1回のサーバーコールで、複数の処理を実行できます。
また、ガバナ制限への対策なども含めた、性能を高めるための機能も提供しています。

主な機能として、下記が挙げられます。
+ Salesforce内だけでなく、外部からもデータを取得できる。
+ バッチ処理を作成できる。（スケジュール実行できます）
+ 複数のDataRaptorやCalculation Procedureを組み合わせ、高度な処理を行うことができます。

Integration Procedureの詳細につきましては、下記にまとめました。
[【Salesforce】Integration Procedureについて](https://qiita.com/fe_su/items/c030dfe5e4b9db74a77e)

## Calculation Procedure
複数の演算と変換を同時に実行できます。
JSONデータ形式の入力を受け取り、ルックアップマトリックス、代数演算、集計演算を使用して計算が可能です。

主な機能として、下記が挙げられます。
+ 処理は、サーバー側で実行されます。また、時間ベースで実行されます。
+ バージョン管理でき、優先度に応じて実行する処理を指定することができます。
+ Calculation Matrixと連動する。
+ 繰り返しの処理を実行できる。（Indexも利用可能です）

※優先度は1が最も低く、10が最も高くなります。
実行されるバージョンは、下記の条件で決まります。
・処理実行時間が、開始日時～終了日時の間にある
・優先度が高い

## Calculation Matrix
ルックアップテーブルであり、テーブルの中でInputに対するOutputを表示します。
テーブルの列は、**Input Data**と**Output Data**に分かれています。
Input Dataの列にある入力値をもとに、計算された値がOutput Dataのそれぞれの列に表示されます。

また、テーブルには下記の3つの機能があります。
+ 検索（Search Column）
+ CSVのダウンロード
+ JSONの更新

3種類のCalculation Matrixを、使用したいケースにあわせて使い分けます。

+ Standard Calculation Matrix<br>標準で使用します。

+ Grouped Calculation Matrix<br>入力ヘッダーや出力ヘッダーをグループ化したい時に使用します。

+ Row-Versioned Calculation Matrix<br>データ量が多すぎて、絞り込みがしたい時などに使用します。

※それぞれ作成方法が異なります。
詳しくは、下記のSalesforce Helpを参考にしてください。

[Ways to Create a Standard Calculation Matrix](https://help.salesforce.com/s/articleView?id=sf.os_ways_to_create_a_standard_calculation_matrix.htm&type=5 "Ways to Create a Standard Calculation Matrix")

[Create a Grouped Calculation Matrix](https://help.salesforce.com/s/articleView?id=sf.os_create_a_grouped_calculation_matrix.htm&type=5 "Create a Grouped Calculation Matrix")


[Create a Row Versioned Calculation Matrix](https://help.salesforce.com/s/articleView?id=sf.os_create_a_row_versioned_calculation_matrix.htm&type=5 "Create a Row Versioned Calculation Matrix")


## OmniStudio開発者ツール
OmniStudio開発者ツールには、主に下記の2種類があります。

+ IDX Workbench（デスクトップアプリケーション）
+ IDX Build Tool（コマンドラインツール）

上記ツールを使用する利点は、下記になります。

+ より高速に移行できる
+ データの依存関係を保持できる
+ 設定を簡素化できる
+ データ検証をサポートしている

また、メタデータを移行する際はData Packと呼ばれる、データの移行に必要なコンポーネントと関連機能のコレクションを使用します。

※IDX Build Toolを使用する際は、node.jsが必要です。

# 関連するTrailhead
[OmniStudio について知る](https://trailhead.salesforce.com/ja/content/learn/trails/get-to-know-omnistudio "OmniStudio について知る")

[OmniStudio 開発者ツール](https://trailhead.salesforce.com/ja/content/learn/modules/omnistudio-developer-tools "OmniStudio 開発者ツール")


# 資格試験について
OmniStduioの試験は、OmniStudioコンサルタントとOmniStudioディベロッパーの2種類があります。
互いに前提資格の関係はありませんが、難易度的にはOmniStudioディベロッパーのほうがより高度になります。