Implementierung von benutzerdefinierten Ereignisbehandlern

Objective

After completing this lesson, you will be able to verwenden Sie Nachher-Event-Handler, um ausgehende Daten anzureichern.

Registrierung von .after -Ereignisbehandlern

Nachdem wir oben ein Beispiel für einen Before-Handler besprochen haben, betrachten wir als Nächstes die Implementierung eines After-Handlers.

After-Handler werden nach den On-Handlern ausgeführt und häufig zum Anreichern ausgehender Daten verwendet.

Als Beispiel legen wir einen After-Handler für unseren CatalogService an: Wir möchten einen Rabatt von 11 % für Bücher mit einem Bestand von mehr als 200 gewähren. Dazu wird die Zeichenkette " -- 11% Rabatt!" ist an den Titel aller Bücher anzuhängen, deren Bestand 200 über einen After-Handler überschreitet.

Wir gehen analog zur Implementierung des Before-Handlers vor. Mit anderen Worten, wir legen eine Datei namens cat-service.js im Ordner srv unseres Projekts an, da dieser Ordner auch die Datei cat-service.cds enthält, die zur Definition des CatalogService verwendet wird (siehe folgende Abbildung).

Analog zu dem, was wir mit dem Before-Handler besprochen haben, legen wir eine Unterklasse von cds.ApplicationService in der Datei cat-service.js an, die wir CatalogService nennen.

Um den Buchtitel zu bearbeiten, benötigen wir nun einen After-Handler, der für READ-Operationen in der Dokumentenmappenentität registriert sein sollte. Dazu überschreiben wir die geerbte init() Methode in der angelegten Implementierungsklasse (siehe folgende Abbildung).

Um einen After-Handler in der Methode init() zu registrieren, rufen Sie die geerbte Methode after() über this.after()auf. Die Methode after() hat die folgende Schnittstelle. Eine detaillierte Beschreibung der einzelnen Parameter finden Sie in der CAP-Dokumentation.

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

Im gezeigten Beispiel registrieren wir die benannte Funktion this.grantDiscount für READ-Vorgänge in der Dokumentenmappenentität. Dazu gehen wir analog zur Registrierung des oben besprochenen Before-Handlers vor.

Ausgehende Daten anreichern

Sehen wir uns nun an, wie die Funktion grantDiscount, die als After-Handler registriert wurde, in der Klasse CatalogService implementiert werden kann.

Nachbehandler erhalten zwei Argumente:

  • Ergebnisse

    die Ergebnisse des On-Handlers, der zuvor ausgeführt wurde

  • erf.

    eine Instanz von cds.Request

Für unser Beispiel benötigen wir nur den Ergebnisparameter, bei dem es sich um ein Array der abgerufenen Dokumentenmappen handelt (siehe folgende Abbildung).

Wir implementieren eine Schleife über das Array mit den Büchern und hängen die Zeichenfolge " -- 11% Discount!" an. auf den Titel der Bücher, deren Bestand größer als 200 ist.

Demonstration & Übung: Bereitstellen eines .after Event Handlers

Notiz

Führen Sie als Übung die Schritt-für-Schritt-Anleitung in der folgenden Demonstration selbst im SAP Business Application Studio durch.

Verwenden Sie als Ausgangspunkt für die Übung das Ergebnis der vorherigen Übung Geben Sie einen Vor-Event-Handler an, wenn Sie ihn erfolgreich abgeschlossen haben. Alternativ können Sie auch den Branch 11_.before_event_handler aus dem folgenden GitHub-Repository als Ausgangspunkt verwenden:

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

Die vollständige Implementierung der Simulation finden Sie im Zweig 12_.after_event_handler des GitHub-Repositorys.

Detaillierte Informationen zum Inhalt des Repositorys und dessen Verwendung finden Sie hier.

Sehen Sie sich das Video an, um zu sehen, wie Sie einen .after -Event-Handler bereitstellen.