One of the main features that has become available with the JDeveloper 11g Technology Preview 4 that was released a few days back, is the BAM component. BAM stands for Business Activity Manager. This component monitors various types of business activities, reports on them and sends out alerts when thresholds are reached or surpassed. With BAM, end users – operators, operational managers and to some extend analysts and tactical managers – get a (near) real-time overview of the state of ongoing affairs.
In this an some articles to come, we will take a closer look at what BAM is and how we can get it up and running with this Technology Preview – for example in conjunction with BPEL and Mediator Components (ESB services).
BAM sometimes seems to have a substantial overlap with (traditional) BI. However, you should see BAM as a much shorter term monitor (seconds to days at most) than regular BI as well as much more oriented at ongoing processes and immediate resource usage. Of course there is a fine line, a gray area and some overlap so one should not be set up without giving consideration to the other.
Business Activity can be regarded in a very business like manner – dealing with Business Events such as Processing of an Order, Servicing of Customer, Producing of a Product, Adding new Stock to the Inventory and so on and so forth. The Events BAM deals with can be more fine grained than this, including such details as: time to pick up the ringing phone, delay between receiving and answering the email, allocating a task to a staff member, the walk of a patient from the front desk to a particular department etc.
BAM can also be used to keep track of pure data events – changes in data(base) records, such as raising a salary, updating the catalog price of a product, changing the status of invoice records etc.
The third category of ‘business activities’ BAM is readily applied for is ‘process meta-data’. The execution of processes happens according to certain procedures or predefined flows. And hopefully within the boundaries of the expectations and limits for time and resource usage. Using BAM, we can get a clear insight in the time required for individual steps in process-instances – both the actual time spent and the overall duration – as well as other resource usage. BAM can help aggregate these findings over all process-instances in a certain period of time, associated with specific staff members or other resources, thus helping us find bottlenecks and sub-standard performance.
Where to get the Business Activity Data from?
Since BAM provides us with insight in Business Activities – process and task execution, data events and activity meta-data – it somehow has to collect details on these activities. This can be regarded as a two step process – with half of the work being done on the BAM side.
In the Oracle BAM component – all is done through a web application by the way – we define Data Objects, structures of data that form the basis of the Reports, Presentations and Alerts we will subsequently set up in BAM. The Data Object is like an interface or a view definition that defines a structure. It is then up to the ‘data providers’ to deliver the data that fits into this Data Object template.
Note: the data that BAM reports on is typically loaded in memory – the Active Data Cache. This cache is continually fed from external sources on the one hand, leading to updates in existing Data Objects and creation of new ones – as well as frequently consulted by reports and other on-screen representation of the data objects for real-time, up to date presentation of the data.
There are at least two ways for BAM itself to gather the data that populates the Data Objects:
1) within BAM Architect we can setup Enterprise Message Sources that link BAM Data Objects with JMS Topics or Queues. In such an Enterprise Message Source definition, we indicate such a JMS source of messages and specify how to transform the contents of the JMS messages into BAM Data Objects. Queuing messages on a JMS queue is more or less a standard operation in many tools and technologies and gives us a means to have various technologies send their data (events) to BAM.
2) again in BAM Architect, we can create External Data Sources. An External Data Source is a reference to a database schema. Once we have created an External Data Source, we can continue to create Data Objects that are based on such External Data Sources. These Data Objects are not part of the ADC – as the data is not (supposed to be very) active at all – sitting in a database. BAM reports can be created on these Data Objects just like any other Data Object. In fact, this turns out to be an extremely fast way of creating very rich, visually appealing dashboards with graphic presentation of database data.
Other channels via which Data Objects can be populated are somewhat more external to BAM itself and leave the initiative to a partner. For example BPEL processes can use either the BAM PartnerLink or the BAM Sensor Action.
The Oracle BAM Adapter is a standard JCA adapter which can be used from any J2EE client to send data and events to the Oracle BAM Server. Oracle BAM Adapter provides three mechanisms by which you can send data to an Oracle BAM server in your SOA composite application. First of all, the BAM Adapter can be used as a reference binding for a Composite application. The adapter can also be used as a partner link in a BPEL process to send data to Oracle BAM as a step in the process. Finally, Oracle BAM sensor actions can be included within a BPEL process to publish event-based data to the Oracle BAM data objects. This last approach based on BPEL sensors is the least intrusive, as it does not impact the BPEL process itself, it merely leverages the already available hooks. This sensor based approach is specific to BPEL and cannot be used in Mediator components.
The BAM Server also publishes several (SOAP) WebServices that any WebService client can call for providing data for BAM Data Objects. From the database – using utl_http – from Java applications – for example using Apache AXIS or JAX-RPC – or any technology capable of HTTP calls and a little XML manipulation can we feed into the BAM Active Data Cache.
The last and presumably rather spectacular way of feeding data into BAM is from Oracle Data Integrator (ODI). ODI can retrieve data from many different sources, using advanced technologies and transformations, including Change Data Capture for siphoning off database changes without resorting to database triggers. Note that ODI is an external data source to BAM.
In a subsequent article, I will discuss how we can quickly set up a BPEL process that feeds into BAM – and setup a BAM Data Object and report that provides live coverage of the BPEL activities.