Product Order Open API-Entwicklerleitfaden
Verwenden Sie die Product Order Open-API, um Produktbestellinformationen zu erstellen, zu aktualisieren und abzurufen.
Dieser Entwicklerleitfaden enthält Informationen zum Erweitern von Produktbestellung offene API, um verschiedene Anpassungen vorzunehmen.
Erweitern der API „Product Order Open“.
Die Product Order Open API kann durch Bearbeiten von Skripteinbindungen erweitert werden.
- TMFProductOrderAPIUtil: Enthält Funktionen zur Verarbeitung von POST-Anforderungen.
- TMFProductOrderGetAPIUtil: Enthält Funktionen zur Verarbeitung von GET-Anforderungen.
- ProductOrderExtensionOOB: Enthält Hilfsfunktionen, die Funktionen in TMFProductOrderAPIUtil und TMFProductOrderGetAPIUtil unterstützen.
- ProductOrderProcessor: Eine leere Skripteinbindungsdatei. Verwenden Sie diese Datei, um alle Funktionen zu definieren, die Sie von ProductOrderExtensionOOBüberschreiben möchten.
Erweitern Sie die API „Product Order Open“, um die folgenden Anpassungen vorzunehmen.
Erforderliche Parameter
Um zu ändern, welche Anforderungstextparameter zum Erstellen einer Produktbestellung erforderlich sind oder nicht, überschreiben Sie die Funktion getProductOrderSchema(), die in der Skripteinbindung ProductOrderExtensionOOB enthalten ist.
Die Funktion getProductOrderSchema() liest das Schema aus der Skripteinbindung TMFOrderAPIConstants. TMFOrderAPIConstants ist geschützt und kann nicht bearbeitet werden, daher können Sie nicht nur das Schema aktualisieren. Stattdessen muss ein neues Schema aus einer anderen Datei gelesen werden. Sie können getProductOrderSchema() überschreiben, um ein neues Schema zu lesen. Um getProductOrderSchema()zu überschreiben, schreiben Sie eine Funktion mit demselben Namen in die Skripteinbindung ProductOrderProcessor. Die neue Funktion in ProductOrderProcessor wird von TMFProductOrderAPIUtil aufgerufen, um die Standardfunktion getProductOrderSchema() in ProductOrderExtensionOOBzu ersetzen.
getProductOrderSchema() ein benutzerdefiniertes Schema zurück, das in einer neuen Konstantendatei definiert ist. // ProductOrderProcessor
var ProductOrderProcessor = Class.create();
ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
// Define overriding functions here
// Function name and parameters must be identical to the function it overrides
getProductOrderSchema: function() {
//Define your own custom schema in a new constant file
return JSON.parse(Constants.SCHEMA.CREATE_PRODUCT_ORDER);
},
type: 'ProductOrderProcessor'
});Validierung des Anforderungstexts
true “ zurückgeben.- validePostRequest
()– Wird vonprocessCreateOrder()in TMFProductOrderAPIUtil aufgerufen. - valideProductObj
()– Wird vonprocessCreateOrder()in TMFProductOrderAPIUtil aufgerufen. - valideRelatedParteiObj
()– Wird vonprocessCreateOrder()in TMFProductOrderAPIUtil aufgerufen. - valideGetRequest(
)– Wird vonprocessGetOrder()in TMFProductOrderGetAPIUtil aufgerufen.
falsezurückgibt, wird der API-Vorgang angehalten. Um eine benutzerdefinierte Validierung anzuwenden, überschreiben Sie die Hilfsfunktionen ProductOrderExtensionOOB, indem Sie Funktionen mit identischen Namen und Parametern in ProductOrderProcessor erstellen. Diese neuen ProductOrderProcessor- Funktionen werden von TMFProductOrderAPIUtil und TMFProductOrderGetAPIUtil aufgerufen, um die Standardhilfsfunktionen ProductOrderExtensionOOB zu ersetzen.// ProductOrderProcessor
var ProductOrderProcessor = Class.create();
ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
// 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.productOrderItem)) {
details.push(new TMFCommonOrderAPIUtil().getErrorDetailsObj(TMFOrderAPIConstants.MESSAGES.MISSING_ORDER_ITEM, '/'));
return false;
}
return true;
},
type: 'ProductOrderProcessor'
});Zusätzliche REST-Vorgänge
Um zusätzliche Vorgänge zu erstellen, die über die vorhandenen GET- und POST-Vorgänge hinausgehen, erstellen Sie zusätzliche geskriptete REST-Ressourcen für die Product Order Open API. Die Logik der neuen geskripteten REST-Ressourcen sollte mit den vorhandenen Vorgängen übereinstimmen. Definieren Sie Funktionen für die neuen Vorgänge in einer neuen Skripteinbindung.
Feldzuordnung
Beim Erstellen von Datensätzen ordnet die API Anforderungstextparameter Datensatzfeldern zu. Beim Abrufen von Datensätzen ordnet die API Datensatzfelder Antwortobjektattributen zu.
transformOrderGr()transformOrdLineItemGr()getLineItemPrice()transformPriceOrderTypeAndState()transformCustLineItmContact()transformOrderItemChar()
transformPostOrderResponse()transformGetOrderResponse()transformProductObj ()transformRelatedParteiCustomerLineItem()transformOrderItemRelationship()transformGetOrdLineItmResponse()transformProductCharacteristics()transformProductSpecification()
// ProductOrderProcessor
var ProductOrderProcessor = Class.create();
ProductOrderProcessor.prototype = Object.extendsObject(ProductOrderExtensionOOB, {
// 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: 'ProductOrderProcessor'
});