スクラッチ組織でカスタムオブジェクトを定義する

スクラッチ組織を使ってカスタムオブジェクトを作ります。その後、あるスクラッチ組織からあるスクラッチ組織に定義をコピーします。権限セットもあわせて必要になります。

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したときの項目レベルセキュリティです。 みごとに参照権限がついていません。

別組織にpushしたときのFLS

権限セットの作成

権限セットを用意して

権限セットの作成

設定します。

権限セットの設定

権限セットの取得

コマンドでスクラッチ組織から設定した権限セットを取得します。

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で管理していきましょう。

Built with Hugo
Theme Stack designed by Jimmy