tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:アプリケーション情報のメタデータを扱うときのチェックポイントについて

メタデータでアプリケーション情報を扱うときの確認点についての話。特定のタブのみをまとめて表示したいときにはアプリケーションを作成して対応します。


アプリケーション作成時にAPI名を指定するのでメタデータを扱うとなどにはこの情報を使用します。


VSCodeのSalesforce拡張子となるOrg Browserを使うとわかりやすいのですが、CustomApplicationsの中でアプリケーション情報が管理されています。(作成したのに表示されていないときには、更新アイコンをクリックすると表示されます。)


名前を確認できたら、package.xmlに追加します。これでソースを組織から取得の操作時に取得対象に追加することができます。


ちなみにOrgBrowserでは「CustomApplications」フォルダですが、メタデータAPIでは「CustomApplication」と最後のsが無いのが正式名称なのでそこは注意点です。

Salesforce Developers

ここからが本題ですが、アプリケーションの情報はCustomApplicationのみでは不足しています。スクラッチ組織へのデプロイや変更セットリリースをしようとするとわかりやすいのですが、『ユーティリティーバー』の情報が無いことでエラーになります。


ということでアプリケーション情報のメタデータを扱うときにはユーティリティバーのメタデータもセットで用意する必要があります。これはユーティリティーバーで表示するものが0件でも必要となります。


このユーティリティーバーですが、CustomApplicationやCustomTabのようにわかりやすくフォルダとして用意されていません。どこにあるかというと『FlexiPage』として管理されています。Lightningページと同じ扱いとなっています。


なので、package.xmlでFlexiPageのところで取得対象にするように宣言すれば、ソースを組織から取得の対象にできます。


「アプリケーション + ユーティリティバー」この組み合わせのセットで管理することで他の組織へのデプロイといった処理を正常実行できます。

補足

ソースデプロイでスクラッチ組織にリソース一式をデプロイした後に、アプリケーションランチャーの選択肢に表示されない..ってなると思います。(なりました。)


これは権限が不足していることが原因となります。スクラッチ組織作成時には設定等が何もないまっさらな状態から始まります。デプロイコマンドでリソース一式をスクラッチ組織に反映させても、システム管理者ユーザ含めて権限未設定の状態となっています。



スクラッチ組織で開発機能をユーザが動かせるようにするには権限設定が必要となりますが、作成後に都度設定しなくてはいけないかというとそういうわけではありません。詳細についてはTrailheadで紹介されていますが、権限付与を行う権限セットを作成してこれもデプロイ対象に含めます。


ソースのデプロイが完了したあとに、「sf org assign permset』コマンドを実行します。これでスクラッチ組織のシステム管理者ユーザに権限を付与することが可能です。スクラッチ組織を作成→デプロイコマンドでリソース一式をデプロイ→権限も権限セット割り当てコマンドで付与。この流れでスクラッチ組織上で開発した機能を動かせる状態になります。


スクラッチ組織の利用はAppExchange開発ぐらいじゃないかなとは思うのですが、勉強用で作成した機能一覧をpackage.xmlで適切に対象に指定して、一度スクラッチ組織にデプロイしてみるとどのメタデータが開発した機能で必要になっているかを意識できるので面白いと思います。