tamuです。
スクラッチ組織を使って、カスタムオブジェクトを定義し、それをgitで管理する方法について紹介します。
スクラッチ組織にログイン
スクラッチ組織は通常のログイン画面からはそのままでは入れません。
まずはコマンドで入ることになります。
まず、接続している組織一覧を表示します。
1
2
3
4
5
6
7
8
9
| $ sfdx force:org:list
=== Orgs
ALIAS USERNAME ORG ID CONNECTED STATUS
─── ───── ───────────────────────── ────────────────── ────────────────
(U) xxxxxxxxxxxxxxx@xxxxxxxxx xxxxxxxxxxxxxxxxxx Connected
ALIAS USERNAME ORG ID EXPIRATION DATE
────── ───────────────────────────── ────────────────── ───────────────
mywork xxxxxxxxxxxxxxxxx@example.com xxxxxxxxxxxxxxxxxx 2021-07-15
|
下がスクラッチ組織になるので、alias
, USERNAME
, ORG ID
どれかを指定して開きます。
1
| $ sfdx force:org:open -u mywork
|
コマンドを実行するとブラウザが立ち上がり、スクラッチ組織にログインした状態になります。
カスタムオブジェクトの作成
あとは普通にオブジェクトマネージャからカスタムオブジェクトを作成します。
今回はコールリストを管理するオブジェクトを作ってみます。
できました。
カスタムオブジェクト定義の取得
GUIで作ったカスタムオブジェクト定義をメタ情報としてXMLの形式でダウンロードします。
こうすることでgitで管理することができます。
1
2
3
4
5
6
7
8
9
10
| $ sfdx force:source:retrieve -u mywork -m "CustomObject:CallList__c"
=== Retrieved Source
FULL NAME TYPE PROJECT PATH
───────────────────────── ──────────── ──────────────────────────────────────────────────────────────────────────────
CallList__c CustomObject force-app/main/default/objects/CallList__c/CallList__c.object-meta.xml
CallList__c.CallResult__c CustomField force-app/main/default/objects/CallList__c/fields/CallResult__c.field-meta.xml
CallList__c.Contact__c CustomField force-app/main/default/objects/CallList__c/fields/Contact__c.field-meta.xml
CallList__c.Lead__c CustomField force-app/main/default/objects/CallList__c/fields/Lead__c.field-meta.xml
CallList__c.Tel__c CustomField force-app/main/default/objects/CallList__c/fields/Tel__c.field-meta.xml
CallList__c.WorkDay__c CustomField force-app/main/default/objects/CallList__c/fields/WorkDay__c.field-meta.xml
|
git管理
取得したカスタムオブジェクト定義を git で管理してみます。
1
2
3
4
5
6
7
8
9
10
| $ git add force-app/main/default/objects/CallList__c
$ git commit -m 'CallListオブジェクトの作成'
[master 1ab9ec0] CallListオブジェクトの作成
6 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 force-app/main/default/objects/CallList__c/CallList__c.object-meta.xml
create mode 100644 force-app/main/default/objects/CallList__c/fields/CallResult__c.field-meta.xml
create mode 100644 force-app/main/default/objects/CallList__c/fields/Contact__c.field-meta.xml
create mode 100644 force-app/main/default/objects/CallList__c/fields/Lead__c.field-meta.xml
create mode 100644 force-app/main/default/objects/CallList__c/fields/Tel__c.field-meta.xml
create mode 100644 force-app/main/default/objects/CallList__c/fields/WorkDay__c.field-meta.xml
|
その他の必要な作業
このカスタムオブジェクトを他のスクラッチ組織にデプロイすると、項目レベルセキュリティで見えるようにする設定が必要になります。
すべての項目を手で設定していくのは面倒なので、権限セットでオブジェクトに対するアクセス権限を付与するようにします。
下の図は別のスクラッチ組織にpushしたときの項目レベルセキュリティです。
みごとに参照権限がついていません。
権限セットの作成
権限セットを用意して
設定します。
権限セットの取得
コマンドでスクラッチ組織から設定した権限セットを取得します。
1
2
3
4
5
| $ sfdx force:source:retrieve -u mywork -m "PermissionSet:CallListUserPermission"
=== Retrieved Source
FULL NAME TYPE PROJECT PATH
────────────────────── ───────────── ───────────────────────────────────────────────────────────────────────────────────
CallListUserPermission PermissionSet force-app/main/default/permissionsets/CallListUserPermission.permissionset-meta.xml
|
権限セットの割り当て
権限セットを割り当てるには、まずスクラッチ組織に権限セットをpushする必要があります。
1
2
3
4
5
6
7
8
| $ sfdx force:source:push -u mywork2
*** Deploying with REST ***
Job ID | 0Af1m00000Jo0EDCAZ
SOURCE PROGRESS | ████████████████████████████████████████ | 1/1 Components
=== Pushed Source
STATE FULL NAME TYPE PROJECT PATH
───── ────────────────────── ───────────── ───────────────────────────────────────────────────────────────────────────────────
Add CallListUserPermission PermissionSet force-app/main/default/permissionsets/CallListUserPermission.permissionset-meta.xml
|
これで、mywork2
スクラッチ組織に権限セットがpushされました。
これを以下のコマンドでユーザに割り当てます。
(ユーザ名は force:org:list
などでわかります)
1
2
3
4
5
| $ sfdx force:user:permset:assign --permsetname CallListUserPermission --targetusername test-xxxxxxxxxxxx@example.com
=== Permsets Assigned
Username Permission Set Assignment
───────────────────────────── ─────────────────────────
test-xxxxxxxxxxxx@example.com CallListUserPermission
|
無事に権限セットが割り当てられました。
この「権限セット」もカスタムオブジェクトと同様にgitで管理していきましょう。