Sources de données
MEL peut accéder à différentes sources de données grâce à des préfixes spéciaux. Chaque préfixe vous donne accès à un contexte particulier.
Comprendre les sources
Quand vous écrivez une expression MEL, vous pouvez référencer des données provenant de différents endroits. Ces références commencent par un préfixe qui indique la source des données.
| Préfixe | Description | Exemple |
|---|---|---|
$form | Données du formulaire en cours | $form.status |
$object | Objet actuellement affiché ou édité | $object.id |
$selector | Données du sélecteur (widgets) | $selector.beneficiary |
$user | Utilisateur actuellement sélectionné | $user.role |
$selfUser | ID de l'utilisateur connecté | $selfUser |
$context | Contexte d'exécution global | $context.date |
Bon à savoir
Les sources disponibles dépendent du contexte où vous utilisez MEL. Par exemple, $form n'est disponible que lorsque vous êtes dans un formulaire.
$form - Données du formulaire
Le préfixe $form vous donne accès aux données saisies dans le formulaire courant. C'est particulièrement utile pour créer des filtres dynamiques basés sur les choix de l'utilisateur.
Par exemple, pour filtrer les éléments dont le statut correspond à celui sélectionné dans le formulaire :
{ "status": { "$eq": "$form.status" } }Ou pour filtrer par plusieurs types de contrats sélectionnés :
{ "contractType": { "$in": "$form.selectedTypes" } }Cas d'usage typique
Utilisez $form quand vous créez des filtres de recherche ou des sélecteurs conditionnels dans vos formulaires.
$object - Objet courant
Le préfixe $object fait référence à l'objet actuellement affiché ou édité. C'est utile pour créer des relations entre objets.
Par exemple, pour trouver tous les éléments liés à l'objet courant :
{ "parentId": { "$eq": "$object.id" } }Ou pour filtrer les commandes du même projet :
{ "project": { "$eq": "$object.project" } }Cas d'usage typique
Utilisez $object pour afficher des données liées à l'élément que vous consultez, comme les sous-éléments ou les éléments du même groupe.
$selector - Sélecteur de données
Le préfixe $selector est utilisé principalement dans les widgets et les composants de sélection. Il référence les données actuellement filtrées ou sélectionnées.
Exemple typique dans un widget de tableau de bord :
{
"$and": [
{ "$selector.beneficiary": { "$eq": 2 } },
{ "$selector.status": { "$eq": "validated" } }
]
}Note technique
Le préfixe $selector est souvent retiré automatiquement lors de l'évaluation finale. Les chemins comme $selector.statussont transformés en status pour la requête réelle.
$user - Utilisateur courant
Le préfixe $user donne accès aux informations de l'utilisateur actuellement sélectionné ou référencé dans le contexte.
Par exemple, pour filtrer par le rôle de l'utilisateur :
{ "requiredRole": { "$eq": "$user.role" } }Vous pouvez accéder à diverses propriétés de l'utilisateur comme son rôle, son équipe, ou ses permissions.
$selfUser - ID utilisateur connecté
$selfUser est une valeur spéciale qui représente l'ID de l'utilisateur actuellement connecté à l'application. C'est l'une des références les plus utilisées dans MEL.
Cas d'usage très courant : afficher uniquement les tâches assignées à l'utilisateur connecté :
{ "assignedTo": { "$eq": "$selfUser" } }Ou vérifier si l'utilisateur connecté fait partie d'une liste :
{ "assignedTo": { "$in": ["$selfUser"] } }Transformation automatique
Lors de l'évaluation, $selfUser est automatiquement remplacé par l'ID réel de l'utilisateur, avec un préfixe user:. Par exemple, $selfUser devient user:1234567890.
$context - Contexte d'exécution
Le préfixe $context donne accès à des informations globales sur le contexte d'exécution, comme la date actuelle ou d'autres métadonnées de l'environnement.
Par exemple, pour filtrer les éléments créés aujourd'hui :
{ "createdAt": { "$eq": "$context.date" } }Chemins profonds
MEL supporte la navigation dans des structures de données imbriquées grâce aux chemins profonds. Utilisez des points pour accéder aux propriétés imbriquées.
Par exemple, pour filtrer par le nom du fournisseur d'une commande :
{ "$form.order.provider.name": { "$eq": "NETKIN" } }Ce chemin se décompose ainsi :
$form- la source (formulaire)order- le champ commande dans le formulaireprovider- le fournisseur de la commandename- le nom du fournisseur
MEL résout automatiquement ces chemins en naviguant récursivement dans les données et en chargeant les objets référencés si nécessaire.
Attention
Les chemins trop profonds peuvent impacter les performances. Si possible, limitez-vous à 3-4 niveaux de profondeur.
Prochaine étape
Vous savez maintenant d'où viennent vos données. L'étape suivante est de découvrir tous les opérateurs de comparaison disponibles.