Mise en correspondance des modèles et suivi des associations dans le magasin de données Cúram

Dans le scénario suivant, les clients ont demandé que le moteur de mappage soit utilisé pour remplir un formulaire PDF qui ressemble au formulaire suivant :

Tableau 1. Modèle de formulaire PDF
Nom Nom de l'employeur Date de début Salaire annuel avant impôts
Pat The Gingerman Bakery 02/01/2004 30000
Grace Jarmin Pharmaceutical 03/01/2002 50000

Chaque zone de ce formulaire PDF possède une identité unique. Par exemple, la zone contenant le nom, Pat, est identifiée comme Job0.Name. La zone contenant 30000 est identifiée comme Job0.Salary.

Réfléchissez à la méthode de stockage des informations issues de l'admission dans le magasin de données Cúram :

Figure 1. Revenu dans le magasin de données Cúram

Pour pouvoir remplir la zone Name du formulaire PDF ci-dessus, la spécification de mappage doit contenir une règle qui indique que pour chaque revenu (Income) appartenant à une personne (Person), le prénom (firstName) de la personne est spécifié dans la zone Name. En langage de mappage, cette règle peut être exprimée comme suit :

1 <map-entity source="Person">        
2  <map-entity source="Income">
3    <target-entity name="Job" id="JobTarget">
4      <map-attribute from="firstName" to="Name" entity="Person"/>
5      <map-attribute from="employerName" to="Employer"/>
6      …
7    </target-entity>
8  </map-entity>
9 </map-entity>

Cette règle de mappage peut être paraphrasée comme suit : "Pour chaque entité Income contenue dans une entité Person, créer une entité Target de type Job. L'attribut Name de l'entité Job est mappée à partir de l'attribut firstName de l'entité Person qui contient l'entité Income en cours de mappage."

Remarquez l'utilisation de la syntaxe entity="Person" à la ligne 4 pour indiquer que les attributs firstName proviennent de l'entité Person, et non de l'entité Income. Un exemple plus complexe de ce type de spécification de mappage implique de suivre des associations ou des liens d'une entité à une autre.