サービスオーダーオープン API 開発者ガイド
サービス注文オープン API を使用して、サービスの注文情報を作成、更新、取得します。
この開発者ガイドでは、サービスオーダーオープン API を拡張してさまざまなカスタマイズを行う方法について説明します。
サービスオーダーオープン API の拡張
サービスオーダーオープン API は、スクリプトインクルードを編集することによって拡張できます。
- TMFServiceOrderAPIUtil:POST 要求を処理する関数が含まれています。
- TMFServiceOrderGetAPIUtil:GET 要求を処理する関数が含まれています。
- ServiceOrderExtensionOOB:TMFServiceOrderAPIUtil および TMFServiceOrderGetAPIUtil 内の関数をサポートするヘルパー関数が含まれています。
- ServiceOrderProcessor:空のスクリプトインクルードファイル。このファイルを使用して、 ServiceOrderExtensionOOB から上書きする関数を定義します。
サービスオーダーオープン API を拡張して、次のカスタマイズを行います。
必要なパラメーター
サービスオーダーの作成に必要な要求本文パラメーターと不要なパラメーターを変更するには、ServiceOrderExtensionOOB スクリプトインクルードに含まれる関数 getServiceOrderSchema() を上書きします。
関数 getServiceOrderSchema() は、 TMFOrderAPIConstants スクリプトインクルードからスキーマを読み取ります。TMFOrderAPIConstants は保護されており、編集できないため、スキーマを更新するだけでは不十分です。代わりに、新しいスキーマを別のファイルから読み取る必要があります。getServiceOrderSchema() をオーバーライドして、新しいスキーマを読み込むことができます。getServiceOrderSchema() を上書きするには、ServiceOrderProcessor スクリプトインクルードに同じ名前の関数を記述します。ServiceOrderProcessor の新しい関数は、TMFServiceOrderAPIUtil によって呼び出され、ServiceOrderExtensionOOB のデフォルトの getServiceOrderSchema() 関数を置き換えます。
getServiceOrderSchema() は、新しい定数ファイルで定義されているカスタムスキーマを返します。 // ServiceOrderProcessor
var ServiceOrderProcessor = Class.create();
ServiceOrderProcessor.prototype = Object.extendsObject(ServiceOrderExtensionOOB, {
// Define overriding functions here
// Function name and parameters must be identical to the function it overrides
getServiceOrderSchema: function() {
//Define your own custom schema in a new constant file
return JSON.parse(Constants.SCHEMA.CREATE_SERVICE_ORDER);
},
type: 'ServiceOrderProcessor'
});要求本文の検証
true を返す次の 4 つのヘルパー関数が含まれています。validatePostRequest() - TMFServiceOrderAPIUtil 内のprocessPostOrder()によって呼び出されます。validateServiceObj() - TMFServiceOrderAPIUtil 内のprocessPostOrder()によって呼び出されます。validateRelatedPartyObj() - TMFServiceOrderAPIUtil 内のprocessPostOrder()によって呼び出されます。validateGetRequest() - TMFServiceOrderGetAPIUtil 内のprocessGetOrder()によって呼び出されます。
false を返すと、API の操作が停止します。カスタムの検証を適用するには、ServiceOrderProcessor のものと同じ名前とパラメーターを持つ関数を作成して、ServiceOrderExtensionOOB ヘルパー関数を上書きします。新しく作成された ServiceOrderProcessor 関数は、TMFServiceOrderAPIUtil および TMFServiceOrderGetAPIUtil によって呼び出され、デフォルトの ServiceOrderExtensionOOB ヘルパー関数を置き換えます。// ServiceOrderProcessor
var ServiceOrderProcessor = Class.create();
ServiceOrderProcessor.prototype = Object.extendsObject(ServiceOrderExtensionOOB, {
// Define overriding functions here
// Function name and parameters must be identical to the function it overrides
validatePostRequest: function(orderObject, details) {
// Returning false terminates the POST request
// Make sure to push error message in details array in case of error
if (gs.nil(orderObject.serviceOrderItem)) {
details.push(new TMFCommonOrderAPIUtil().getErrorDetailsObj(TMFOrderAPIConstants.MESSAGES.MISSING_ORDER_ITEM, '/'));
return false;
}
return true;
},
type: 'ServiceOrderProcessor'
});追加の REST 操作
既存の GET および POST 操作以外の操作を追加するには、サービスオーダーオープン API のスクリプト化された REST リソースを追加で作成します。新しいスクリプト化済み REST リソースのロジックは、既存の操作と一致する必要があります。新しいスクリプトインクルードで新しい操作の関数を定義します。
フィールドマッピング
レコードを作成する際には、API は要求本文パラメーターをレコードのフィールドにマッピングします。レコードを取得する際には、API はレコードのフィールドを応答オブジェクトの属性にマッピングします。
transformOrderGr()transformOrdLineItemGr()transformCustLineItmContact()transformOrderItemChar()
transformPostOrderResponse()transformGetOrderResponse()transformServiceObj()transformRelatedPartyCustomerLineItem()transformOrderItemRelationship()transformGetOrdLineItmResponse()transformServiceCharacteristics()transformServiceSpecification()
フィールドマッピングをカスタマイズすると、他のフィールドのデータを追加・取得したり、デフォルトのフィールドのマッピングを変更したりすることが可能です。フィールドのマッピングをカスタマイズするには、ServiceOrderProcessor のものと同じ名前とパラメーターを持つ関数を作成して、ServiceOrderExtensionOOB マッピング関数を上書きします。新しく作成された ServiceOrderProcessor 関数は、TMFServiceOrderAPIUtil および TMFServiceOrderGetAPIUtil によって使用され、デフォルトの ServiceOrderExtensionOOB マッピング関数を置き換えます。
// ServiceOrderProcessor
var ServiceOrderProcessor = Class.create();
ServiceOrderProcessor.prototype = Object.extendsObject(ServiceOrderExtensionOOB, {
// Define overriding functions here
// Function name and parameters must be identical to the function it overrides
transformOrderGr: function(requestObject, orderGr) {
orderGr.external_id = requestObject.externalId;
return orderGr;
},
transformPostOrderResponse: function(orderObject, orderGr) {
orderObject.id = orderGr.getValue('sys_id');
return orderObject;
},
type: 'ServiceOrderProcessor'
});