Définition de modèles de domaine

Objective

After completing this lesson, you will be able to capturer des modèles de domaine de base à l'aide de Core Data Services

Principes fondamentaux des modèles CDS

Le rôle de Core Data Services

Core Data Services (CDS) est un concept fondamental de la PAC. Ils fournissent les moyens de capturer déclarativement les modèles de données ainsi que les modèles de service.

Regardez la vidéo pour comprendre l'approche basée sur un modèle.

Dans cette leçon, nous allons nous concentrer sur les modèles de domaine. Les modèles de service seront abordés dans le prochain sujet.

La nature des modèles

Les modèles CDS sont représentés dans Core Schema Notation (CSN). CSN (prononcé comme "saison") est similaire à JSON Schema, mais va au-delà des capacités de JSON pour capturer des modèles et des extensions de relation entité à part entière.

Regardez la vidéo pour obtenir une synthèse des formats source et cible des modèles CDS.

Dans cet apprentissage, nous allons définir des modèles dans des fichiers .cds.

Entités de domaine

Comme mentionné précédemment, voyons maintenant comment créer des modèles de domaine à l'aide de CDL. Pour ce faire, nous créons un fichier avec l'extension .cds dans le dossier db du projet CAP. Le nom du fichier est arbitraire, un nom de fichier commun est par exemple schema.cds.

Tout d'abord, nous spécifions une entité de domaine unique appelée Auteurs dans le fichier (voir la figure Entité de domaine simple).

Les entités de domaine sont des types structurés avec des éléments nommés et typés représentant des ensembles de données pouvant être lus et manipulés à l'aide d'opérations CLAS habituelles. Lorsqu'elles sont converties en modèles de persistance, les entités deviennent des tables.

Astuce

Conventions d'appellation : il est recommandé de mettre en majuscules les noms d'entités. Utilisez également le pluriel pour les noms d'entité (p. ex. Auteurs). Commencez les éléments par une lettre minuscule (par exemple, nom).

Pour saisir les éléments, CDS est fourni avec un petit ensemble de types intégrés. Une liste des types intégrés est disponible dans la documentation CDS.

La syntaxe entity Authors utilisée dans la figure équivaut à define entity Authors. Cela signifie que le mot-clé define est facultatif.

Utilisez le mot-clé key pour spécifier un ou plusieurs éléments qui forment la clé primaire d'une entité.

Astuce

Préférez les clés primaires simples et techniques qui ne se composent que d'une seule zone. Utilisez l'ID comme nom pour cette zone clé unique et saisissez-la avec le type de données prédéfini UUID. Les éléments de clé primaire avec le type UUID sont automatiquement renseignés lors de l'INSERT.

Espaces noms

Vous pouvez définir des espaces noms qui sont automatiquement appliqués à tous les noms pertinents dans un fichier. Dans l'exemple présenté, le nom d'entité Auteurs est précédé de l'espace nom com.sap.learning, ce qui donne com.sap.learning.Authors comme nom d'entité complet. Les espaces de noms ne sont que des préfixes - il n'y a rien de spécial à leur sujet au-delà. Les espaces noms sont facultatifs. Utilisez-les si vos modèles peuvent être réutilisés dans d'autres projets. Sinon, vous pouvez vous en passer.

Astuce

L'approche du nom de domaine inverse fonctionne bien pour choisir des espaces de noms.

Types personnalisés

Vous pouvez déclarer des types personnalisés pour les éléments dans les définitions d'entité. Les types personnalisés peuvent être des types simples, c'est-à-dire dérivés de l'un des types prédéfinis, types structurés ou associations. Nous traiterons ici des types simples et des types structurés. Les associations seront abordées plus loin dans le Learning Journey.

Types simples

Dans la figure Exemple de type simple, un type simple appelé NoOfBooks est défini. Il est basé sur le type de données intégré Integer. Cela signifie que chaque fois que NoOfBooks est utilisé, il représente essentiellement une valeur Integer .

L'entité Dossiers affichée a un élément de stock qui est catégorisé avec le type NoOfBooks . Cela signifie que le type de données de cet élément est essentiellement Integer.

La définition

