Implementación de programas de control de eventos personalizados .after

Objective

After completing this lesson, you will be able to utilice programas de control de eventos .after para enriquecer datos de salida

Registrando .after Event Handlers

Después de haber analizado un ejemplo de un programa de control antes anterior, veamos a continuación la implementación de un programa de control posterior.

Después de ejecutar los programas de control después de los programas de control on y a menudo se utilizan para enriquecer los datos de salida.

A modo de ejemplo, crearemos un afterhandler para nuestro CatalogService: Queremos otorgar un descuento del 11% para libros con un stock de más de 200. Para ello, la cadena de caracteres " -- 11% de descuento!" debe adjuntarse al título de todos los libros cuyo stock supere los 200 mediante un programa de control after.

Procedemos de la misma manera que con la implementación del programa de control antes de. En otras palabras, creamos un archivo llamado cat-service.js en la carpeta srv de nuestro proyecto, ya que esta carpeta también contiene el archivo cat-service.cds, que se utiliza para definir el CatalogService (véase la siguiente figura).

De forma análoga a lo que discutimos con el manejador antes, creamos una subclase de cds.ApplicationService en el archivo cat-service.js, que llamamos CatalogService.

Para manipular el título del libro, ahora necesitamos un programa de control posterior, que debe registrarse para las operaciones de LECTURA en la entidad Libros. Para ello, sobrescribimos el método init() heredado en la clase de implementación creada (véase la siguiente figura).

Para registrar un programa de control After en el método init() , llame el método heredado after() a través de this.after(). El método after() tiene la siguiente interfaz. Encontrará una descripción detallada de los parámetros individuales en la documentación de la PAC.

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

En el ejemplo que se muestra, registramos la función nombrada this.grantDiscount para las operaciones de LECTURA en la entidad Libros. Para ello, procedemos de forma análoga al registro del controlador anterior discutido anteriormente.

Enriquecimiento de datos de salida

Ahora analicemos cómo se puede implementar la función grantDiscount, que se ha registrado como programa de control posterior, en la clase CatalogService.

Después de que los controladores reciban dos argumentos:

  • resultados

    los resultados del programa de control on que se ejecutó antes

  • req

    una instancia de cds.Request

Para nuestro ejemplo, solo necesitamos el parámetro de resultados, que es una matriz de los libros recuperados (véase la siguiente figura).

Implementamos un bucle sobre la matriz con los libros y añadimos la cadena de caracteres " -- 11% de descuento!" al título de los libros cuya acción sea superior a 200.

Demostración y ejercicio: Proporcione un programa de control de eventos .after

Nota

Como ejercicio, lleve a cabo las instrucciones paso a paso en la siguiente demostración en SAP Business Application Studio.

Como punto de partida para el ejercicio, utilice el resultado del ejercicio anterior Proporcione un programa de control de eventos .before si lo ha completado correctamente. Como alternativa, también puede utilizar la ramificación 11_.before_event_handler del siguiente repositorio GitHub como punto de partida:

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

La implementación completa de la simulación se puede encontrar en la rama 12_.after_event_handler del repositorio GitHub.

Puede encontrar información detallada sobre el contenido del repositorio y cómo utilizarlo aquí.

Vea el vídeo para ver cómo proporcionar un programa de control de eventos .after.