Da die meisten Standardaufgaben und -anwendungsfälle von generischen Service-Providern abgedeckt werden, wird die Notwendigkeit, Serviceimplementierungscode hinzuzufügen, erheblich reduziert und verkleinert.
Die verbleibenden Fälle reduzieren sich auf echte benutzerdefinierte Logik, die für Ihre Domäne und Anwendung spezifisch ist, z.B. domänenspezifische programmatische Validierungen.
Programmieren wir beispielsweise eine Validierung, die sicherstellt, dass das verstrichene Geburtsdatum vor dem Todesdatum liegt, wenn ein neuer Autor über den AdminService angelegt wird.
Die einfachste Möglichkeit, benutzerdefinierte Dienstimplementierungen hinzuzufügen, besteht darin, einfach eine gleichnamige .js-Datei neben der .cds-Datei zu platzieren, die die entsprechende Dienstdefinition enthält. Das heißt, in unserem Fall legen wir eine Datei namens admin-service.js im Ordner srv unseres Projekts ab, da dieser Ordner auch die Datei admin-service.cds enthält, die zur Definition des AdminService verwendet wird (siehe folgende Abbildung).

Notiz
Es gibt verschiedene Möglichkeiten, die erforderliche benutzerdefinierte Logik in der .js-Datei zu implementieren. Die häufigste Methode besteht darin, eine Unterklasse von cds.ApplicationService zu verwenden, um von generischen, sofort einsatzbereiten Implementierungen zu profitieren. Dies liegt daran, dass die Klasse cds.ApplicationService die Standard-Service-Provider-Implementierung ist, die die bereits besprochenen generischen Provider zu einer Service-Definition hinzufügt.
Um eine Unterklasse von cds.ApplicationService anzulegen, ordnen wir zuerst das Modul @sap/cds der Konstante cds in unserem Quelltext zu (Zeile 1). Das Modul @sap/cds ist das CDS-Fassadenobjekt, das Zugriff auf alle CAP-Node.js-APIs bietet.
Anschließend legen wir in den Zeilen 4 bis 6 eine Unterklasse von cds.ApplicationService an, in der wir später unsere benutzerdefinierte Logik implementieren werden. Der Name der Unterklasse ist beliebig. Wir nennen es hier wie unser Service-Interface, d.h. AdminService.
In Zeile 9 stellen wir die AdminService-Klasse für den Import in andere Module bereit. Dies ist in Node.js üblich, um den Quelltext zu strukturieren.
Notiz
Wenn Sie nun die Anwendung starten, indem Sie im Terminal cds watch eingeben, wird die hinzugefügte Service-Implementierungsdatei im Protokoll über eine Ausgabe ähnlich der folgenden angezeigt:
1[cds] - serving AdminService { path: '/admin', impl: 'srv/admin-service.js' }


