Intégration des aspects de réutilisation courants

Objective

After completing this lesson, you will be able to étendre les définitions d'entité par de nouveaux éléments à l'aide des aspects du CDS

Aspects

Étudions maintenant comment la définition des entités peut être étendue avec de nouveaux éléments utilisant ce qu'on appelle des aspects.

Regardez la vidéo pour en savoir plus sur les aspects CDS.

Dans cette leçon, nous allons en apprendre davantage sur la directive extend . Nous discuterons de la directive annotate plus tard dans une autre leçon.

La directiveextend

À l'aide de la directive extend vous pouvez ajouter des zones d'extension aux définitions existantes comme illustré dans la figure suivante :

Dans l'exemple, l'élément SomeAdditionalField est ajouté à l'entité de domaine Authors. Cette zone est également ajoutée à la table de base de données générée.

Remarque

Les consommateurs voient toujours les modèles efficaces fusionnés, avec la séparation en aspects totalement transparents pour eux.

Avec la directive extend , les métadonnées telles que les annotations peuvent également être ajoutées aux définitions existantes ou les métadonnées existantes peuvent être écrasées.

Les propriétés de type peuvent également être définies via extend. Par exemple, la longueur d'un élément existant de type Chaîne peut être augmentée.

Aspects nommés

Vous pouvez utiliser extend avec des aspects prédéfinis pour appliquer les mêmes extensions à plusieurs cibles, comme illustré dans la figure suivante :

L'exemple montre un aspect nommé ManagedObject qui définit les deux éléments createdAt et createdBy. L'entité Livres et Auteurs est étendue par ces zones via cet aspect nommé.

Remarque

La syntaxe aspect ManagedObject a le même effet que la syntaxe define aspect ManagedObject, c'est-à-dire que le mot-clé define est facultatif.

Une extension nommée peut contenir n'importe quel élément, tel que des champs, des types ou des entités.

Inclut comme syntaxe de raccourci

Vous pouvez également utiliser des aspects nommés comme includes dans une syntaxe de type héritage. Cette syntaxe vous permet d'étendre une définition avec plusieurs aspects nommés en même temps. Dans la figure suivante, l'entité Auteurs est étendue par les deux aspects nommés ManagedObject et AnotherAspect.

Sont inclus le sucre syntaxique. L'exemple présenté équivaut à utiliser une séquence de extends comme suit :

Code Snippet
1234567
entity Authors {} extend Authors with ManagedObject; extend Authors with AnotherAspect; extend Authors with { key ID : UUID; ... }

Aspects de réutilisation courants

CDS est livré avec un modèle prédéfini @sap/cds/common qui fournit des types et des aspects communs à réutiliser.

Il est recommandé que toutes les applications utilisent les types et aspects communs fournis via @sap/cds/common. Cela vous permet de bénéficier des meilleures pratiques tirées des applications de gestion réelles.

Dans la section suivante, nous allons examiner de plus près les deux aspects cuid et managed de @sap/cds/common. Plus tard, nous aborderons également l'aspect CodeList et les types Country et Currency de ce modèle.

Aspect cuid

L'aspect cuid est un raccourci pratique qui vous permet d'ajouter des clés primaires canoniques universellement uniques à vos définitions d'entité.

Remarque

Pour rappel, les exécutions du fournisseur de services renseignent automatiquement les zones clés de type UUID avec les UUID générés automatiquement.

Aspect managed

L'aspect managed peut être utilisé pour ajouter les quatre zones createdAt, createdBy, modifiedAt et modifiedBy à une entité. Ces zones sont utilisées pour suivre l'auteur et la date de création et de mise à jour des enregistrements de données.

En utilisant cet aspect, vous pouvez stocker les informations de gestion pertinentes relatives aux enregistrements et garder votre modèle de domaine principal propre et compréhensible.

Les zones createdBy et modifiedBy ont le type de données User, qui est un type de réutilisation commun de @sap/cds/common.

Les annotations @cds.on.insert et @cds.on.update utilisées dans l'aspect désignent les éléments qui sont automatiquement renseignés par les gestionnaires génériques lors de l'insertion et de la mise à jour.

Les pseudo-variables utilisées dans ces annotations sont résolues comme suit :

  • $now est remplacé par l'heure actuelle du serveur (en UTC)
  • $user est l'ID de l'utilisateur actuel tel qu'il a été reçu du middleware d'authentification.

Remarque

Les zones modifiedAt et modifiedBy sont définies chaque fois que la ligne correspondante a été modifiée, c'est-à-dire également pendant les opérations CREATE.

Utilisation des aspects de @sap/cds/common

Pour pouvoir utiliser des aspects du modèle @sap/cds/common, vous devez les importer via la directive using . Dans la figure suivante, par exemple, cela est fait pour les aspects de réutilisation courants cuid et managed via la variante de déconstructeur de type ES6 de using.

Les deux aspects importés sont utilisés comme includes dans l'exemple pour étendre l'entité Auteurs avec les zones correspondantes. Sans les deux aspects prédéfinis, la définition suivante de l'entité Auteurs serait nécessaire pour obtenir le même résultat que dans l'exemple illustré à l'aide de moyens natifs:

Code Snippet
123456789101112
entity Authors { key ID: UUID; createdAt : Timestamp @cds.on.insert: $now; createdBy : User @cds.on.insert: $user; modifiedAt : Timestamp @cds.on.insert: $now @cds.on.update: $now; modifiedBy : User @cds.on.insert: $user @cds.on.update: $user; name : String(100); dateOfBirth : Date; dateOfDeath : Date; books : Association to many Books on books.author = $self; }

Démonstration et exercice : utiliser des aspects prédéfinis

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 Ajouter des associations au Domain Model si vous avez terminé l'exercice avec succès. Vous pouvez également utiliser la branche 5_associations 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 6_common_reuse_aspects 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 découvrir comment utiliser des aspects prédéfinis.