Osb 12c – gestion des cross-references (XREF)

Dans la version 12c de l’OSB, la gestion des cross-references (XREF) a évolué et est désormais totalement intégrée de façon native.
Indispensable pour gérer des référentiels de valeurs entre différents systèmes du SI, voyons comment les implémenter et les utiliser dans l’OSB.
 
 
 

———————————-
|SYSTEME 1 |SYSTEME 2 |SYSTEME 3 |
———————————-
|AAAA11    |BB34BB    |CC56CC    |
|AAAA22    |BB45BB    |CC89CC    |
|AAAA23    |BB53BB    |CC53CC    |
|AAAA89    |BB54BB    |CC12CC    |
|AAAA65    |BB23BB    |CC90CC    |
———————————-

1-Introduction

Soit un Système d’Informations intégrant via l’OSB 3 applications APP1, APP2 et APP3.
Chaque application gère en interne des identifiants de clients de la façon suivante :

————————————
|APP1    |APP2   |APP3   |OSB      |
————————————
|CLI_001 |000001 |c00001 |fjs093Rf |
|CLI_002 |000002 |c00002 |vjdohf90 |
|CLI_003 |000003 |c00003 |c0fzjnf1 |
————————————

Comment gérer ces identifiants au sein de l’OSB ?!

2-Description générale

Les cross-références (ou XREF) gérées par l’OSB permettent de faire le lien et de manipuler des valeurs « référentielles » provenant de différentes systèmes.
Par défaut, ces valeurs seront stockées en base de données dans la table « XREF_DATA » accessible depuis la datasource « jdbc/SOADataSource ».
Il est toutefois possible de définir ses propres tables et sa propre dataSource.

3-Initialisation des XREF

Après avoir initialisé son projet OSB, créer le fichier XREF (Clic droit -> New -> Cross Reference(XREF)).
Ouvrir la « Xref » ainsi créée et initialiser avec le nom des différents systèmes qui composent votre SI (dans notre exemple APP1, APP2, APP3, OSB).

initialisation Xref

Il est important de renseigner l’exhaustivité des systèmes concernés par les XREF car le mécanisme d’insertion n’est pas dynamique et occasionne des erreurs en cas de système inconnu.

4-Utilisation des XREF

Une fois le fichier de cross-références initialisé, 3 opérations principales sont réalisables sur les cross-references :
– l’insertion (populate)
– la recherche (lookup)
– la suppression (delete)
  4.1-Insertion
Dans notre exemple, nous utiliserons la fonction « xref:populateXRefRow » qui permet de générer une cross-référence unitairement.
A noter qu’il existe également la fonction « xref:populateXRefRow1M » qui permet de réaliser une association multiple.
La fonction « xref:populateXRefRow » prend 6 paramètres en entrée :
– xrefLocation : le chemin absolu de notre fichier de cross-reference.
– xrefReferenceColumnName : le nom de la colonne de référence.
– xrefReferenceValue : la valeur associée à cette colonne de référence.
– xrefColumnName : le nom de la colonne à associer à la colonne de référence.
– xrefValue : la valeur associée à la colonne.
– mode:
ADD : permet d’ajouter une nouvelle cross-reference
LINK : permet de lier une nouvelle valeur à une cross-reference existante
UPDATE: permet de mettre à jour une liaison existante.
Ici, nous associons la valeur « CLI_001 » pour la système « APP1 » à la valeur « fjs093Rf » pour l’OSB.

xref:populateXRefRow(‘/XRef/Xref/MesXrefs.xref’, ‘APP1’, ‘CLI_001’, ‘OSB’, ‘fjs093Rf’, ‘ADD’)

Il est ensuite possible de mettre à jour la valeur précédemment insérée :

xref:populateXRefRow(‘/XRef/Xref/MesXrefs.xref’, ‘APP1’, ‘CLI_001’, ‘APP1’, ‘CLI_111’, ‘UPDATE’)

Ou encore d’associer une nouvelle valeur pour un autre système pour (OSB,fjs093Rf)

xref:populateXRefRow(‘/XRef/Xref/MesXrefs.xref’, ‘OSB’, ‘fjs093Rf’, ‘APP2’, ‘000001’, ‘LINK’)

  4.2-Recherche
Afin de retrouver les valeurs croisées pour chaque système, nous allons utiliser la fonction de recherche « xref:lookupXRef ».
Celle-ci prend 5 paramètres en entrée :
– xrefLocation : le chemin absolu de notre fichier de cross-reference.
– xrefReferenceColumnName : le nom de la colonne de référence.
– xrefReferenceValue : la valeur associée à cette colonne de référence.
– xrefColumnName : le nom de la colonne pour laquelle nous voulons récupérer la valeur.
– needAnException : si positionnée à ‘true’ renvoie une erreur dans le cas où aucun résultat n’est trouvé, si ‘false’, une chaîne vide est retournée.
Dans notre exemple, nous cherchons la valeur associée à ‘APP1’ par rapport au système ‘OSB’ et la valeur ‘fjs093Rf’

xref:lookupXRef(« /XRef/Xref/MesXrefs.xref », »OSB », »fjs093Rf », »APP1″,false())

=> retourne « CLI_111 » par rapport à notre exemple précédent.
  4.3-Suppression
Finalement, la suppression d’une valeur se fera à l’aide de la fonction « xref:markForDelete ».
Lors de l’utilisation de cette fonction, les valeurs stockées dans la table « XREF_DATA » sont déplacées vers la table « XREF_DELETED_DATA ».
Cette fonction prend 3 paramètres en entrée :
– xrefTableName : le chemin absolu de notre fichier de cross-reference.
– xrefColumnName : le nom de la colonne de référence.
– xrefValueToDelete : la valeur à supprimer.
Dans notre exemple, nous supprimons la valeur ‘CLI_111’ associée à ‘APP1’.

xref:markForDelete(« /XRef/Xref/MesXrefs.xref », »APP1″, »CLI_111″)

Pour tout complément, se référer à la documentation officielle Oracle.