To continue the story about the notification events integration of Oracle BRM, we will present the integration of Oracle BRM with the JBoss 5.0.2GA Enterprise SOA Platform, which is being used as middleware in a mid-sized mobile operator company. Prior to this notification events integration, we had also used JBoss Enterprise SOA Platform to integrate Oracle BRM with some other third party systems (ERP, CRM, WEB and WAP portal, USSD…,) so it was a logical step to implement this notification event integration in the same way.
As mentioned in the previous article, Oracle BRM is capable of publishing events in the database, through http requests or in some other way, by implementing custom connectors. After some investigation and prototyping, we decided that an http requests approach would be the most suitable in our case. We dismissed a database approach because of the very frequent requests to the DB (it was requested that some specific notification events be provided to third party systems in a matter of seconds.) So, we used the ESB functionality of JBoss and exposed the http interface through an http_gateway.
This configuration allows us to handle a huge number of notification events without any performance dropdowns on the Oracle BRM side. All notification events are stored in a queue through the http_gateway and then handled appropriately using a rule engine. With defining rules in the rule engine, events are properly categorized and sent to specified services for further processing and further third party notifying.
One quite complex task was configuring rules for proper event handling. Our approach was to uniquely create messages according to event types, system ids, and other specific parameters. In this way, we were able to define priorities and specific routes for the messages. Also, we had to use several channels for sending notification events to third party systems. As is the case in many other companies, this mobile operator utilizes some legacy systems which do not have interfaces used in most modern systems. Notification events for those legacy systems are routed to special services, which communicate with them in specified way. For other systems, (SMS Gateway, CRM, ERP, WEB and WAP portal…) we used standard communication methods, such as web services and http interfaces.
In the current configuration, we are able to handle several hundred events per second from Oracle BRM to JBoss middleware. However, because all unwanted events have already been removed by the Oracle BRM Payload Generator EM, up to now there have been no such high loads on the production systems. On the other hand, we have noticed performance issues when communicating with some of the third party systems. For example, ERP is very problematic during the processing of payments, and, during this time, there should be no interference from other systems. So, for handling such bottlenecks, we are also using queues for outbound messages. All messages for those systems are put in a queue and sent out at an appropriate rate (in some cases, only one message every 5 seconds).
Such a design allows us to add new notification events or to extend notification event service to another third party system with a very limited number of changes and without affecting currently running services. In most cases, it requires only changes in the configuration files. For example, sending an additional notification event would require a change in the Oracle BRM payloadconfig.xml file and adding a rule for routing this new message in the JBoss Rule engine.
With the successful implementation of this solution in a production environment, we have proved that the integration of Oracle BRM with third party systems is very efficient and reliable, using Oracle BRM EAI on the billing side and Red Hat JBoss Enterprise SOA Platform with ESB on the middleware side.