レコード内のリレーション項目
JSON または XML レコードの項目の関連オブジェクトを追加または参照するには、次の構文を使用してリレーションを表します。RelationshipName は項目のリレーション名、IndexedFieldName は親レコードを識別するインデックス化された項目の名前を示します。
JSON:
1"RelationshipName" : { "IndexedFieldName" : "rwilliams@salesforcesample.com" }XML:
1<RelationshipName>
2 <sObject>
3 <IndexedFieldName>rwilliams@salesforcesample.com</IndexedFieldName>
4 </sObject>
5</RelationshipName>項目の relationshipName プロパティの値を取得するには、API で describeSObjects() コールを使用します。さらに、リレーションの親レコードを一意に識別するために、インデックス化された項目を使用します。標準項目は、idLookup プロパティの値が true に設定されている場合、インデックス化されています。
次のサンプルには、ReportsTo 項目を含む取引先責任者レコードが記述されています。この項目は、別の取引先責任者レコードを参照します。ReportsTo は、ReportsTo 項目の relationshipName プロパティの値です。この例では、取引先責任者レコードの ReportsTo 項目が参照する親レコードも取引先責任者レコードであり、Email 項目の値に基づいて親レコードを識別します。Email 項目の idLookup プロパティの値は true であるため、この項目はインデックス化されています。項目に idLookup プロパティが存在するかどうかを確認するには、「標準オブジェクト」で、各オブジェクトの項目リストの「項目のプロパティ」列を参照してください。
JSON:
1[{
2 "FirstName" : "Ray",
3 "LastName" : "Riordan",
4 "ReportsTo" : { "Email" : "rwilliams@salesforcesample.com" }
5}]XML:
1<?xml version="1.0" encoding="UTF-8"?>
2<sObjects xmlns="http://www.force.com/2009/06/asyncapi/dataload">
3 <sObject>
4 <FirstName>Ray</FirstName>
5 <LastName>Riordan</LastName>
6 <ReportsTo>
7 <sObject>
8 <Email>rwilliams@salesforcesample.com</Email>
9 </sObject>
10 </ReportsTo>
11 </sObject>
12</sObjects>JSON ファイルまたは XML ファイルでリレーションを使用する場合は、次の点に注意します。
- 子から親へのリレーションを使用できます。親から子へのリレーションは使用できません。
- 子から親へのリレーションを拡張して使用することはできません。つまり、子から親へのリレーションを参照し、さらに親からその親へのリレーションを参照することはできません。
カスタムオブジェクトのリレーション項目
カスタムオブジェクトでは、カスタム項目を使用してオブジェクト間のリレーションを追跡します。2 つのカスタムオブジェクト間のリレーションを示すには、__r (アンダースコア 2 つと「r」) で終わるリレーション名を使用します。関連オブジェクトへの参照は、インデックス化された項目を使用して追加できます。カスタム項目は、外部 ID 属性が選択されている [外部 ID] 項目である場合、インデックス化されています。
たとえば、子オブジェクトに、親カスタムオブジェクトを指し示す Mother_Of_Child__c という [API 参照名] を使用するカスタム項目があるとします。また、親オブジェクトに External_ID__c という [API 参照名] を使用する項目があるとします。Mother_Of_Child__r relationshipName プロパティを使用して、親オブジェクトへのリレーションを参照することを指定できます。さらに、親オブジェクトの [外部 ID] 項目を [子の母親] 項目の一意の識別子として使用します。リレーション名には、子オブジェクトのカスタム項目の __c を __r で置き換えた値を使用します。リレーションについての詳細は、www.salesforce.com/us/developer/docs/soql_sosl/index.htm にある『Salesforce SOQL および SOSL リファレンスガイド』の「リレーション名について」を参照してください。
リレーションを使用した JSON および XML ファイルの例を次に示します。
JSON:
1[{
2 "Name" : "CustomObject1",
3 "Mother_Of_Child__r" : { "External_ID__c" : "123456" }
4}]XML:
1<?xml version="1.0" encoding="UTF-8"?>
2<sObjects xmlns="http://www.force.com/2009/06/asyncapi/dataload">
3 <sObject>
4 <Name>CustomObject1</Name>
5 <Mother_Of_Child__r>
6 <sObject>
7 <External_ID__c>123456</External_ID__c>
8 </sObject>
9 </Mother_Of_Child__r>
10 </sObject>
11</sObjects>多態的な項目でのリレーション
多態的な項目では、2 種類以上のオブジェクトを親として参照できます。たとえば、取引先責任者またはリードを ToDo の親にすることができます。つまり、ToDo の WhoId 項目に取引先責任者またはリードの ID を含めることができます。多態的な項目は柔軟性が高く、リレーション項目の構文に、親オブジェクトの種別を定義する要素を追加できるようになっています。次に JSON および XML の構文の例を示します。RelationshipName は項目のリレーション名、ObjectTypeName は親レコードのオブジェクトの種別、IndexedFieldName は親レコードを一意に識別するインデックス化された項目の名前を示します。
JSON:
1"RelationshipName" : {
2 "attributes" : {
3 "type" : "ObjectTypeName" },
4 "IndexedFieldName" : "rwilliams@salesforcesample.com"
5}XML:
1<RelationshipName>
2 <sObject>
3 <type>ObjectTypeName</type>
4 <IndexedFieldName>rwilliams@salesforcesample.com</IndexedFieldName>
5 </sObject>
6</RelationshipName>後続のサンプルには、次の 2 つの参照項目が含まれています。
- WhoId: これは多態的な項目であり、Who という relationshipName が使用されています。ここでは、リードを参照し、インデックス化された [メール] 項目を使用して親レコードを一意に識別します。
- OwnerId: この項目は多態性を持たず、Owner という relationshipName が使用されています。ユーザーを参照し、インデックス化された Id 項目を使用して親レコードを一意に識別します。
JSON:
1[{
2 "Subject" : "Test Bulk API polymorphic reference field",
3 "Priority" : "Normal",
4 "Status" : "Not Started",
5 "Who" : {
6 "attributes" : {
7 "type" : "Lead" },
8 "Email" : "lead@salesforcesample.com" },
9 "Owner" : { "Id" : "005D0000001AXYz" }
10}]XML:
1<?xml version="1.0" encoding="UTF-8"?>
2<sObjects xmlns="http://www.force.com/2009/06/asyncapi/dataload">
3 <sObject>
4 <Subject>Test Bulk API polymorphic reference field</Subject>
5 <Priority>Normal</Priority>
6 <Status>Not Started</Status>
7 <Who>
8 <sObject>
9 <type>Lead</type>
10 <Email>lead@salesforcesample.com</Email>
11 </sObject>
12 </Who>
13 <Owner>
14 <sObject>
15 <Id>005D0000001AXYz</Id>
16 </sObject>
17 </Owner>
18 </sObject>
19</sObjects>