Implémentation des gestionnaires d'événements personnalisés après

Objective

After completing this lesson, you will be able to utilisez les gestionnaires d'événements .after pour enrichir les données sortantes.

Enregistrement de .after gestionnaires d'événements

Après avoir discuté d'un exemple d'avant gestionnaire ci-dessus, examinons ensuite l'implémentation d'un gestionnaire After.

Après que les gestionnaires sont exécutés après les gestionnaires On et sont souvent utilisés pour enrichir les données sortantes.

A titre d'exemple, nous allons créer un après-handler pour notre CatalogService: Nous voulons accorder une remise de 11% pour les livres avec un stock de plus de 200. Pour ce faire, la chaîne de caractères " -- 11% de remise!" doit être ajouté au titre de tous les livres dont le stock dépasse 200 via un after handler.

Nous procédons de la même manière qu'avec l'implémentation de l'avant gestionnaire. En d'autres termes, nous créons un fichier appelé cat-service.js dans le dossier srv de notre projet, car ce dossier contient également le fichier cat-service.cds, qui est utilisé pour définir le CatalogService (voir la figure suivante).

Comme pour ce que nous avons discuté avec le précédent gestionnaire, nous créons une sous-classe de cds.ApplicationService dans le fichier cat-service.js, que nous appelons CatalogService.

Pour manipuler le titre du livre, nous avons maintenant besoin d'un gestionnaire After, qui doit être enregistré pour les opérations READ sur l'entité Books. Pour ce faire, nous écrasons la méthode init() héritée dans la classe d'implémentation créée (voir figure suivante).

Pour enregistrer un gestionnaire After dans la méthode init() , appelez la méthode after() héritée via this.after(). La méthode after() a l'interface suivante. Vous trouverez une description détaillée des différents paramètres dans la documentation de la PAC.

Code Snippet
12345
function after ( event : string | string[] | '*', entity? : CSN definition | CSN definition[] | string | string[] | '*', handler : function )

Dans l'exemple illustré, nous enregistrons la fonction nommée this.grantDiscount pour les opérations READ sur l'entité Books. Pour ce faire, nous procédons de manière analogue à l'enregistrement de l'avant gestionnaire dont il est question ci-dessus.

Enrichissement des données sortantes

Voyons maintenant comment la fonction grantDiscount, qui a été enregistrée comme gestionnaire After, peut être implémentée dans la classe CatalogService.

Après que les gestionnaires reçoivent deux arguments :

  • résultats

    les résultats du gestionnaire d'activation qui a été exécuté avant

  • demande

    une instance de cds.Request

Pour notre exemple, nous avons seulement besoin du paramètre de résultats, qui est un tableau des livres récupérés (voir la figure suivante).

Nous implémentons une boucle sur le tableau avec les livres et ajoutons la chaîne de caractères " -- 11% Discount!" au titre des livres dont le stock est supérieur à 200.

Démonstration et exercice : fournir un .after Event Handler

Remarque

Dans l'exercice, suivez les instructions étape par étape de la démonstration suivante dans SAP Business Application Studio.

Comme point de départ de l'exercice, utilisez le résultat de l'exercice précédent Fournir un gestionnaire d'événements si vous l'avez terminé avec succès. Vous pouvez également utiliser la branche 11_.before _event_handler à partir du référentiel GitHub suivant comme point de départ :

https://github.com/SAP-samples/cap-development-learning-journey

L'implémentation complète de la simulation se trouve dans la branche 12_.after_event_handler du référentiel GitHub.

Vous trouverez ici des informations détaillées sur le contenu du référentiel et son utilisation.

Regardez la vidéo pour voir comment fournir un gestionnaire d'événements .after.