カスタムオブジェクト
十分な権限を持つクライアントアプリケーションは、既存のカスタムオブジェクトに API コールを呼び出すことができます。ユーザインターフェースを使用、クライアントアプリケーションでメタデータ WSDL を使用、または Force.com IDE を使用して、カスタムオブジェクトを作成できます。メタデータ WSDL を使用したカスタムオブジェクトの作成についての詳細は、『Force.com Metadata 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 つのオブジェクトの各レコードを他のオブジェクトの複数のレコードにリンクでき、またその逆のリンクも可能です。詳細は、「オブジェクト間のリレーション」を参照してください。
カスタムオブジェクト用の監査項目
カスタムオブジェクトには、標準オブジェクトと同じ監査項目があります。カスタムオブジェクトを作成する場合、4 つの監査項目 CreatedById、CreatedDate、LastModifiedById および LastModifiedDate が作成され、オブジェクトに入力されます。これらの項目は参照のみです。データを Salesforce カスタムオブジェクトにインポートし、ソースシステムの監査項目値を保持する場合は、カスタムオブジェクトを作成するときに値を設定できます。値を設定できない監査項目は、systemModstamp だけです。組織で API を有効にし、「すべてのデータの編集」権限を持っている必要があります。
- [設定] から、[クイック検索] ボックスに「ユーザインターフェース」と入力し、[カスタマイズ] で [ユーザインターフェース] を選択します。
- [設定] で [「レコードの作成時に監査項目を設定」および「無効な所有者のレコードを更新」ユーザ権限を有効化] を選択します。
- 監査項目を設定する権限セットまたはプロファイルで、[レコードの作成時に監査項目を設定] 権限を有効にします。
- API を使用してレコードを作成し、その監査項目を設定します。
監査項目についての詳細は、「システム項目」を参照してください。
共有オブジェクトとカスタムオブジェクト
別のオブジェクトに対して主従関係を持たないカスタムオブジェクトには、共有ルールオブジェクトが作成されます。これは、AccountOwnerSharingRule などの標準オブジェクトの共有ルールに似ています。カスタムオブジェクトを作成するユーザに「共有の管理」権限がある場合、共有ルールオブジェクトがカスタムオブジェクトに対して自動的に作成されます。
Apex 共有の理由は、カスタムオブジェクトの共有オブジェクトを記述し、rowCause 項目の情報を検証して取得できます。各カスタムオブジェクトの共有オブジェクト名の形式は、AccountShare オブジェクトやその他の標準オブジェクトの共有オブジェクトと同様、MyObjectName__Share となります。
タグオブジェクトとカスタムオブジェクト
カスタムオブジェクトが作成されると、それに関連するタグオブジェクトも作成されます。これらのオブジェクト名の形式は、AccountTag やその他の標準オブジェクトのタグオブジェクトと同様、MyObjectName__Tag となります。
カスタムオブジェクトの必須項目
ユーザインターフェースでは、カスタム項目を必須項目としてマークでき、このルールは API でも強制されます。各カスタム項目には、データ型が boolean である isRequired という項目があります。デフォルト値は、false です。true に設定されている場合、各要求はこの項目に値を指定します (または現在の値のままにします)。値を指定しない場合、要求は失敗します。値を true に設定した場合、項目が次回編集または作成されるときに、入力規則が適用されます。値を指定しない場合またはデフォルト値を指定した場合、要求は失敗します。
isRequired 項目を編集するには、「アプリケーションのカスタマイズ」権限を持つユーザとしてログインする必要があります。
既存のクライアントアプリケーションまたは統合で必要なカスタムオブジェクト項目を変更する場合、その項目の値が指定されていることを必ず確認してください。たとえば、取引先責任者オブジェクトのカスタム選択項目 [教育レベル] を必須項目にする場合、そのカスタム項目にはデフォルト値を指定します。必須項目に値が指定されず、デフォルト値も指定されていない場合、状況コード REQUIRED_FIELD_MISSING のエラーが返されます。
管理パッケージと API 参照名
未管理パッケージがある環境で、管理パッケージバージョンが使用可能になった場合、パッケージに含まれているカスタム項目、カスタムオブジェクト、および Scontrol オブジェクトの API 名が変更されます。各コンポーネントを一意に識別するために、コンポーネントに名前空間プレフィックスが追加され、name__c が prefix__name__c になります。未管理パッケージから、同じアプリケーションの管理パッケージバージョンに移行するには、データのエクスポート、古いパッケージのアンインストール、新しいパッケージのインストールを行います。次に、名前の変更を確認し、関連する対応付けと共にデータをインポートします。