前回の記事で Oracle BRMとエンタープライズ・アプリケーションの統合BRMからCRMへの統合を実現する一つの方法について説明しました。提案された解決策は、BRM側でコネクタを構築し、それをサードパーティーのアプリケーションに接続させることでした。しかし、それとは異なるアプローチとして、以下のような方法もあります。 Oracle アドバンスドキューイングを、今回のテーマとします。
最近、あるプロジェクトで、リアルタイムである必要はなく、ほぼリアルタイムのソリューションで十分であるとのことで、「安全な」統合を求めるお客様がいらっしゃいました。安全な統合とは、Oracle BRMとサードパーティーのソフトウェア間の通信リンクの失敗(またはその他のエラー)によって、商品の購入や請求書の作成などのアクションに影響が出ないようなソリューションのことを指します。データ統合のためにカスタムdmコネクタを実装する場合、失敗して完了したオペレーションは、アクション全体をロールバックすることになります。これは望ましい動作ですが、今回のケースではそうではなかったので、Oracle Advanced Queuingを採用することにしました。最悪のシナリオはデータベースの問題ですが、それ以外にも多くの問題があります。
その他、データの永続性(コンシューマーアプリケーションがキューイングされたメッセージを処理する準備ができるまで、イベントはデータベースに保存される)、すでに実績のあるOracle AQ技術などの利点も確認されています。
Oracle BRMのバージョン7.3と7.3.1に、Oracle Database 10g (10.2.0.1.0 64bit)と11g (11.2.0.1.0 64bit)とOracle Advanced Queuing (AQ) componentで、これらの変更の導入は成功しています。
Oracle Advanced Queuing worksでOracle BRMのビジネスイベントを公開するまでの流れは、下図のようになります:
このような同期プロセスを開発するためには、いくつかの予備的なステップを踏む必要がある。これらは以下のようなものです:
1.EAI Managerのインストール。
o EAI Connection Manager(CM)モジュール(EAIが必要とするオペコードを含む)、
o EAI Data Manager、
o Payload Generator External Module (EM) - EAI Java Server または eai_js とも呼ばれます。
2.EAI Managerのインストール完了後、CMおよびEAI DMの設定ファイル(pin.conf)、およびPayload Generatorのプロパティファイル(Infranet.properties)に値を設定する。
3.イベント通知用設定ファイル($BRM_HOME/sys/data/config/pin_notify*ファイル)を編集して公開したいイベント通知リストを設定し、load_pin_notify ユーティリティを実行する前にマージしてください。
4.Payload Generator EMの設定ファイル(payloadconfig.xml)でビジネスイベントを定義する。
予備ステップが完了したら、いよいよOracle Advanced Queueの作成と設定を行います。以下はその手順です(3つ目の手順は設定によって異なるため、異なる場合があります):
1.キューを作成します:
pin_ifw_sync_oracle.pl create -l $USER/$PASS@$DB -q TEST_QUEUE -t TEST_QUEUE
2.テストキュー(オプションステップ):
pin_ifw_sync_oracle.pl test -l $USER/$PASS@$DB -q TEST_QUEUE
3.SYSTEMユーザーとしてデータベースにログインし、't_user'に適切なグラント権限を設定します:
exec dbms_aqadm.grant_queue_privilege('ALL', 'PUSER.TEST_QUEUE', 't_user');
t_userにpuser.pin_event_tyの実行権限を付与します;
sys.dbms_aqin を t_user に実行権限を付与します;
次に、キュー・プロデューサーが必要です。これは、先に定義したビジネス・イベントをエンキューするためのアプリケーションです。カスタムモジュール(ライブラリ)を実装し、dm_eai設定ファイルの "plugin_name "の項目で定義する必要があります。
この作業を行うには、もっと簡単な方法もあります。アカウント同期DM」をインストール済みであれば、dm_ifw_syncデータマネージャの下にキュー・プロデューサー・モジュールの実装があります。しかし、このオプションを選択した場合、dm_eai設定ファイルにいくつかの追加項目が必要になります。
キュー・プロデューサーの動作が確認できたら、いくつかのビジネス・イベントを呼び出して、それらがキューに入るかどうかを確認してみてください。キューは、キューの作成時に定義されたテーブルで照会することができます。
最後に、キューコンシューマ、つまりキューに入れられたメッセージの読み取りとデキューを行うアプリケーションが必要です。Oracle Streams AQにアクセスするために、以下のプログラミング言語で利用可能ないくつかのプログラムインターフェイスが用意されています:Java(JMS)、PL/SQL、C(OCI)、Visual Basic(OO4O)、AQ XML Servlet(IDAP)です。
カスタムクライアントの実装により、いつ、どれくらいのスピードで、どれくらいの数のメッセージを処理するか、完全にコントロールすることができます。例えば、オフピーク時には、ピーク時よりも多くのデータを処理することができます。
Oracle BRMとサードパーティーのシステム・アプリケーションとの連携・同期について、いくつかの有効なヒントを得ることができたと思われます。