En nuestro último artículo, Integración de Oracle BRM con las aplicaciones empresariales, explicamos una forma de implementar una integración de BRM a CRM. La solución sugerida consistía en construir un conector en el lado de BRM y hacer que se conectara a una aplicación de terceros. Sin embargo, también es posible adoptar un enfoque diferente utilizando Colas avanzadas de Oracle, que será el tema de este artículo.
Recientemente, hemos participado en un proyecto en el que el cliente quería una integración "segura" sin necesidad de que fuera en tiempo real; una solución casi en tiempo real sería suficiente, dijeron. Lo que entendemos por integración segura es disponer de una solución que no afecte a ninguna acción realizada, como la compra de un producto o la creación de una factura, por un fallo en el enlace de comunicación (o cualquier otro error) entre Oracle BRM y el software de terceros. Al implementar un conector dm personalizado para la integración de datos, cualquier operación completada sin éxito revertirá toda la acción. Aunque éste puede ser un comportamiento deseado, en este caso no lo era; por lo tanto, decidimos optar por Oracle Advanced Queuing. Hemos identificado que nuestro peor escenario aquí serían los problemas con la base de datos, pero también habría otros numerosos problemas; para empezar, el sistema BRM no funcionaría correctamente.
Otras ventajas que hemos identificado han sido la persistencia de los datos (los eventos se almacenan en la base de datos hasta que la aplicación consumidora está lista para procesar los mensajes en cola) y una tecnología Oracle AQ ya probada.
Hemos implantado con éxito estos cambios en Oracle BRM versión 7.3 y 7.3.1 con Oracle Database 10g (10.2.0.1.0 64bit) y 11g (11.2.0.1.0 64bit) con el componente Oracle Advanced Queuing (AQ).
El proceso de publicación de eventos de negocio de Oracle BRM mediante Oracle Advanced Queuing funciona puede verse en la siguiente figura:
Para desarrollar un proceso de sincronización de este tipo, es necesario dar algunos pasos preliminares. Entre ellos se incluyen:
1. Instalación de EAI Manager.
o Módulo EAI Connection Manager (CM) (incluye los op-codes requeridos por EAI),
o Gestor de datos EAI,
o Módulo externo generador de carga útil (EM) - también llamado servidor Java EAI o eai_js.
2. Una vez completada la instalación de EAI Manager, configure los valores en los archivos de configuración de CM y EAI DM (pin.conf), así como en el archivo de propiedades del generador de carga útil (Infranet.properties).
3. Configure la lista de notificación de eventos que desea publicar editando los archivos de configuración para la notificación de eventos (archivos $BRM_HOME/sys/data/config/pin_notify*) y fusiónelos antes de ejecutar la utilidad load_pin_notify.
4. Defina los eventos en el archivo de configuración del generador de carga útil EM (payloadconfig.xml).
Una vez completados los pasos preliminares, es hora de crear y configurar la cola avanzada de Oracle. Estos son los pasos (el tercer paso puede variar, ya que depende de su configuración):
1. Cree una cola:
pin_ifw_sync_oracle.pl create -l $USER/$PASS@$DB -q TEST_QUEUE -t TEST_QUEUE
2. Cola de prueba (paso opcional):
pin_ifw_sync_oracle.pl test -l $USER/$PASS@$DB -q TEST_QUEUE
3. Acceda a su base de datos como usuario SYSTEM y establezca los privilegios de concesión adecuados para su '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;
A continuación, necesitamos un productor de colas, una aplicación que va a poner en cola los eventos comerciales definidos anteriormente. Desarrollar un módulo productor es similar a crear su aplicación de conector personalizada (véase aquí.) Es necesario implementar un módulo personalizado (biblioteca) y definirlo en el archivo de configuración dm_eai en la entrada "plugin_name".
También hay una forma más sencilla de realizar esta tarea. Si ya ha instalado "Sincronización de cuentas DM", encontrará una implementación de un módulo productor de colas en el gestor de datos dm_ifw_sync. Sin embargo, si elige esta opción, se requieren algunas entradas adicionales en el archivo de configuración dm_eai.
Una vez que tenga un productor de colas en funcionamiento, siga adelante e invoque algunos de sus eventos empresariales para ver si se ponen en cola. Las colas pueden consultarse en la tabla definida en la creación de colas.
Por último, necesitará un consumidor de colas, una aplicación que leerá y pondrá en cola sus mensajes en cola. Existen varias interfaces programáticas disponibles para acceder a Oracle Streams AQ en los siguientes lenguajes de programación: Java (JMS), PL/SQL, C (OCI), Visual Basic (OO4O), AQ XML Servlet (IDAP).
Con la implementación de su cliente personalizado, tendrá un control total sobre la velocidad, el momento y la cantidad de mensajes que se van a procesar. Por ejemplo, durante las horas valle, podrá procesar más datos que durante las horas punta.
Esperamos haberle dado algunas indicaciones válidas sobre cómo llevar a cabo el proceso de integración/sincronización entre Oracle BRM y los sistemas y/o aplicaciones de terceros.