Partner Order Submit API
(サポートは終了し、Channel Order App のバージョン 1.39 以前でのみ使用可能) Salesforce に注文をすぐに送信するか、Partner Order Submit API を使用して非同期で送信します。
構文
1channel_orders.ServiceOrderProcessor.sendOrder()
2channel_orders.ServiceOrderProcessor.sendOrderAsync()使用方法
複数の注文を作成または更新し、同じトランザクションで送信する場合、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);