L'intégrité des données
Comment garantir l’intégrité de mes données ?
Mendix prend en charge différentes méthodes pour garantir l'intégrité des données de votre application :
- Types de données – s’assurer que seuls les types de données valides peuvent être stockés
- Règles de validation – valider si les données sont uniques, spécifiées et comprises dans une plage
- Gestionnaires d'événements – utiliser des microflux pour fournir une logique personnalisée afin de valider les données
- Règles d'accès – s’assurer que seuls les utilisateurs autorisés peuvent accéder aux données ou les modifier
- Intégrité référentielle – s’assurer que les données sont stockées avec les données associées requises
Quels types de données puis-je utiliser dans Mendix?
Les types de données définissent le type de données pouvant être stockées dans un attribut. Le type garantit, par exemple, que les champs de texte ne contiennent que du texte et que les champs numériques ne contiennent que des nombres.
Vous pouvez utiliser les types suivants pour vos attributs :
- Numéro automatique – un numéro généré automatiquement
- binaire – données binaires
- Boolean – vrai ou faux
- Date et heure – un moment précis
- Décimal – un nombre positif ou négatif
- Énumération – une valeur d’un ensemble prédéfini de valeurs
- Chaîne hachéeg – la valeur de hachage d’une chaîne
- Entier – un nombre entier de 32 bits
- Long – un nombre entier de 64 bits
- Chaîne – texte contenant des lettres, des chiffres, des espaces et d’autres caractères

Pour plus de détails, voir Attributs dans le Mendix Guide de Studio Pro.
Quelles règles de validation puis-je utiliser dans Mendix?
Les règles de validation précisent les règles auxquelles vos données doivent se conformer. Si vos données ne respectent pas les règles spécifiées, vous recevrez une erreur lorsque vous tenterez de les enregistrer.

Selon le type de règle, cela sera géré par le Mendix Exécution ou par la base de données.
Comment utiliser les gestionnaires d'événements dans Mendix?
Les gestionnaires d'événements vous permettent d'exécuter une logique avant ou après certains événements. Il existe de nombreux cas d'utilisation pour cela, notamment les suivants :
- Définition des valeurs par défaut lors de la création d'un objet – si vous souhaitez initialiser un nouvel objet (par exemple, un objet avec des valeurs par défaut non constantes), vous pouvez utiliser un événement avant création
- Garder une piste d'audit – il est parfois nécessaire de conserver une trace de toutes les modifications apportées aux données, et les événements ultérieurs vous permettent de le faire en stockant toutes les modifications dans un objet de piste d'audit (le Piste d'audit module dans le Mendix (La place de marché fournit exactement cette fonctionnalité)
- Validation des modifications de données – les événements antérieurs peuvent être utilisés pour déclencher un microflux qui valide les modifications de données
Pour définir des gestionnaires d’événements sur toutes les entités de votre application, vous pouvez utiliser l’ Mendix API Java. Par exemple, pour définir un écouteur d'événement avant validation pour toutes les entités, utilisez cette méthode : Core.getListenersRegistry().registerAfterCommitListener.

Comment puis-je garantir qu’un attribut ne peut pas contenir de valeurs en double ?
Des règles de validation uniques permettent de garantir qu'un attribut ne puisse contenir qu'une seule valeur spécifique. Même si vous utilisez la scalabilité horizontale et exécutez votre application avec plusieurs instances, si plusieurs utilisateurs utilisent simultanément la même page pour modifier des données ou si vous effectuez plusieurs appels simultanés à une API fournie par votre application, une règle de validation unique garantit que votre attribut possède une valeur unique.
Des règles de validation uniques sont automatiquement créées sur vos tables et colonnes dans la base de données de l'application pour garantir que les valeurs en double ne sont jamais possibles.
Comment puis-je configurer les règles d’accès ?
Un aspect majeur de l'intégrité des données concerne qui est autorisé à modifier quelles données, donc l'autorisation des données est une fonctionnalité intégrée du Mendix Plateforme. Les rôles des utilisateurs peuvent être directement liés à ce que ces rôles sont autorisés à faire avec les données d'un utilisateur final.
Les aspects des droits d'accès que vous pouvez définir sur les entités incluent les suivants :
- Qui peut lire ou modifier les entités
- Qui peut lire ou modifier les attributs
- Qui peut créer ou supprimer des entités
Vous pouvez également utiliser des contraintes XPath pour définir ce que l'on appelle sécurité au niveau des lignes, qui définit les objets qu'un utilisateur est autorisé à voir. Cela peut être utilisé pour garantir que les clients ne peuvent voir que leurs données, que les agents chargés du traitement des dossiers ne peuvent voir que les données liées à leurs dossiers et que les locataires ont accès uniquement à leurs données de locataire dans une application multilocataire.
Comment fonctionne l'intégrité référentielle dans Mendix?
L'intégrité référentielle est ajoutée à l'aide des propriétés de comportement de suppression. Le comportement de suppression définit ce qui doit arriver à l'objet associé lorsqu'un objet est supprimé. Les options suivantes peuvent être configurées pour chaque extrémité de l'association.
| Valeur | Description |
|---|---|
| Supprimer l'objet {nom de l'entité} mais conserver l'objet(s) {nom de l'autre entité} | Lorsqu'un objet est supprimé, les objets associés ne sont pas supprimés. |
| Supprimez également l'objet {nom de l'entité} et les objets {nom de l'autre entité} | Lorsqu'un objet est supprimé, les objets associés sont également supprimés. |
| Supprimer l'objet {nom de l'entité} uniquement s'il ne contient aucun objet {nom de l'autre entité} | Un objet ne peut être supprimé que s'il n'est associé à aucun autre objet. |
Voici deux exemples:
- Supprimer l'objet {nom de l'entité} mais conserver l'objet(s) {nom de l'autre entité} (valeur par défaut) – utilisé si vous souhaitez supprimer tout élément associé Profil_client lorsqu'un Le client est supprimé :

- Supprimer l'objet {nom de l'entité} uniquement s'il ne contient aucun objet {nom de l'autre entité} – utilisé si vous souhaitez pouvoir supprimer un Le client seulement s'il n'est associé à aucun Commande:
