Cet article permet de mettre en oeuvre du cross referencing. Le cross referencing permet d'associer un id d'une application à une ou plusieurs autres applications. La correspondance des identifiants est alors centralisée dans la Soa Suite 10.1.3.3 (uniquement).
Exemple:
Une application Siebel gère les contacts par rapport à une application SAP. La concordance des identifiants des contacts entre Siebel et SAP, peut se faire via une table de référence croisée. Oracle Soa Suite et notamment l'ESB permet de mettre en oeuvre un référentiel croisé.
Pour mettre en oeuvre Xref, il faut utiliser dans un premier temps l'outil en ligne de commande Xreftool :
Cet outil permet de créer les tables dans le référentiel de la soa suite.
L'outil XrefTool est présent dans :
/integration/esb/bin
Votre Soa Suite doit être démarrée, et vous devez postionner les variables d'environnement comme suit:
set oc4j_username=oc4jadmin
set oc4j_password=XXXX
Lancer la commande: xreftool.bat -shell
un curseur apparait ">" et attend vos instructions.
la commande "help" permet d'avoir la liste des instructions disponibles.
Pour créer un objet de cross referencing, il faut tout d'abord utiliser:
!! Attention les instructions doivent respecter les minuscules et majuscules !!
createTable clients
ensuite nous allons ajouter des colonnes dans cet objet 'clients' pour associer l'id de Siebel avec l'id de SAP.
addColumns {tableName columnName1,columnName2...}
soit pour notre exemple : addColumns clients siebel,SAP
on peut bien évidemment rajouter des colonnes par la suite ou les supprimer si vos références croisées évoluent dans votre SI.
C'est terminé pour la création du référentiel .... c'est rapide ;)
Ensuite sous le répertoire :
/integration/esb/sql/oracle
Lancer le script SQL : xreftables.sql
en utilisant l'utilisateur oraesb
ce qui donne:
sqlplus oraesb/XXX
@xreftables.sql;
Pour renseigner votre référentiel croisé :
xref:populateXRefRow1M(xrefTableName as string,
xrefReferenceColumnName as string,
xrefReferenceValue as string,
xrefColumnName as string,
xrefValue as string,
mode as string) return xrefValue as string
mode = Add ou Update ou Link ou Any
xref:populateXRefRow(xrefTableName as string,
xrefReferenceColumnName as string,
xrefReferenceValue as string,
xrefColumnName as string,
xrefValue as string,
mode as string) return xrefValue as string
mode = Add ou Update ou Link ou Any
et voici les fonctions de recherche:
xref:lookupXRef(xrefTableName as string,
xrefReferenceColumnName as string,
xrefReferenceValue as string,
xrefColumnName as string,
needAnException as boolean) return as string
xref:lookupXRef1M(xrefTableName as string,
xrefReferenceColumnName as string,
xrefReferenceValue as string,
xrefColumnName as string) return as node-set
Je vous propose un exemple BPEL à télécharger
ICI qui utilise la fonction xref:populateXRefRow
pour rappel, les functions sont aussi accéssibles dans Oracle ESB.