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 :
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 :
Lancer le script SQL : xreftables.sql
en utilisant l'utilisateur oraesb
ce qui donne:
sqlplus oraesb/XXX
@xreftables.sql;
Ensuite vous pouvez utiliser l'ensemble des fonctions "XPath Extension Function" proposée dans l'ESB ou dans BPEL.
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
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
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
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
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.
Aucun commentaire:
Enregistrer un commentaire