テンプレートの構造について
学習の目的
この単元を完了すると、次のことができるようになります。
- CRM Analytics テンプレートの各部について説明する。
- テンプレートを構成するファイルを挙げる。
- CRM Analytics テンプレートの各ファイルで何を管理するのかを説明する。
CEO からの要求の増大
前回の単元を完了したら、CEO にアプリケーションの作成プロセスを説明し、アプリケーションの Sales Performance と Pipeline Performance という Executive Overview ダッシュボードを示します。
CEO はそれなりに感謝してくれましたが、さらに多くのことを望んでいます。(いつものことです!)。「前回の打ち合わせの後にわかったのですが、一部のパートナーは Service Cloud を使用しており、この Service Performance ダッシュボードの搭載を望んでいます。パートナーがこのダッシュボードを追加するオプションを設定することはできますか?」
「また、パートナーの中には、別のデータを見たいと考えている人もいることがわかりました。また、取引先の所在地を別の方法で表示できないかと質問した人もいました。他には、新規ビジネスの追跡方法が当社とは違うと言う人もいました。」
彼女が言わんとしていることをしっかり理解するために、あなたはアプリケーションを開いて、具体的に説明してもらいます。
「[Billing Country (国(請求先))] なんですが一部の小規模なパートナーからは、都道府県ごと、あるいは市区郡ごとに表示したいという要望があるんです。それから、この [Lead Source (リードソース)] には新規ビジネスをどのように獲得したのかが表示されますけど、パートナーの多くはこれと同じ用語を使っていないんです。これを変更することはできます?」
幸いにもあなたは、『Analytics Templates Developer Guide (Analytics テンプレート開発者ガイド)』に目を通していたため、その解決策を心得ていました。テンプレートを編集して設定ウィザードを追加し、ユーザーが自分のアプリケーションをカスタマイズできる質問を設ければよいのです。前述のとおり、Execs Only 1 は経営陣向けのアプリケーションのごくシンプルなバージョンで、他のバージョンに変型することはできません。
テンプレートを編集するためには、その前に内容を理解しておく必要があります。この単元では、テンプレートのファイルを確認し、テンプレートウィザードと、最終的には作成したアプリケーションをファイルでどのように管理するかを説明します。
テンプレートの JSON ファイル
CRM Analytics アプリケーションからテンプレートを作成するときは、次のようなファイルのディレクトリを取得します。
このディレクトリには、テンプレートオブジェクトを構成する JSON ファイルが格納されます。これらのファイルでダッシュボード、データセットが (external_files
で) 定義され、レシピまたはデータフローが (workflow
で) 定義されます。また、ウィザードなどの機能を追加するために編集するファイルも格納されます。これらのファイルを使用できるのは、テンプレートの作成後にメタデータを取得した場合のみです。詳細は、この単元の末尾の「リソース」セクションにある『Analytics Templates Developer Guide (Analytics テンプレート開発者ガイド)』の「Retrieve (Export) the WaveTemplate Object (WaveTemplate オブジェクトの取得 (エクスポート))」のリンクをクリックしてください。
-
template-info.json
は、メタデータ情報、ダッシュボードやレンズを定義する CRM Analytics のオブジェクト、その他のファイルなど、テンプレートの全要素を管理します。
-
ui.json
は、アプリケーションの作成を誘導する設定ウィザードを管理します。ウィザードのページ数、質問の順序、ユーザーに表示する全メッセージを定義します。
-
variables.json
には、ウィザードの質問のテキストや答えの仕様など、テンプレートのすべての変数が含まれます。変数はまた、条件付き質問も定義します。たとえば、組織に特定のデータが含まれている場合にのみ、一定の質問をウィザードに表示したいことがあります。あるいは、ウィザードの一般的な質問に対する回答に基づいて、より具体的な質問を追加することもできます。
-
template-to-app-rules.json
は、テンプレートが従うルールを定義します。たとえば、組織で特定の Salesforce オブジェクトを使用していない場合は、アプリケーションがそれらのオブジェクトをダッシュボードで参照したり、データフローに含めたりしないようにするためのルールを定義することが考えられます。ルールはテンプレートでの変数の処理方法も定義します。たとえば、ウィザードで取引先の検索条件にどの項目を含めるかを質問する場合、template-to-app-rules.json
は、その選択がダッシュボードにどのように反映されるかを決定します。
-
folder.json
は、ダッシュボードの各部を整理します。たとえば、アプリケーションのダッシュボードの順番をアルファベット順以外で設定できます。
鋭い方なら、Service Performance ダッシュボードの JSON ファイル (Exec_Overview_Service_Performance.json
) に言及していないことに気が付いたことでしょう。このファイルについては後ほど取り上げます。
元締めたる template-info.json のご紹介
Execs Only テンプレート 1 のファイルのうち、template-info.json
から見ていきましょう。
{ "assetVersion" : 41, "name" : "Trailhead_Template_PartOne", "releaseInfo" : { "templateVersion" : "4.0" }, //1-THE DASHBOARDS "dashboards" : [ { "file" : "dashboard/Exec_Overview_Pipeline_Performance.json", "name" : "Exec_Overview_Pipeline_Performance_PartOne", "label" : "Exec Overview - Pipeline Performance" }, { "file" : "dashboard/Exec_Overview_Sales_Performance.json", "name" : "Exec_Overview_Sales_Performance_PartOne", "label" : "Exec Overview - Sales Performance" } ], //2-TEMPLATE DESCRIPTION "description" : "Unlock the power of Analytics Templates.", "eltDataflows" : [ { "file" : "workflow/SalesAnalyticsDataflow.json" } ], //3-THE DATASETS "datasetFiles" : [ { "label" : "Users", "name" : "user_PartOne" }, { "label" : "Opportunities", "name" : "opportunity_PartOne", "userXmd" : "external_files/opportunity_XMD_template.json" }, { "label" : "User Allocation", "name" : "quota_PartOne", "userXmd" : "external_files/quota_XMD_template.json" }, { "label" : "Pipeline Trending", "name" : "pipeline_trending_PartOne", "userXmd" : "external_files/pipeline_trending_XMD_template.json" } ], "externalFiles" : [ { "file" : "external_files/plain_quota.csv", "name" : "plain_quota_PartOne", "schema" : "external_files/plain_quota.json", "type" : "CSV" } ], //4-THE TEMPLATE NAME "label" : "Execs Only Template 1", //5-REFERENCES TO OTHER FILES "folderDefinition" : "folder.json", "rules" : [ { "type" : "templateToApp", "file" : "template-to-app-rules.json" } ], "uiDefinition" : "ui.json", "variableDefinition" : "variables.json", "icons" : { "appBadge" : { "name" : "16.png" }, "templateBadge" : { "name" : "trailhead_icon_160x160" }, "templateDetail" : { "name" : "trailhead_detail" } } }
template-info.json
は、このテンプレートの取りまとめ役と考えるとよいでしょう。このファイルには、アプリケーションの作成に必要な全情報が含まれます。テンプレートとバージョン情報 (最初の数行)、ダッシュボード (コメントの 1)、テンプレートの説明 (2)、データセット (3)、テンプレート名 (4) のメタデータが記述されているのがわかります。ファイルの下部をよく見ると、他の 3 つの JSON ファイルへの参照 (5) が記述されています。
重要: このモジュールのサンプルコードは、Execs Only テンプレート 1 (EATP1) を Execs Only テンプレート 2 (EATP2) にアップグレードするために必要な重要な手順を表しています。JSON ではコメントがサポートされないため、実際に作業する前にコメントを削除してくださいこの単元の末尾の「リソース」セクションで、コメント解除され、動作する状態のテンプレートの完全ファイルをダウンロードできます。
変数、UI、ルール
では、テンプレートの他のオブジェクトファイルのうち、variables.json
から見ていきましょう。
{ //1-THE DEFAULT VARIABLE "variableType": { "type": "ObjectType", "properties": { "createAllDashboards": { "type": "BooleanType" } }, //2-THE OVERRIDE "Overrides": { "required": true, "description": "Internal configuration to allow asset creation overrides, not to be displayed in UI.", "defaultValue": { "createAllDashboards": false }, "strictValidation": true } } }
このファイルには、すべてのアセットを作成するための 1 つのデフォルト変数 (1)、つまり createAllDashboards
が記述されています。
また、上書き (2) も記述されています。この上書きは false
に設定されているため、template_info.json
で参照されていないダッシュボード (このケースでは欠落している Service Performance ダッシュボード) を作成するようにテンプレートに指示することになります。詳しくは後ほど説明します。
次に、ui.json
を見てみましょう。このファイルは、設定ウィザードの内容を決定します。Execs Only 1 にはウィザードがないため、このファイルには何もありません。これがデフォルトの条件です。
{ "pages": [ ] }
最後は Execs Only 1 の template-to-app-rules.json
ファイルで、これもデフォルトは空です。ユーザーがウィザードの質問から選択を行うことができないため、ダッシュボードの変更方法のルールはありません。constants
と rules
の 2 つのセクションがありますが、これらは後ほど説明します。
{ "constants": [] "rules": [] }
CEO、そしてパートナーの望みを叶えるためには、4 つのファイルをすべて編集する必要があります。以降の 2 つの単元ではその方法を学習します。ですがその前に、このモジュールのバッジを獲得するための質問に取り組みましょう。
リソース
- Retrieve (Export) the WaveTemplate Object (WaveTemplate オブジェクトの取得 (エクスポート))
- The Template Object (テンプレートオブジェクト)
- このモジュールのコードのダウンロード。ダウンロードは 2 つのファイルで構成されています。EATP1 は基本的な Template 1 (テンプレート 1) で、基本アプリケーションの作成に使用しました。EATP2 は Template 2 (テンプレート 2) で、このモジュールと次のモジュールで説明する JSON の変更が含まれています。