Composite Graph の使用
-
通常の Composite 要求では、一連の REST API 要求を単一のコールを実行できます。また、1 つの要求の出力を、後続の要求の入力として使用できます。
-
Composite Graph が通常の Composite 要求を拡張することで、より複雑で完全な一連の関連オブジェクトおよびレコードを組み合わせることができるようになります。
-
また、Composite Graph によって、特定の一連の要求のステップをすべて完了にするか、またはすべて未終了にすることができます。このオプションを使用すると、どの要求が成功したかを確認する必要がありません。
-
通常の Composite 要求では、サブ要求の数は 25 に制限されています。Composite Graph はこの制限を 500 に拡大します。
一般に、グラフは接続されたノードのコレクションです。

Composite Graph 操作のコンテキストでは、ノードは Composite サブ要求です。たとえば、ノードは次のような Composite サブ要求になる場合があります。
各ノードで特徴的なのはレコードを表すエンドポイントです。
Composite Graph 要求は、次の URL のみをサポートします。
| URL | サポートされている HTTP メソッド |
|---|---|
| /services/data/vXX.X/sobjects/sObject | POST 「sObject Basic Information」を参照してください。 |
| /services/data/vXX.X/sobjects/sObject/id | DELETE、GET、PATCH 「sObject Rows」を参照してください。 |
| /services/data/vXX.X/sobjects/sObject/customFieldName/externalId | DELETE、GET、PATCH、POST 「sObject Rows by External ID」を参照してください。 |
Composite Graph は方向付けされる場合があります。つまり、あるノードで他のノードの情報を使用する場合があります。たとえば、取引先責任者を作成するノードが取引先ノードの ID を使用して取引先責任者を取引先に関連付けることができます。

次に例を示します。
JSON での Composite Graph の定義
Composite Graph は JSON で次のように定義されます。
- 各 Composite Graph 操作内で一意である必要があります。
- 英数字で始まる必要があります。
- 40 文字未満である必要があります。
- ピリオド (「.」) を含めることはできません。
1 つの Composite Graph 要求で 1 つ以上の Composite Graph を使用できます。「Composite Graph の使用」を参照してください。
例: Composite Graph 要求を使用して Account、Contact、Campaign、Opportunity、Lead、CampaignMember を作成
この例では、次のアクションを実行する Composite Graph を示します。
- Account 1 を作成する。
- Account 1 の子として Account 2 を作成する。
- 作成:
- Account 2 にリンクされる Contact 1。
- Contact 1 の部下である Contact 2。
- Contact 2 の部下である Contact 3。
- Campaign を作成する。
- Account 2 および Campaign にリンクされる Opportunity を作成する。
- Lead を作成する。
- Lead および Campaign にリンクされる CampaignMember を作成する。

このグラフの JSON は次のようになります。
例: リソースに関する詳細を GET してか��、Composite Graph 要求で使用
この例では、リソースで GET を使用してから、以降の要求でそのリソースのプロパティを使用する方法を示します。
グラフ深度
-
親を持たないノードは深度 1 とみなされます。
-
もう 1 つのノードの深度は深度 1 からそのノードまでのグラフのエッジの最大数です。2 つのノード間のエッジは、1 つのノードでもう 1 つのノードのプロパティ (@{reference_account.id} など) を使用している場合に発生します。

AllOrNone パラメーター
標準の Composite 操作では、エラーが発生した場合の動作を制御するのは allOrNone パラメーターのみです。値が true の場合、Composite 要求全体がロールバックされます。値が false の場合、失敗したサブ要求に連動しない残りのサブ要求が実行されます。連動サブ要求が実行されないため、処理済みのレコードと未処理のレコードが混在する場合があります。
Composite Graph には、各グラフがそのすべてのサブ要求を正常に完了するか、または完全にロールバックされるかが保証されるという利点があります。つまり、allOrNone パラメーターは暗黙的に各グラフで true になっているとみなされます。Composite Graph 要求で、処理済みのレコードと未処理のレコードが混在することはありません。
グラフの独立性を確保するために、次のルールが適用されます。
- 1 つのグラフのサブ要求がもう 1 つのグラフのサブ要求を参照することはない。
- 1 つの Composite Graph 操作の各グラフは独立している必要がある。1 つのグラフを正常に処理できなかった場合、それによって同じ操作内の他のグラフの処理が妨げられるようなことがあってはなりません。
ベストプラクティス
- あるグラフ内で 1 つの項目が失敗した場合、ロールバックされるのは、そのグラフ内の項目のみです。小さいグラフの方が、エラーの特定や対処が容易です。
- サーバーでグラフを処理するときは、グラフを複数に分けて小さくした方が、処理の速度や効率が向上します。
例: Composite Graph ジョブの送信
Composite Graph ジョブを送信する方法を示す例については、「Composite Graph の使用」を参照してください。