テンプレートの構造について
学習の目的
CEO からの要求の増大
前の単元を終えたあなたは、新しいテンプレートがどのように機能するかを CEO に見せたくてうずうずしています。(確かに、テンプレートは用意されていたため、実際あなたは大したことをしていませんが、ここでは大仕事をしたことにしておきましょう)。CEO にアプリケーションの作成プロセスを説明し、アプリケーションの Sales Performance と Pipeline Performance という Executive Overview ダッシュボードを示します。
CEO はそれなりに感謝してくれましたが、さらに多くのことを望んでいます。(いつものことです!)。「前回の打ち合わせの後にわかったのですが、一部のパートナーは Service Cloud を使用しており、この Service Performance ダッシュボードの搭載を望んでいます。誰もが当社に感謝せずにはいられなくなるほど簡便なものにして欲しいのです。パートナーがこのダッシュボードを追加するオプションを設定することはできますか?
一部のパートナーは本当に小うるさいんですよね。パートナーとの週 1 回の電話中にダッシュボードを使っていたんですが、中には違うデータを見れるようにしたいと言う人もいました。また、取引先の所在地を別の方法で表示できないかと質問した人もいました。他には、新規ビジネスの追跡方法が当社とは違うと言う人もいました。」
CEO が言わんとしていることを明確に理解するために、あなたはアプリケーションを開いて、具体的に説明してもらいます。

CEO は次のように言います。「[国(請求先))] となっているでしょう? 小規模なパートナーの中には都道府県ごと、あるいは市区郡ごとに表示したいと言う人がいるんです。それから、この [リードソース] には新規ビジネスをどのように獲得したのかが示されるけど、パートナーの多くは同じ用語を使っていないので、変更することはできますか?」
幸いにもあなたは、『Analytics Templates Developer Guide (Analytics テンプレート開発者ガイド)』に目を通していたため、その解決策を心得ていました。テンプレートを編集して設定ウィザードを追加し、ユーザーがアプリケーションの各自のバージョンをカスタマイズできる質問を設ければよいのです。前述のとおり、Execs Only 1 は経営陣向けのアプリケーションのごくシンプルなバージョンで、他のバージョンに変型することはできません。
テンプレートを編集するためには、その前に内容を理解しておく必要があります。この単元では、テンプレートのファイルを確認し、テンプレートと最終的にはそれを基に作成したアプリケーションをファイルでどのように管理するかを説明します。
テンプレートの JSON ファイル
CRM Analytics アプリケーションからテンプレートを作成するときは、次のようなファイルのディレクトリを取得します。
このディレクトリには、テンプレートオブジェクトを構成する JSON ファイルが格納されます。これらのファイルでダッシュボード、データセット (external_files)、レシピまたはデータフローが定義されます。また、ウィザードなどの機能を追加するために編集するファイルも格納されます。これらのファイルを使用できるのは、テンプレートの作成後にメタデータを取得した場合のみです。詳細は、この単元の末尾の「リソース」セクションにある『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 は、その選択がダッシュボードにどのように反映されるかを決定します。メモ: このモジュールではこれ以降、読みやすいようにこのファイル名を 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" } } }
変数、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 の rules.json ファイルで、これもデフォルトは空です。ユーザーがウィザードの質問から選択を行うことができないため、ダッシュボードの変更方法のルールはありません。ここには、定数とルールの 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 の変更が含まれています。