Dans notre dernier article, Intégration d'Oracle BRM aux applications d'entrepriseDans l'article précédent, nous avons expliqué une façon de mettre en œuvre une intégration BRM-CRM. La solution proposée consistait à créer un connecteur du côté du BRM et à le connecter à une application tierce. Cependant, il est également possible d'adopter une approche différente en utilisant la technologie Oracle File d'attente avancéequi fera l'objet de cet article.
Récemment, nous avons été impliqués dans un projet où le client souhaitait une intégration "sûre" sans avoir besoin d'être en temps réel ; une solution en temps quasi réel suffirait, selon lui. Par intégration sûre, nous entendons une solution qui n'affectera aucune action effectuée, telle que l'achat d'un produit ou la création d'une facture, en raison d'un lien de communication défaillant (ou de toute autre erreur) entre Oracle BRM et un logiciel tiers. Lors de la mise en œuvre d'un connecteur dm personnalisé pour l'intégration de données, toute opération non réussie annulera l'ensemble de l'action. Bien que ce comportement puisse être souhaitable, il ne l'était pas dans ce cas ; c'est pourquoi nous avons décidé d'opter pour Oracle Advanced Queuing. Nous avons identifié que notre pire scénario ici serait des problèmes de base de données, mais il y aurait également de nombreux autres problèmes ; pour commencer, le système BRM ne fonctionnerait pas correctement.
Les autres avantages que nous avons identifiés sont la persistance des données (les événements sont stockés dans la base de données jusqu'à ce que l'application consommateur soit prête à traiter les messages en file d'attente) et une technologie Oracle AQ qui a déjà fait ses preuves.
Nous avons déployé avec succès ces changements dans les versions 7.3 et 7.3.1 de Oracle BRM avec Oracle Database 10g (10.2.0.1.0 64bit) et 11g (11.2.0.1.0 64bit) avec le composant Oracle Advanced Queuing (AQ).
Le processus de publication des formations Oracle BRM à l'aide de Oracle Advanced Queuing works est illustré dans la figure ci-dessous :
Pour développer un tel processus de synchronisation, il est nécessaire de prendre quelques mesures préliminaires. Il s'agit notamment de
1. Installation du gestionnaire EAI.
o Module EAI Connection Manager (CM) (comprend les op-codes requis par l'EAI),
o Gestionnaire de données EAI,
o Module externe du générateur de charge utile (EM) - également appelé serveur Java EAI ou eai_js.
2. Une fois l'installation de l'EAI Manager terminée, configurez les valeurs dans les fichiers de configuration du CM et de l'EAI DM (pin.conf), ainsi que dans le fichier de propriétés du générateur de charge utile (Infranet.properties).
3. Configurez la liste de notification d'événements que vous souhaitez publier en modifiant les fichiers de configuration pour la notification d'événements (fichiers $BRM_HOME/sys/data/config/pin_notify*) et fusionnez-les avant d'exécuter l'utilitaire load_pin_notify.
4. Définissez les événements commerciaux dans le fichier de configuration du générateur de charge utile EM (payloadconfig.xml).
Une fois les étapes préliminaires terminées, il est temps de créer et de configurer la file d'attente avancée Oracle. Voici les étapes à suivre (la troisième étape peut varier, car elle dépend de votre configuration) :
1. Créez une file d'attente :
pin_ifw_sync_oracle.pl create -l $USER/$PASS@$DB -q TEST_QUEUE -t TEST_QUEUE
2. Test de la file d'attente (étape facultative) :
pin_ifw_sync_oracle.pl test -l $USER/$PASS@$DB -q TEST_QUEUE
3. Connectez-vous à votre base de données en tant qu'utilisateur SYSTEM et définissez les privilèges d'octroi appropriés pour votre "t_user" :
exec dbms_aqadm.grant_queue_privilege('ALL', 'PUSER.TEST_QUEUE', 't_user') ;
grant execute on puser.pin_event_ty to t_user ;
grant execute on sys.dbms_aqin to t_user ;
Ensuite, nous avons besoin d'un producteur de file d'attente, une application qui va mettre en file d'attente les événements commerciaux définis précédemment. Il est nécessaire d'implémenter un module personnalisé (bibliothèque) et de le définir dans le fichier de configuration dm_eai sous l'entrée "plugin_name".
Il existe également une méthode plus simple pour réaliser cette tâche. Si vous avez déjà installé "Account Synchronization DM", vous trouverez une implémentation d'un module de production de file d'attente sous dm_ifw_sync data manager. Cependant, si vous choisissez cette option, quelques entrées supplémentaires sont nécessaires dans le fichier de configuration dm_eai.
Une fois que vous avez un producteur de files d'attente fonctionnel, invoquez certains de vos événements commerciaux pour voir s'ils sont mis en file d'attente. Les files d'attente peuvent être interrogées dans la table définie lors de la création de la file d'attente.
Enfin, vous aurez besoin d'un consommateur de file d'attente, c'est-à-dire d'une application qui lira et désélectionnera les messages mis en file d'attente. Plusieurs interfaces de programmation sont disponibles pour accéder à Oracle Streams AQ dans les langages de programmation suivants : Java (JMS), PL/SQL, C (OCI), Visual Basic (OO4O), AQ XML Servlet (IDAP).
Grâce à la mise en œuvre de votre client personnalisé, vous aurez un contrôle total sur la vitesse, le moment et le nombre de messages à traiter. Par exemple, pendant les heures creuses, vous pouvez traiter plus de données que pendant les heures de pointe.
Nous espérons vous avoir donné quelques indications valables sur la manière de procéder à l'intégration/synchronisation entre Oracle BRM et des systèmes et/ou applications tiers.