В нашей последней статье, Интеграция Oracle BRM с корпоративными приложениямиМы рассказали об одном из способов реализации интеграции между BRM и CRM. Предлагаемое решение заключалось в создании коннектора на стороне BRM и его подключении к стороннему приложению. Однако можно использовать и другой подход, используя Oracle Advanced Queuing, о котором пойдет речь в данной статье.
Недавно мы участвовали в проекте, где заказчик хотел получить "безопасную" интеграцию без необходимости работы в режиме реального времени; по их словам, достаточно будет решения, работающего практически в режиме реального времени. Под безопасной интеграцией мы понимаем такое решение, которое не повлияет на выполнение каких-либо действий, таких как покупка продукта или создание счета, в случае сбоя канала связи (или любой другой ошибки) между Oracle BRM и сторонним программным обеспечением. При реализации пользовательского коннектора dm для интеграции данных любая неудачно завершенная операция приведет к откату всего действия. Хотя это может быть желаемым поведением, в данном случае это было не так; поэтому мы решили использовать Oracle Advanced Queuing. Мы определили, что наихудшим сценарием здесь будут проблемы с базой данных, но также возникнет множество других проблем; во-первых, система BRM не будет функционировать должным образом.
Другими преимуществами, которые мы выявили, были персистентность данных (события хранятся в базе данных до тех пор, пока приложение-потребитель не будет готово обработать поставленные в очередь сообщения) и уже проверенная технология 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).
Процесс публикации бизнес-событий Oracle BRM с помощью Oracle Advanced Queuing works можно увидеть на рисунке ниже:
Чтобы разработать такой процесс синхронизации, необходимо предпринять некоторые предварительные шаги. К ним относятся:
1. Установка EAI Manager.
o Модуль EAI Connection Manager (CM) (включает оп-коды, необходимые EAI),
o EAI Data Manager,
o Внешний модуль генератора полезной нагрузки (EM) - также называется EAI Java Server или eai_js.
2. После завершения установки EAI Manager настройте значения в файлах конфигурации CM и EAI DM (pin.conf), а также в файле свойств генератора полезной нагрузки (Infranet.properties).
3. Настройте список уведомлений о событиях, который вы хотите опубликовать, отредактировав файлы конфигурации для уведомлений о событиях (файлы $BRM_HOME/sys/data/config/pin_notify*) и объедините их перед запуском утилиты load_pin_notify.
4. Определите бизнес-события в файле конфигурации Payload Generator EM (payloadconfig.xml).
После выполнения предварительных шагов настало время создать и настроить Oracle Advanced Queue. Вот шаги (третий шаг может отличаться, так как зависит от вашей настройки):
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');
grant execute on puser.pin_event_ty to t_user;
grant execute on sys.dbms_aqin to t_user;
Далее нам нужен производитель очереди - приложение, которое будет регистрировать бизнес-события, определенные ранее. Разработка модуля производителя аналогична созданию пользовательского приложения коннектора (см. здесь). Необходимо реализовать пользовательский модуль (библиотеку) и определить его в конфигурационном файле dm_eai в записи "plugin_name".
Есть и более простой способ решения этой задачи. Если вы уже установили "Account Synchronization DM", то в разделе dm_ifw_sync data manager вы найдете реализацию модуля производителя очередей. Однако, если вы выберете этот вариант, в конфигурационном файле dm_eai потребуется несколько дополнительных записей.
После того, как у вас есть работающий производитель очередей, перейдите к вызову некоторых бизнес-событий и посмотрите, будут ли они поставлены в очередь. Очереди можно запросить в таблице, определенной при создании очереди.
Наконец, вам понадобится потребитель очереди - приложение, которое будет читать и удалять сообщения из очереди. Существует несколько программных интерфейсов для доступа к Oracle Streams AQ на следующих языках программирования: Java (JMS), PL/SQL, C (OCI), Visual Basic (OO4O), AQ XML Servlet (IDAP).
При реализации пользовательского клиента у вас будет полный контроль над тем, как быстро, когда и сколько сообщений будет обработано. Например, в непиковые часы вы можете обрабатывать больше данных, чем в пиковые часы.
Надеемся, что мы дали вам несколько полезных советов о том, как пройти процесс интеграции/синхронизации между Oracle BRM и сторонними системами и/или приложениями.