In unserem letzten Artikel, Integration von Oracle BRM in Unternehmensanwendungenhaben wir eine Möglichkeit zur Implementierung einer BRM-zu-CRM-Integration erläutert. Die vorgeschlagene Lösung bestand darin, einen Konnektor auf der BRM-Seite zu erstellen und diesen mit einer Drittanbieteranwendung zu verbinden. Es ist jedoch auch möglich, einen anderen Ansatz zu wählen, indem Sie Oracle Erweiterte Warteschlangendie das Thema dieses Artikels sein wird.
Kürzlich waren wir an einem Projekt beteiligt, bei dem der Kunde eine "sichere" Integration wünschte, die nicht in Echtzeit erfolgen musste. Eine Lösung, die nahezu in Echtzeit arbeitet, würde ausreichen, hieß es. Was wir mit sicherer Integration meinen, ist eine Lösung, bei der eine fehlgeschlagene Kommunikationsverbindung (oder ein anderer Fehler) zwischen Oracle BRM und der Software eines Drittanbieters keine Auswirkungen auf eine durchgeführte Aktion hat, wie z.B. den Kauf eines Produkts oder die Erstellung einer Rechnung. Wenn Sie einen benutzerdefinierten dm-Konnektor für die Datenintegration implementieren, wird bei jedem nicht erfolgreich abgeschlossenen Vorgang die gesamte Aktion zurückgesetzt. Dies kann zwar ein gewünschtes Verhalten sein, aber in diesem Fall war es das nicht. Deshalb haben wir uns für Oracle Advanced Queuing entschieden. Wir haben festgestellt, dass es im schlimmsten Fall zu Datenbankproblemen kommen würde, aber es gäbe auch zahlreiche andere Probleme; zunächst einmal würde das BRM-System nicht richtig funktionieren.
Weitere Vorteile, die wir festgestellt haben, sind die Datenpersistenz (Ereignisse werden in der Datenbank gespeichert, bis die Verbraucheranwendung bereit ist, Nachrichten in der Warteschlange zu verarbeiten) und eine bereits bewährte Oracle AQ-Technologie.
Wir haben diese Änderungen erfolgreich in Oracle BRM Version 7.3 und 7.3.1 mit Oracle Database 10g (10.2.0.1.0 64bit) und 11g (11.2.0.1.0 64bit) mit der Oracle Advanced Queuing (AQ) Komponente implementiert.
Der Prozess der Veröffentlichung von Oracle BRM-Geschäftsereignissen mit Hilfe von Oracle Advanced Queuing ist in der folgenden Abbildung zu sehen:
Um einen solchen Synchronisierungsprozess zu entwickeln, müssen Sie einige vorbereitende Schritte unternehmen. Dazu gehören:
1. EAI Manager Installation.
o EAI Connection Manager (CM) Modul (enthält von EAI benötigte Op-Codes),
o EAI Data Manager,
o Payload Generator External Module (EM) - auch EAI Java Server oder eai_js genannt.
2. Nach Abschluss der EAI Manager-Installation konfigurieren Sie die Werte in den CM- und EAI DM-Konfigurationsdateien (pin.conf) sowie in der Eigenschaftsdatei des Payload-Generators (Infranet.properties).
3. Konfigurieren Sie die Liste der Ereignisbenachrichtigungen, die Sie veröffentlichen möchten, indem Sie die Konfigurationsdateien für die Ereignisbenachrichtigung ($BRM_HOME/sys/data/config/pin_notify*-Dateien) bearbeiten und zusammenführen, bevor Sie das Dienstprogramm load_pin_notify ausführen.
4. Definieren Sie Geschäftsereignisse in der Konfigurationsdatei von Payload Generator EM (payloadconfig.xml).
Nachdem Sie die vorbereitenden Schritte durchgeführt haben, ist es an der Zeit, die Oracle Advanced Queue zu erstellen und zu konfigurieren. Hier sind die Schritte (der dritte Schritt kann variieren, da er von Ihrer Einrichtung abhängt):
1. Warteschlange erstellen:
pin_ifw_sync_oracle.pl create -l $USER/$PASS@$DB -q TEST_QUEUE -t TEST_QUEUE
2. Warteschlange testen (optionaler Schritt):
pin_ifw_sync_oracle.pl test -l $USER/$PASS@$DB -q TEST_QUEUE
3. Melden Sie sich bei Ihrer Datenbank als SYSTEM-Benutzer an und legen Sie die entsprechenden Berechtigungen für Ihren 't_user' fest:
exec dbms_aqadm.grant_queue_privilege('ALL', 'PUSER.TEST_QUEUE', 't_user');
gewähren Sie execute auf puser.pin_event_ty an t_user;
gewähren Sie execute auf sys.dbms_aqin an t_user;
Als nächstes benötigen wir einen Queue-Producer, eine Anwendung, die die zuvor definierten Geschäftsereignisse in die Warteschlange stellt. Die Entwicklung eines Producer-Moduls ähnelt der Entwicklung Ihrer benutzerdefinierten Connector-Anwendung (siehe hier). Es ist notwendig, ein benutzerdefiniertes Modul (Bibliothek) zu implementieren und es in der dm_eai-Konfigurationsdatei unter dem Eintrag "plugin_name" zu definieren.
Es gibt auch einen einfacheren Weg, diese Aufgabe zu bewältigen. Wenn Sie "Account Synchronization DM" bereits installiert haben, dann finden Sie unter dm_ifw_sync data manager eine Implementierung eines Queue Producer-Moduls. Wenn Sie diese Option wählen, sind jedoch einige zusätzliche Einträge in der Konfigurationsdatei dm_eai erforderlich.
Nachdem Sie einen funktionierenden Warteschlangenproduzenten haben, rufen Sie einige Ihrer Geschäftsereignisse auf, um zu sehen, ob sie in die Warteschlange aufgenommen werden. Die Warteschlangen können in der Tabelle abgefragt werden, die bei der Erstellung der Warteschlange definiert wurde.
Schließlich benötigen Sie einen Queue-Consumer, eine Anwendung, die Ihre Nachrichten in der Warteschlange liest und aus der Warteschlange entfernt. Für den Zugriff auf Oracle Streams AQ gibt es mehrere programmatische Schnittstellen in den folgenden Programmiersprachen: Java (JMS), PL/SQL, C (OCI), Visual Basic (OO4O), AQ XML Servlet (IDAP).
Mit Ihrer individuellen Client-Implementierung haben Sie die volle Kontrolle darüber, wie schnell, wann und wie viele Nachrichten verarbeitet werden. So können Sie z. B. in den Nebenzeiten mehr Daten verarbeiten als in den Hauptverkehrszeiten.
Wir hoffen, dass wir Ihnen einige nützliche Hinweise für die Integration/Synchronisation zwischen Oracle BRM und Systemen und/oder Anwendungen von Drittanbietern geben konnten.