Commande de produit Guide du développeur Open API

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 4 minutes de lecture
  • Utilisez l’API ouverte de commande de produit pour créer, mettre à jour et récupérer les informations de commande de produits.

    Ce guide du développeur fournit des informations sur la façon d’étendre le Commande de produit : API ouverte pour effectuer diverses personnalisations.

    Extension de l’API ouverte de la commande de produits

    L’API ouverte de commande de produit peut être étendue en modifiant des includes de script.

    Ces includes de script ne doivent être modifiés qu’en tenant compte des conséquences des changements.
    • TMFProductOrderAPIUtil : contient des fonctions pour gérer les demandes POST.
    • TMFProductOrderGetAPIUtil : contient des fonctions pour gérer les demandes GET.
    • ProductOrderExtensionOOB : contient des fonctions d’assistance qui prennent en charge les fonctions dans TMFProductOrderAPIUtil et TMFProductOrderGetAPIUtil.
    • ProductOrderProcessor : un fichier d’include de script vide. Utilisez ce fichier pour définir toutes les fonctions que vous souhaitez remplacer à partir de ProductOrderExtensionOOB.

    Étendez l’API ouverte de commande de produit pour effectuer les personnalisations suivantes.

    Paramètres requis

    Pour modifier les paramètres de corps de demande requis ou non pour créer une commande de produit, remplacez la fonction getProductOrderSchema() contenue dans l’include de script ProductOrderExtensionOOB .

    La fonction getProductOrderSchema() lit le schéma à partir de l’include de script TMFOrderAPIConstants . TMFOrderAPIConstants est protégé et ne peut pas être modifié, vous ne pouvez donc pas simplement mettre à jour le schéma. Au lieu de cela, un nouveau schéma doit être lu à partir d’un fichier différent. Vous pouvez remplacer getProductOrderSchema() pour lire un nouveau schéma. Pour remplacer getProductOrderSchema(), écrivez une fonction portant le même nom dans l’include de script ProductOrderProcessor . La nouvelle fonction de ProductOrderProcessor sera appelée par TMFProductOrderAPIUtil pour remplacer la fonction getProductOrderSchema() par défaut dans ProductOrderExtensionOOB.

    Dans cet exemple, getProductOrderSchema() renvoie un schéma personnalisé qui est défini dans un nouveau fichier de constantes.
    // 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'
    });

    Validation du corps de la demande

    Pour effectuer une validation supplémentaire sur le corps de la demande, remplacez les fonctions ProductOrderExtensionOOB . ProductOrderExtensionOOB contient les quatre fonctions d’assistance suivantes qui renvoient true par défaut.
    • validatePostRequest() : appelé par processCreateOrder() dans TMFProductOrderAPIUtil.
    • validateProductObj() : appelé par processCreateOrder() dans TMFProductOrderAPIUtil.
    • validateRelatedPartyObj() : appelé par processCreateOrder() dans TMFProductOrderAPIUtil.
    • validateGetRequest() : appelé par processGetOrder() dans TMFProductOrderGetAPIUtil.
    Si une fonction d’assistance renvoie false, cela arrête le fonctionnement de l’API. Pour appliquer une validation personnalisée, remplacez les fonctions d’aide ProductOrderExtensionOOB en créant des fonctions avec des noms et des paramètres identiques dans ProductOrderProcessor. Ces nouvelles fonctions ProductOrderProcessor seront appelées par TMFProductOrderAPIUtil et TMFProductOrderGetAPIUtil pour remplacer les fonctions d’aide ProductOrderExtensionOOB par défaut.
    Dans cet exemple, une fonction de ProductOrderProcessor remplace une fonction par défaut de ProductOrderExtensionOOB pour effectuer la validation de l’attribut productOrderItem .
    // 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'
    });

    Opérations REST supplémentaires

    Pour créer des opérations supplémentaires au-delà des opérations GET et POST existantes, créez des ressources REST scriptées supplémentaires pour l’API Open de commande de produit. La logique des nouvelles ressources REST scriptées doit être cohérente avec les opérations existantes. Définissez les fonctions des nouvelles opérations dans un nouvel include de script.

    Mappage de champs

    Lors de la création d’enregistrements, les mappages d’API font correspondre les paramètres du corps de la demande aux champs d’enregistrement. Lors de la récupération des enregistrements, l’API mappe les champs d’enregistrement aux attributs de l’objet de réponse.

    ProductOrderExtensionOOB contient les fonctions suivantes pour mapper un corps de demande POST à un GlideRecord.
    • transformOrderGr()
    • transformOrdLineItemGr()
    • getLineItemPrice()
    • transformPriceOrderTypeAndState()
    • transformCustLineItmContact()
    • transformOrderItemChar()
    ProductOrderExtensionOOB contient les fonctions suivantes pour mapper un objet GlideRecord à un objet de réponse pour les demandes GET ou POST.
    • transformPostOrderResponse()
    • transformGetOrderResponse()
    • transformProductObj()
    • transformRelatedPartyCustomerLineItem()
    • transformOrderItemRelationship()
    • transformGetOrdLineItmResponse()
    • transformProductCharacteristics()
    • transformProductSpecification()
    Personnalisez les mappages de champs pour ajouter et récupérer des données pour des champs supplémentaires, ou pour modifier les mappages par défaut des champs. Pour personnaliser les mappages de champs, remplacez les fonctions de mappage ProductOrderExtensionOOB en créant des fonctions avec des noms et des paramètres identiques dans ProductOrderProcessor. Ces nouvelles fonctions ProductOrderProcessor seront utilisées par TMFProductOrderAPIUtil et TMFProductOrderGetAPIUtil pour remplacer les fonctions de mappage ProductOrderExtensionOOB par défaut.
    Dans cet exemple, deux fonctions de ProductOrderProcessor remplacent les fonctions par défaut de ProductOrderExtensionOOB pour créer des mappages pour les external_id champs et sys_id .
    // 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'
    });