この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Partner Order Submit API

(サポートは終了し、Channel Order App のバージョン 1.39 以前でのみ使用可能) Salesforce に注文をすぐに送信するか、Partner Order Submit API を使用して非同期で送信します。

Channel Order App (COA) v2.0 以降では、Partner Order Submit API が Channel Order Apex API に置き換えられます。Partner Order Submit API との既存のインテグレーションがある場合、Channel Order Apex API に移行してください。

重要

構文

1channel_orders.ServiceOrderProcessor.sendOrder()
2channel_orders.ServiceOrderProcessor.sendOrderAsync()

sendOrder または sendOrderAsync を使用して注文を送信するときには、引数として注文 ID または注文 ID のセットを含めます。たとえば、「channel_orders.ServiceOrderProcessor.sendOrder(orderId)」などです。

メモ

使用方法

複数の注文を作成または更新し、同じトランザクションで送信する場合、sendOrderAsync を使用します。詳細は、このセクションの例を参照してください。

ルールとガイドライン

これは Apex 実装であるため、Apex のすべての使用ルールおよび制限が適用されます。Salesforce はコールごとに 1 つの注文のみをサポートします。

有効な [Service Order ID (サービス注文 ID)] を使用して注文を作成した後、Partner Submit API を使用して注文を送信します。Channel Order App、データ読み込み、または自動処理を使用して、サービス注文およびサービス注文の詳細レコードを作成できます。

各注文には、Service Order (サービス注文) オブジェクトと Service Order Detail (サービス注文の詳細) オブジェクトにリストされた項目を含める必要があります。

メソッド

ServiceOrderProcessor オブジェクトでは、次のメソッドがサポートされています。

名前 引数 説明
sendOrder ID 1 つの ID を使用してすぐに注文を送信します。
sendOrder ID のセット ID のセットを使用してすぐに注文を送信します。
sendOrderAsync ID 1 つの ID を使用して非同期に注文を送信します (@future)。
sendOrderAsync ID のセット ID のセットを使用して非同期に注文を送信します (@future)。

例: Partner Order Submit API の一括処理

ServiceOrderProcessor は、Apex トランザクションごとに一度だけ呼び出すことができます。ID のセットを sendOrder または sendOrderAsync に渡す場合、最大セットサイズは 5 です。次の例では、一括処理ジョブを使用してこの制限を回避しています。

次の例では、状態が [Draft (ドラフト)] の注文が 100 件ある場合、100 回の実行が含まれる 1 つの一括処理ジョブが作成されます (1 回の実行で処理できるレコードは 1 つのみであるためです)。
1//Batch Apex class
2global class COABatchClass implements Database.batchable<sObject>, Database.AllowsCallouts, Database.Stateful{
3   final String DRAFT_STATUS = 'Draft';
4   global final String query =
5      'select Id, CHANNEL_ORDERS__Service_Order_Status__c ' +
6      ' from CHANNEL_ORDERS__Service_Order__c where CHANNEL_ORDERS__Service_Order_Status__c =: DRAFT_STATUS';
7
8   global Database.QueryLocator start(Database.BatchableContext BC){
9      return Database.getQueryLocator(query);
10   }
11
12   global void execute(Database.BatchableContext info, List<CHANNEL_ORDERS__Service_Order__c> scope){
13       for(CHANNEL_ORDERS__Service_Order__c s : scope){
14         CHANNEL_ORDERS.ServiceOrderProcessor.sendOrder(s.Id);
15         }
16   }
17   global void finish(Database.BatchableContext BC){}
18}
19
20//Batch call
21Id batchInstanceId = Database.executeBatch(new COABatchClass(), 1);