Profile
- Apex クラス
- アプリケーション
- カスタム項目権限
- カスタムオブジェクト権限
- カスタムタブの設定
- 外部データソース
- レコードタイプ
- Visualforce ページ
詳細は、「package.xml マニフェストファイルのサンプル」の「管理コンポーネントへのアクセス」を参照してください。
宣言的なメタデータファイルのサフィックスおよびディレクトリの場所
ファイルのサフィックスは、.profile です。各プロファイルに 1 つのファイルがあり、対応するパッケージディレクトリの profiles フォルダに保存されます。
バージョン
プロファイルは、API バージョン 10.0 以降で使用できます。
項目
| 項目名 | データ型 | 説明 |
|---|---|---|
| applicationVisibilities | ProfileApplicationVisibility[] | このプロファイルに割り当てられているユーザに表示されるアプリケーションを示します。API バージョン 29.0 以前では、この項目はカスタムアプリケーションのみをサポートします。API バージョン 30.0 以降、この項目は標準アプリケーションとカスタムアプリケーションの両方をサポートします。 |
| classAccesses | ProfileApexClassAccess[] | このプロファイルに割り当てられているユーザが実行できるメソッドを持つ最上位の Apex クラスを示します。 |
| custom | boolean | プロファイルがカスタムプロファイルか (true)、標準プロファイルか (false) を示します。API バージョン 30.0 以降で使用できます。 |
| customPermissions | ProfileCustomPermissions[] | このプロファイルに割り当てられているユーザが利用可能なカスタム権限を示します。API バージョン 31.0 以降で使用できます。 |
| description | string | プロファイルの説明。最大 255 文字です。API バージョン 30.0 以降で使用できます。 |
| externalDataSourceAccesses | ProfileExternalDataSourceAccess[] | このプロファイルに割り当てられたユーザが使用できる、ID 種別が [ユーザ] のデータソースを示します。API バージョン 27.0 以降で利用できます。 |
| fieldLevelSecurities | ProfileFieldLevelSecurity[] | このプロファイルに割り当てられているユーザに表示される項目、および使用可能なアクセス権の種類 (編集可能または非表示) を示します。この項目は、API バージョン 22.0 以前で使用できます。 |
| fieldPermissions | ProfileFieldLevelSecurity[] | このプロファイルに割り当てられているユーザに表示される項目、および使用可能なアクセス権の種類 (編集可能または参照可能) を示します。この項目は、API バージョン 23.0 以降で使用できます。 |
| fullName | string | 名前には、英数字、およびアンダースコア (_) 文字のみを使用できます。また、最初は文字とし、最後にアンダースコアを使用したり、連続した 2 つのアンダースコア文字を含めたりすることはできません。 この項目はMetadata コンポーネントから継承するため、この項目はこのコンポーネントの WSDL で定義されません。作成時、更新時、または削除時に指定する必要があります。コールにおけるこの項目の例を確認するには、「create()」を参照してください。 |
| layoutAssignments | ProfileLayoutAssignments[] | このプロファイルで使用するレイアウトを示します。 |
| loginHours | ProfileLoginHours[] |
このプロファイルを持つユーザがログインできる時間を示します。指定されていない場合、ユーザのログイン時間はプロファイルによって制限されません。 この項目は、API バージョン 25.0 以降で使用できます。 |
| loginIpRanges | ProfileLoginIpRange[] |
特定のプロファイルを持つユーザがログインできる IP アドレスの範囲のリスト。 この項目は、API バージョン 17.0 以降で使用できます。 |
| objectPermissions | ProfileObjectPermissions[] | このプロファイルに割り当てられているユーザがアクセスできるオブジェクト、および使用可能なアクセス権の種類 (作成、参照、編集、削除など) を示します。API バージョン 28.0 以降、この項目は allowRead が true の場合にのみ取得されます。 |
| pageAccesses | ProfileApexPageAccess[] | このプロファイルに割り当てられているユーザが実行できる Visualforce ページを示します。 |
| profileActionOverrides | ProfileActionOverride[] |
このプロファイルに割り当てられている Lightning Experience ホームページのアクション上書きのリスト。ユーザがプロファイルでログインすると、一致する ProfileActionOverride の割り当てが、ActionOverride で指定された [ホーム] タブの既存の上書きよりも優先されます。 この項目は、API バージョン 37.0 以降で使用できます。 |
| recordTypeVisibilities | ProfileRecordTypeVisibility[] | このプロファイルに割り当てられているユーザのレコードタイプの表示設定を示します。API バージョン 29.0 以降では、無効なレコードタイプの場合、この項目は取得またはリリースされません。 |
| tabVisibilities | ProfileTabVisibility[] | このプロファイルに割り当てられているユーザに表示されるレコードタイプ、および表示されるアプリケーション内のタブを示します。 |
| userLicense | string |
プロファイルの[ユーザライセンス]。ユーザライセンスによって、ユーザがアクセスできる機能の基準が決まります。各ユーザには必ず 1 つのユーザライセンスが割り当てられます。 この項目は、API バージョン 17.0 以降で使用できます。 |
| userPermissions | ProfileUserPermission[] | ユーザ権限 (「API の有効化」など) を指定します。また、このプロファイルでその権限が有効化されているかどうかも指定します。この項目は、有効なユーザ権限のみを取得します。API バージョン 29.0 以降で使用できます。 |
ProfileActionOverride
| 項目名 | データ型 | 説明 |
|---|---|---|
| actionName | string | 必須。使用できる値は、上書きできるアクションと同じです。
|
| content | string | flexipage、lightningcomponent、scontrol、または visualforce に type が設定されている場合は、この項目を設定します。override として使用する Lightning ページ、Lightning コンポーネント、Sコントロールまたは、Visualforce ページの名前を参照します。インストールされたコンポーネントを参照するには、Component_namespace__Component_name の形式を使用します。 |
| formFactor | FormFactor (string 型の列挙) | 上書きするページのサイズ。 Large 値は Lightning Experience デスクトップ環境を表し、flexipage 型と lightningcomponent 型でのみ有効です。Small 値は、電話またはタブレットの Salesforce モバイルアプリケーションを表します。Medium 値は、将来の使用のために予約されています。 |
| pageOrSobjectType | string | 上書きする sObject 型の名前。有効な値は、standard および custom です。 |
| recordType | string | ProfileActionOverride に割り当てられるレコードタイプ。PageOrSobjectType が standard-home の場合、この項目は null になります。 |
| type | ActionOverrideType(string 型の列挙) | 必須。override アクションの種別を表します。有効な値は、「ActionOverrideType」 に記述されています。 |
ProfileApplicationVisibility
ProfileApplicationVisibility はこのプロファイルに割り当てられているユーザにアプリケーションが表示されるかどうかを決定します。
| 項目名 | データ型 | 説明 |
|---|---|---|
| application | string | 必須。アプリケーションの名前。 |
| default | boolean | 必須。アプリケーションがデフォルトのアプリケーションであるか (true)、否か (false) を示します。プロファイルごとに 1 つのアプリケーションのみを true に設定できます。 |
| visible | boolean | 必須。このプロファイルに割り当てられているユーザにこのアプリケーションが表示されるか (true)、否か (false) を示します。 |
ProfileApexClassAccess
ProfileApexClassAccess は、このプロファイルに割り当てられているユーザが実行できるメソッドを持つ最上位の Apex クラスを決定します。
| 項目名 | データ型 | 説明 |
|---|---|---|
| apexClass | string | 必須。Apex クラス名。 |
| enabled | boolean | 必須。このプロファイルに割り当てられているユーザが最上位クラスのメソッドを実行できるか (true)、否か (false) を示します。 |
ProfileCustomPermissions
ProfileCustomPermissions はプロファイルに割り当てられているユーザのカスタムアクセス権限を表します。取得できるのは有効なカスタム権限のみです。
| 項目名 | データ型 | 説明 |
|---|---|---|
| enabled | boolean | 必須。カスタム権限が有効化されているか (true)、否か (false) を示します。 |
| name | string | 必須。カスタム権限名。 |
ProfileExternalDataSourceAccess
ProfileExternalDataSourceAccess は、ID 種別が [ユーザ] のユーザのデータソースアクセスを表します。API バージョン 27.0 以降で利用できます。
| 項目名 | データ型 | 説明 |
|---|---|---|
| enabled | boolean | 必須。データソースが有効化されているか (true)、否か (false) を示します。 |
| externalDataSource | string | 外部データソースの名前。 |
ProfileFieldLevelSecurity
ProfileFieldLevelSecurity は、プロファイルに割り当てられているユーザの項目レベルセキュリティを表します。API バージョン 30.0 以降では、必須項目の権限の取得やリリースはできません。
ProfileLayoutAssignments
ProfileLayoutAssignments はプロファイルおよび特定のエンティティで使用するレイアウトを決定します。
| 項目名 | データ型 | 説明 |
|---|---|---|
| layout | string | 必須。この特定のエンティティのレイアウトを示します。 |
| recordType | string | この項目は省略可能です。レコードの recordType がレイアウトの割り当てルールに一致する場合、指定されているレイアウトを使用します。 |
ProfileLoginHours
ProfileLoginHours は、特定のプロファイルを持つユーザがログインできる期間を制限します。
| 項目名 | データ型 | 説明 |
|---|---|---|
| weekdayStart | string | このプロファイルを持つユーザがログインできる曜日の開始時刻を指定します。特定の曜日の開始時刻が指定されている場合、その曜日の終了時刻も指定する必要があります。特定の曜日の Start を End より大きな値に設定することはできません。
|
| weekdayEnd | string | このプロファイルを持つユーザがログアウトする必要のある曜日の時刻を指定します。
|
プロファイルから以前に設定されたログイン時間帯の制限を削除するには、開始時刻または終了時刻を含まない、空の loginHours タグを明示的に含める必要があります。
ProfileLoginIpRange
ProfileLoginIpRange IP は、特定のプロファイルを持つユーザがログインできる IP アドレスの範囲を定義します。
| 項目名 | データ型 | 説明 |
|---|---|---|
| description | string | この項目は、この範囲に対応するネットワークの部分など、範囲の目的を識別するために使用します。この項目は、API バージョン 31.0 以降で使用できます。 |
| endAddress | string | 必須。範囲の最後の IP アドレス。 |
| startAddress | string | 必須。範囲の最初の IP アドレス。 |
ProfileObjectPermissions
ProfileApexPageAccess
ProfileApexPageAccess では、このプロファイルに割り当てられているユーザが実行できる Visualforce ページを決定します。
| 項目名 | データ型 | 説明 |
|---|---|---|
| apexPage | string | 必須。Visualforce ページ名。 |
| enabled | boolean | 必須。このプロファイルに割り当てられているユーザが Visualforce ページを実行できるか (true)、否か (false) を示します。 |
ProfileRecordTypeVisibility
ProfileRecordTypeVisibility は、このプロファイルのレコードタイプの表示設定を表します。レコードタイプを使用すると、さまざまなビジネスプロセス、選択リストの値、およびページレイアウトを、さまざまなユーザに提供できます。
ProfileTabVisibility
ProfileTabVisibility はこのプロファイルのタブの表示設定を表します。バージョン 17.0 以降では、ProfileTabVisibility は標準オブジェクトのタブの表示設定をサポートしています。マニフェストファイルには、プロファイルのタブの表示設定を取得するための標準タブに対応する標準オブジェクトを含める必要があります。
| 項目名 | データ型 | 説明 |
|---|---|---|
| tab | string | 必須。タブの名前。 |
| visibility | TabVisibility (string 型の列挙) | 必須。タブの表示設定を示します。有効な値は、次のとおりです。
|
ProfileUserPermission
ProfileUserPermission は、プロファイルのアプリケーション権限またはシステム権限を表します。権限ごとにこれらの要素の 1 つを使用します。
| 項目 | データ型 | 説明 |
|---|---|---|
| enabled | boolean | 必須。権限が有効化されるか (true)、無効化されるか (false) を示します。 |
| name | string | 必須。権限名。 |
Java のサンプル
次のサンプルは、選択リスト、プロファイル、レコードタイプ、およびカスタムアプリケーションを使用します。
1public void profileSample() {
2 try {
3 // Create an expense report record, tab and app...
4 CustomObject expenseRecord = new CustomObject();
5 expenseRecord.setFullName("ExpenseReport__c");
6 expenseRecord.setLabel("Expense Report");
7 expenseRecord.setPluralLabel("Expense Reports");
8
9 expenseRecord.setDeploymentStatus(DeploymentStatus.Deployed);
10 expenseRecord.setSharingModel(SharingModel.ReadWrite);
11
12 CustomField nameField = new CustomField();
13 nameField.setType(FieldType.AutoNumber);
14 nameField.setLabel("Expense Report Number");
15 nameField.setDisplayFormat("ER-{0000}");
16 expenseRecord.setNameField(nameField);
17
18 AsyncResult[] arsExpenseRecord =
19 metadataConnection.create(new Metadata[] {expenseRecord});
20
21 Picklist expenseStatus = new Picklist();
22 PicklistValue unsubmitted = new PicklistValue();
23 unsubmitted.setFullName("Unsubmitted");
24 PicklistValue submitted = new PicklistValue();
25 submitted.setFullName("Submitted");
26 PicklistValue approved = new PicklistValue();
27 approved.setFullName("Approved");
28 PicklistValue rejected = new PicklistValue();
29 rejected.setFullName("Rejected");
30 expenseStatus.setPicklistValues(new PicklistValue[] {
31 unsubmitted, submitted, approved, rejected}
32 );
33
34 CustomField expenseStatusField = new CustomField();
35 expenseStatusField.setFullName(
36 "ExpenseReport__c.ExpenseStatus__c"
37 );
38 expenseStatusField.setLabel("Expense Report Status");
39 expenseStatusField.setType(FieldType.Picklist);
40 expenseStatusField.setPicklist(expenseStatus);
41 AsyncResult[] arsStatusField =
42 metadataConnection.create(new Metadata[]
43 {expenseStatusField});
44
45 CustomTab expenseTab = new CustomTab();
46 expenseTab.setFullName("ExpenseReport__c");
47 expenseTab.setMotif("Custom70: Handsaw");
48 expenseTab.setCustomObject(true);
49 AsyncResult[] arsTab =
50 metadataConnection.create(new Metadata[] {expenseTab});
51
52 CustomApplication application = new CustomApplication();
53 application.setFullName("ExpenseForce");
54 application.setTab(new String[] {expenseTab.getFullName()});
55 AsyncResult[] arsApp =
56 metadataConnection.create(new Metadata[] {application});
57
58 // Employees and managers have the same app visibility...
59 ProfileApplicationVisibility appVisibility =
60 new ProfileApplicationVisibility();
61 appVisibility.setApplication("ExpenseForce");
62 appVisibility.setVisible(true);
63
64 Profile employee = new Profile();
65 employee.setFullName("Employee");
66 employee.setApplicationVisibilities(
67 new ProfileApplicationVisibility[] {appVisibility}
68 );
69 AsyncResult[] arsProfileEmp =
70 metadataConnection.create(new Metadata[] {employee});
71
72 Profile manager = new Profile();
73 manager.setFullName("Manager");
74 manager.setApplicationVisibilities(
75 new ProfileApplicationVisibility[] {appVisibility}
76 );
77 AsyncResult[] arsProfileMgr =
78 metadataConnection.create(new Metadata[] {manager});
79
80 // But employees and managers have different access
81 // to the state of the expense sheet
82 RecordType edit = new RecordType();
83 edit.setFullName("ExpenseReport__c.Edit");
84 RecordTypePicklistValue editStatuses =
85 new RecordTypePicklistValue();
86 editStatuses.setPicklist("ExpenseStatus__c");
87 editStatuses.setValues(new PicklistValue[]
88 {unsubmitted, submitted});
89 edit.setPicklistValues(new RecordTypePicklistValue[]
90 {editStatuses});
91 AsyncResult[] arsRecTypeEdit =
92 metadataConnection.create(new Metadata[] {edit});
93
94 RecordType approve = new RecordType();
95 approve.setFullName("ExpenseReport__c.Approve");
96 RecordTypePicklistValue approveStatuses =
97 new RecordTypePicklistValue();
98 approveStatuses.setPicklist("ExpenseStatus__c");
99 approveStatuses.setValues(new PicklistValue[]
100 {approved, rejected});
101 approve.setPicklistValues(new RecordTypePicklistValue[]
102 {approveStatuses});
103 AsyncResult[] arsRecTypeApp =
104 metadataConnection.create(new Metadata[] {approve});
105 } catch (ConnectionException ce) {
106 ce.printStackTrace();
107 }
108}宣言的なメタデータの定義のサンプル
カスタムアプリケーション、カスタムオブジェクト、レコードタイプ、タブ、およびユーザ権限を持つ組織のプロファイルの定義を次に示します。
1<?xml version="1.0" encoding="UTF-8"?>
2<Profile xmlns="http://soap.sforce.com/2006/04/metadata">
3 <applicationVisibilities>
4 <application>PubApps__Myriad_Publishing</application>
5 <default>false</default>
6 <visible>true</visible>
7 </applicationVisibilities>
8 <custom>true</custom>
9 <objectPermissions>
10 <object>TestWeblinks__c</object>
11 </objectPermissions>
12 <recordTypeVisibilities>
13 <default>true</default>
14 <recordType>TestWeblinks__c.My First Recordtype</recordType>
15 <visible>true</visible>
16 </recordTypeVisibilities>
17 <tabVisibilities>
18 <tab>Myriad Publications</tab>
19 <visibility>DefaultOn</visibility>
20 </tabVisibilities>
21 <userPermissions>
22 <enabled>true</enabled>
23 <name>APIEnabled</name>
24 </userpermissions>
25</Profile>使用方法
retrieve() コールを使用して組織内のプロファイルに関する情報を取得する場合、返される .profile ファイルには retrieve 要求で参照されるその他のメタデータ型のセキュリティ設定のみが含まれます (常に取得されるユーザ権限、IP アドレス範囲、およびログイン時間は除く)。たとえば、次の package.xml ファイルにはすべてのカスタムオブジェクトに一致する types 要素が含まれています。そのため、返されたプロファイルには組織のすべてのカスタムオブジェクトのオブジェクトおよび項目権限が含まれますが、Account などの標準オブジェクト、および標準項目の権限は含まれません。
1<?xml version="1.0" encoding="UTF-8"?>
2<Package xmlns="http://soap.sforce.com/2006/04/metadata">
3 <types>
4 <members>*</members>
5 <name>CustomObject</name>
6 </types>
7 <types>
8 <members>*</members>
9 <name>Profile</name>
10 </types>
11 <version>43.0</version>
12</Package>CustomObject のワイルドカード「*」は標準オブジェクトに一致しません。これは、意図しない大きな影響を及ぼすプロファイルの変更を避けるうえで役立ちます。Developer Edition 組織のいくつかのカスタムオブジェクトを作成し、その情報を retrieve() (取得) し、次にカスタムオブジェクトを本番組織に deploy() (リリース) する場合、Account などのすべての標準オブジェクトのプロファイルおよび項目レベルのセキュリティ、および標準項目は、標準オブジェクトまたは項目の個別の types 要素を明示的に作成しない限り上書きされません。
メタデータ API では、予期しないプロファイルの変更を回避するため、retrieve() コールに標準項目を含めることが意図的に困難になっています。ただし、Account などの標準オブジェクトのカスタム項目と標準項目のプロファイル権限を取得およびリリースすることはできます。
次の package.xml ファイルでは、Account 標準項目とカスタム項目のプロファイル権限を返すことができます。CustomObject 型のメンバーとして標準の Account オブジェクトを指定することにより、types 要素内でこのオブジェクトがどのように定義されるかに注目してください。
1<?xml version="1.0" encoding="UTF-8"?>
2<Package xmlns="http://soap.sforce.com/2006/04/metadata">
3 <types>
4 <members>Account</members>
5 <name>CustomObject</name>
6 </types>
7 <types>
8 <members>*</members>
9 <name>Profile</name>
10 </types>
11 <version>43.0</version>
12</Package>最後の package.xml ファイルでは、Account オブジェクトの MyCustomField__c カスタム項目のプロファイル権限を返すことができます。
1<?xml version="1.0" encoding="UTF-8"?>
2<Package xmlns="http://soap.sforce.com/2006/04/metadata">
3 <types>
4 <members>Account.MyCustomField__c</members>
5 <name>CustomField</name>
6 </types>
7 <types>
8 <members>*</members>
9 <name>Profile</name>
10 </types>
11 <version>43.0</version>
12</Package>