カスタムオブジェクト
ユーザインターフェースを使用して、カスタムオブジェクトを定義して組織のデータを拡張できます。カスタムオブジェクトとは、組織独自の情報を保管できるカスタムデータベーステーブルのことです。カスタムオブジェクトの場合、Describe Result の boolean 項目である custom フラグは true です。
十分な権限を持つクライアントアプリケーションは、既存のカスタムオブジェクトに API コールを呼び出すことができます。ユーザインターフェースを使用、クライアントアプリケーションでメタデータ WSDL を使用、または Force.com IDE を使用して、新しいカスタムオブジェクトを作成できます。メタデータ WSDL を使用したカスタムオブジェクトの新規作成についての詳細は、『Force.com メタデータ API 開発者ガイド』を参照してください。Force.com IDE についての詳細は、「Salesforce 開発者」 を参照してください。
API がカスタムオブジェクトおよびカスタム項目とどのように相互作用するかについては、次のトピックを参照してください。
- カスタムオブジェクトの命名規則
- カスタムオブジェクト間のリレーション
- カスタムオブジェクト用の監査項目
- 共有オブジェクトとカスタムオブジェクト
- カスタムオブジェクトの必須項目
- 管理パッケージと API 参照名
カスタムオブジェクトの命名規則
カスタムオブジェクトには、設定時に Salesforce システム管理者が定義した関連する名前項目があります。カスタムオブジェクトには、組織内で一意の名前が必要です。
API では、カスタムオブジェクトの名前は 2 つのアンダーバーと小文字の「c」のサフィックスで識別されます。たとえば、Salesforce ユーザインターフェースで「Issue」とラベル付けされたカスタムオブジェクトは、組織の WSDL では Issue__c と表示されます。
リレーションによって命名規則が変更されます。詳細は、「カスタムオブジェクト間のリレーション」を参照してください。
カスタムオブジェクトレコードを Salesforce ユーザインターフェースに表示するために、名前項目に入力する必要があります。API を使用して名前のないカスタムオブジェクトレコードを作成すると、そのレコードの ID が名前として使用されます。
カスタムオブジェクト間のリレーション
「オブジェクト間のリレーション」で説明されているように、カスタムオブジェクトは別のオブジェクトと関連し、標準オブジェクトと同じように動作します。たとえば、削除のカスケードは主従関係にあるカスタムオブジェクトでサポートされています。
カスタムオブジェクトをリレーションクエリで使用するには、特別な対応が必要です。カスタムオブジェクトのリレーション項目名については、__r を名前に追加して ID を作成し、__c を追加して、親オブジェクトポインタを作成します。たとえば、リレーション項目名が MyRel の場合、ID の名前は MyRelId__r となり、親オブジェクトのポインタは MyRel__c、リレーション名は MyRel__r となります。詳細は、『Salesforce SOQL および SOSL リファレンス』の「リレーション名、カスタムオブジェクトおよびカスタム項目について」を参照してください。
- カスタムオブジェクトと主従関係である場合の主。主従関係では、削除のカスケードと、親が制御する共有ルールを使用します。
- カスタムオブジェクトの参照関係における参照。つまり、カスタムオブジェクトが標準オブジェクトに対して参照するかどうか。
- カスタム項目による拡張。
| 標準オブジェクト | 主従関係 | 参照関係 | カスタム項目 |
|---|---|---|---|
| Account | はい | はい | はい |
| Campaign | はい | はい | はい |
| Case | はい | はい | はい |
| Contact | はい | はい | はい |
| Contract | はい | はい | はい |
| Event | いいえ | いいえ | はい |
| Lead | いいえ | いいえ | はい |
| Opportunity | はい | はい | はい |
| Product2 | いいえ | はい | はい |
| Solution | はい | はい | はい |
| Task | いいえ | いいえ | はい |
| User | いいえ | はい | はい |
カスタムオブジェクトには、その他のカスタムオブジェクトまたは参照オブジェクトと多対多のリレーションがあります。多対多リレーションでは、1 つのオブジェクトの各レコードを他のオブジェクトの複数のレコードにリンクでき、またその逆のリンクも可能です。詳細は、「オブジェクト間のリレーション」を参照してください。
カスタムオブジェクト用の監査項目
カスタムオブジェクトには、標準オブジェクトと同じ監査項目があります。組織は API と、監査項目を作成する機能を使用でき、また、ユーザは「すべてのデータの編集」権限が割り当てられている必要があります。
カスタムオブジェクトを作成する場合、4 つの監査項目 CreatedById、CreatedDate、LastModifiedById および LastModifiedDate が自動的に作成され、オブジェクトに入力されます。これらの項目は参照のみです。
監査項目についての詳細は、「システム項目」を参照してください。
共有オブジェクトとカスタムオブジェクト
別のオブジェクトに対して主従関係を持たないカスタムオブジェクトには、共有ルールオブジェクトが作成されます。これは、AccountOwnerSharingRule などの標準オブジェクトの共有ルールに似ています。カスタムオブジェクトを作成するユーザに「共有の管理」権限がある場合、共有ルールオブジェクトがカスタムオブジェクトに対して自動的に作成されます。
Apex 共有の理由は、カスタムオブジェクトの共有オブジェクトを記述し、rowCause 項目の情報を検証して取得できます。各カスタムオブジェクトの共有オブジェクト名の形式は、AccountShare オブジェクトやその他の標準オブジェクトの共有オブジェクトと同様、MyObjectName__Share となります。
タグオブジェクトとカスタムオブジェクト
カスタムオブジェクトが作成されると、それに関連するタグオブジェクトも作成されます。これらのオブジェクト名の形式は、AccountTag やその他の標準オブジェクトのタグオブジェクトと同様、MyObjectName__Tag となります。
カスタムオブジェクトの必須項目
ユーザインターフェースでは、カスタム項目を必須項目としてマークでき、API でも強制されます。すべてのカスタム項目には、データ型が boolean である isRequired という項目があります。デフォルト値は、false です。true に設定されている場合、すべての要求はこの項目に値を指定する (または現在の値のままにする) 必要があります。値を指定しない場合、要求は失敗します。値が true に設定されると、次に項目が編集または作成されるときに入力規則が適用され、値が指定されないまたはデフォルト値が指定されると、要求が失敗します。
isRequired 項目を編集するには、「アプリケーションのカスタマイズ」権限を持つユーザとしてログインする必要があります。
既存のクライアントアプリケーションまたは統合で必要なカスタムオブジェクト項目を変更する場合、その項目の値が指定されていることを必ず確認してください。たとえば、取引先責任者オブジェクトのカスタム選択項目 [教育レベル] を必須項目にする場合、そのカスタム項目にはデフォルト値を指定します。必須項目に値が指定されず、デフォルト値も指定されていない場合、状況コード REQUIRED_FIELD_MISSING のエラーが返されます。
管理パッケージと API 参照名
各コンポーネントを一意に識別するために、コンポーネントに名前空間プレフィックスが追加され、name__c が prefix__name__c となるため、未管理パッケージがある環境で、管理パッケージバージョンが使用可能になった場合、パッケージに含まれているカスタム項目、カスタムオブジェクト、および Scontrol オブジェクトの API 名が変更されます。未管理パッケージから、同じアプリケーションの管理パッケージバージョンに移行するには、データのエクスポート、古いパッケージのアンインストール、新しいパッケージのインストール、名前変更の確認、関連する対応付けのインポート、の手順で実行することをお勧めします。