Code Snippet
1
type NoOfBooks : Integer;
utilisé dans la figure équivaut à ce qui suit :
Code Snippet
1
define type NoOfBooks : Integer;
Cela signifie que le mot-clé define est facultatif.

Remarque

Les types personnalisés peuvent augmenter l'expressivité sémantique de vos modèles. Toutefois, évitez l'utilisation excessive de tels types. Elles sont précieuses si vous disposez d'un niveau de réutilisation approprié. Sans réutilisation, vos modèles deviendront seulement plus difficiles à lire et à comprendre, car vous devrez toujours rechercher les définitions de type pertinentes.

Types structurés

Les types structurés sont des types de données personnalisés qui combinent un ou plusieurs éléments liés sous un seul type. Ils permettent de créer des structures de données complexes et de les utiliser au sein des entités.

L'entité Dossiers illustrée dans la figure Exemple de type structuré a un élément de prix de type Price, qui est un type structuré défini séparément.

Le type Price a deux éléments : la quantité de type intégré Decimal et la devise du type intégré String avec une longueur maximale de 3 caractères.

Astuce

Conventions d'appellation : il est recommandé de mettre en majuscules les noms de type de la même manière que les noms d'entité. Cependant, contrairement aux noms d'entités, utilisez la forme singulière pour les noms de type (p. ex. Prix). 

Énumérations

Les énumérations (ou énumérations en abrégé) peuvent être utilisées pour rendre le code plus lisible et plus explicite, car elles vous permettent de remplacer des valeurs cryptiques par des symboles dans la logique d'application.

Vous pouvez spécifier des valeurs d'énumération pour un type sous forme de liste de symboles séparés par des points-virgules avec des valeurs correspondantes affectées. Pour les types de chaîne, l'affectation des valeurs réelles est facultative ; si elle est omise, les valeurs réelles sont les contreparties de chaîne des symboles.

L'entité Pages de la figure Exemple d'énumérations comporte un élément appelé genre de type Genre, qui est un type personnalisé avec des valeurs d'énumération.

Le type Genre est basé sur le type Integer intégré, ce qui signifie que chaque symbole de l'énumération correspond à une valeur Integer .

L'énumération Genre contient deux symboles : fiction, qui correspond à Integer valeur 1, et non_fiction, qui correspond à Integer valeur 2.

Compilation de modèles

Génération de fichiers DDL

Lorsque vous exécutez cds watch dans le terminal pour démarrer un serveur, votre modèle de domaine, qui est défini dans le dossier de base de données du projet, est automatiquement traduit dans un modèle de persistance et déployé dans la base de données configurée. Cela signifie que les instructions SQL DDL correspondantes sont générées et exécutées sur la base de votre modèle CDS.

Vous pouvez également générer ces instructions SQL DDL manuellement à l'aide de la commande suivante dans le terminal :

Code Snippet
1
cds compile <models> [<options>]
Vous obtenez une description détaillée de cette commande en exécutant
Code Snippet
1
cds compile ?
dans le terminal.

Pour générer un script DDL SQL pour un modèle de domaine contenu dans un fichier nommé schema.cds dans le dossier db du projet CAP, exécutez cette commande dans le répertoire racine du projet :

Code Snippet
1
cds compile db/schema.cds --to sql

Le script DDL SQL de la figure Modèle CDS compilé a été généré de cette manière.

Astuce

Au lieu de saisir la commande ci-dessus dans le terminal, vous pouvez également sélectionner l'entrée suivante dans le menu contextuel du fichier .cds : CDS PreviewPreview as sql. Cela génère la même sortie que la commande de ligne de commande.

Regardez la vidéo pour comprendre les règles qui s'appliquent à la sortie DDL SQL générée.

Par la suite, nous verrons que les entités projetées sont générées sous forme de vues. Nous verrons également que les zones de clé externe sont automatiquement créées dans les tables de base de données générées pour refléter certaines associations qui peuvent être définies entre les entités.

Démonstration et exercice : capturer un Domain Model

Remarque

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

Vous trouverez le code source à partir de la simulation dans les branches main et 2_domain_model du référentiel GitHub suivant :

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

La branche principale fournit le modèle initial pour la démonstration, tandis que la branche 2_domain_model contient également les sources créées dans la simulation.

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 capturer un modèle de domaine.