この記事はAteam LifeDesign Advent Calendar 2023の18日目記事です。
はじめに
突然ですが、SalesforceDX便利ですよね。
便利ですが、使い始めてすぐだと〇〇てメタデータだと何?となることが多いとおもます。
今まで自分が〇〇てどこだろうと探したことのあるメタデータについて備忘録として記事にします。
チームメンバーに〇〇てどこ?と聞かれたり
自分でも〇〇のメタデータどこ?となった場合はこの記事に足していきます。
Lightning レコードページ
FlexiPage
です。
Salesforce上の画面表示と違うので最初は少し紛らわしいですよね。
<types>
<name>FlexiPage</name>
</types>
選択リスト値
カスタム項目
素直にCustomField
ですね
<types>
<name>CustomField</name>
</types>
<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>Test__c</fullName>
<externalId>false</externalId>
<label>テスト_選択リスト</label>
<required>false</required>
<trackFeedHistory>false</trackFeedHistory>
<type>Picklist</type>
<valueSet>
<restricted>true</restricted>
<valueSetDefinition>
<sorted>false</sorted>
<value>
<fullName>A</fullName>
<default>false</default>
<label>A</label>
</value>
<value>
<fullName>B</fullName>
<default>false</default>
<label>B</label>
</value>
</valueSetDefinition>
</valueSet>
</CustomField>
標準項目
StandardValueSet
です
<types>
<name>StandardValueSet</name>
</types>
CustomField
の中に直接選択リスト値は存在せず
StandardValueSet
に定義されています。
<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>Rating</fullName>
<trackFeedHistory>false</trackFeedHistory>
<type>Picklist</type>
</CustomField>
<?xml version="1.0" encoding="UTF-8"?>
<StandardValueSet xmlns="http://soap.sforce.com/2006/04/metadata">
<sorted>false</sorted>
<standardValue>
<fullName>Hot</fullName>
<default>false</default>
<label>Hot</label>
</standardValue>
<standardValue>
<fullName>Warm</fullName>
<default>false</default>
<label>Warm</label>
</standardValue>
<standardValue>
<fullName>Cold</fullName>
<default>false</default>
<label>Cold</label>
</standardValue>
</StandardValueSet>
選択リスト値セット(グローバル値セット)を使用いている場合
GlobalValueSet
です。
<types>
<name>GlobalValueSet</name>
</types>
valueSet
のvalueSetName
に選択リスト値セット(グローバル値セット)のAPI参照名が定義されます。
<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>Test__c</fullName>
<externalId>false</externalId>
<label>テスト</label>
<required>false</required>
<trackHistory>false</trackHistory>
<type>Picklist</type>
<valueSet>
<restricted>true</restricted>
<valueSetName>TestList</valueSetName>
</valueSet>
</CustomField>
Lightningページの割り当て
CustomApplication
です。
<types>
<name>CustomApplication</name>
</types>
Salesforceの画面で見るとプロファイルに設定されてそうな気もしますが、アプリケーションのメタデータの中に設定は存在します。
CustomApplication
のprofileActionOverrides
の中にページ名とプロファイル名がマッピングされています。
<?xml version="1.0" encoding="UTF-8"?>
<CustomApplication xmlns="http://soap.sforce.com/2006/04/metadata">
<profileActionOverrides>
<actionName>View</actionName>
<content>FlexiPage</content>
<formFactor>Small</formFactor>
<pageOrSobjectType>Account</pageOrSobjectType>
<type>Flexipage</type>
<profile>Admin</profile>
</profileActionOverrides>
<profileActionOverrides>
<actionName>View</actionName>
<content>FlexiPage</content>
<formFactor>Large</formFactor>
<pageOrSobjectType>Account</pageOrSobjectType>
<type>Flexipage</type>
<profile>Admin</profile>
</profileActionOverrides>
ユーティリティバー
FlexiPage
です。
<types>
<name>FlexiPage</name>
</types>
アプリケーションかと思いきや実は違います。
ユーティリティバー自体はFlexiPage
で定義されています。
どこまで定義されているかというと
アプリケーション内のナビゲーション項目のプロパティ設定の値まで定義されています。
個人的には、アプリケーション内でユーティリティバーにプロパティ設定を渡すというメタデータになっていると思い込んでいたので
数回リリース忘れを起こしましたね...
さいごに
どうしてもSalesforceのコード以外の部分は画面から作るので、メタデータ名を意識することが少なくて初めは慣れませんが
慣れると
- メタデータ書き換えた方が早く作れる
- メタデータコピーして作り始めると早く作れる
とか気づきことがたくさんあると思います。
SalesforceDXを使って間もない方にこの記事が少しでも役に立つと嬉しいです。