
EML se compose d'instructions que vous pouvez utiliser pour manipuler les données d'un objet de gestion. Vous utilisez l'instruction READ ENTITIES pour lire les données ; pour toutes les autres opérations, vous utilisez l'instruction MODIFY ENTITIES avec l'option correspondante UPDATE, CREATE ou DELETE.
Remarque
Vous pouvez utiliser les opérations CREATE, UPDATE et DELETE uniquement si la définition de comportement de l'interface d'objet de gestion contient la directive use create, use update ou use delete correspondante. Tenter d'utiliser une opération interdite entraîne une erreur de syntaxe.

Pour lire les données d'un objet de gestion, vous utilisez l'instruction READ ENTITIES. L'instruction comporte deux paramètres importants : une table interne contenant les clés des données que vous voulez lire et une autre contenant les résultats de la requête.
Ces tables internes ont des types de données spéciaux appelés types de définition de comportement dérivés. Le système les crée automatiquement lorsqu'un développeur crée une définition de comportement qui contient une partie ou la totalité des zones de l'objet de gestion ainsi que d'autres zones qui pilotent la manière dont le système traite une demande particulière. Vous déclarez les tables internes à l'aide de la nouvelle option TYPE TABLE FOR <operation> dans l'instruction DATA.

Le type TABLE FOR READ IMPORT contient la ou les zones clés de l'objet de gestion. La structure %control est une structure générée qui indique les zones de l'objet de gestion réellement utilisées dans l'opération en cours. Dans notre exemple, le système remplit automatiquement la structure et vous n'avez pas à vous en soucier.
Le typeTABLE FOR READ RESULT contient toutes les zones de l'objet de gestion. Cette table contient l'ensemble de résultats après l'exécution de l'instruction de lecture.

La table d'importation de lecture contient une colonne pour chaque zone clé de l'objet de gestion, dans ce cas, l'ID de l'agence. Pour lire une agence particulière, vous ajoutez une ligne à la table interne contenant sa clé. Outre la ou les zones clés, la table contient les colonnes %is_draft et %control. Avec %is_draft, vous pouvez indiquer si vous voulez lire les données préliminaires ou les données actives. La structure de contrôle %control est utilisée pour indiquer les zones à lire.
Remarque
Dans notre exemple, nous lisons uniquement les données actives et la structure %control est renseignée par la structure, en fonction de la liste de zones après l'ajout FIELDS.

Lorsque vous traitez un objet métier à l'aide de l'instruction READ ENTITIES OF ou MODIFY ENTITIES OF, vous devez d'abord indiquer le nom de la définition de comportement. Il est suivi du mot-clé ENTITY et du nom de l'entité avec laquelle vous voulez travailler. Si l'entité a un nom d'alias, vous devez l'utiliser ici.
Remarque
Vous ne pouvez pas utiliser le nom d'alias après l'ajout de FO. En effet, d'un point de vue technique, vous indiquez le nom de la définition de comportement à ce stade, et non le nom de l'entité.

L'instruction READ ENTITIES lit les données d'objet de gestion en fonction des clés que vous transmettez dans l'option WITH. Il renvoie le résultat dans la table interne de l'option RESULT. Dans l'instruction, vous pouvez également indiquer les zones de l'objet de gestion dont vous avez besoin. Dans cet exemple, nous avons utilisé l'option ALL FIELDS pour renvoyer toutes les zones. Cependant, si vous n'avez besoin que d'un sous-ensemble des zones, vous pouvez utiliser la variante FIELDS (zone1zone2 …) pour limiter la quantité de données lues.
Remarque
Contrairement à une instruction SELECT, la liste de zones n'est pas séparée par des virgules.

La table de résultats contient toutes les zones de l'objet de gestion, ainsi que la zone de pilotage %is_draft. Si votre instruction READ ENTITIES contient la variante ALL FIELDS, le système fournit les valeurs de toutes les zones. Si vous utilisez la variante FIELDS ( f1 … fn ), seules les zones que vous avez demandées seront renseignées.
Remarque

Si vous voulez mettre à jour des données, vous déclarez une table interne avec TYPE TABLE FOR UPDATE. Il contient toutes les zones de l'objet de gestion ainsi que la structure de contrôle %control. Dans notre variante de l'instruction MODIFY ENTITIES, le système renseigne automatiquement la structure %control.


L'instruction MODIFY ENTITIES met à jour les données dans la mémoire tampon transactionnelle. Dans l'option FIELDS, vous indiquez les zones à modifier. Dans l'option WITH, vous transférez la table interne contenant les données que vous voulez mettre à jour.
Lorsque vous utilisez EML en dehors de l'objet de gestion, vous devez utiliser l'instruction COMMIT ENTITIES pour déclencher la séquence de sauvegarde et rendre les données persistantes dans la base de données.
Remarque
Plus tard dans ce cours, nous utiliserons EML dans l'implémentation de comportement de l'objet de gestion. Dans l'implémentation du comportement, il n'est ni nécessaire ni autorisé de déclencher le commit avec ENTITÉS DE COMMIT.