Back to Article

Review: iSpheres Halo 4

by Drew Falkman

Summary

If anyone hasn't heard yet, there is a new TLA (Three Letter Acronym) in the J2EE development world: BAM. BAM is short for Business Activity Monitoring, and at the core of BAM is a new breed of Event Servers, essentially application servers whose sole responsibility is to monitor business activity in real time and perform functions when triggered by certain events. The key to this emerging market (iSpheres is only one vendor, albeit a forerunner in the field, creating BAM management software) is the growing complexity of the enterprise application space. Service-oriented applications, complex RDBMS systems and other activities are increasingly difficult to keep tabs on, and developing singular event listeners for these complex data systems is out of the question.

More Information

Introduction

The overall operation of Halo is basically two macro processes: information is collected from sources, evaluated and stored in the Halo server, and then this information is evaluated, and if criteria are met, notifies subscribers or executes application logic. The business prospect behind Halo is simple: in today's heterogeneous and connected enterprises all kinds of crucial events are happening in real-time. As all of this data is shared and as computing systems and people interact on a daily basis, certain windows of opportunities arise. Using the event server model, BAM applications can be developed to monitor events and trigger reactions, whether that be to notify someone on the sales team, initiate a work flow or dynamically trigger business logic. It all seems to make quite a bit of sense. It seems to me there are virtually unlimited possibilities for BAM applications.

Introduction to Halo Event Components

In order to understand how Halo works, it is perhaps best to analyze the types of components that can be implemented within it. Just as J2EE applications are made up of their components: servlets, JSPs, EJBs, etc., so are BAM applications made up of a set of components. There are four types:

  • Sensors are what perform the actual monitoring of external systems by filtering their real-time data streams.
  • Event Processors analyze data retrieved via sensors in search for "events of interest".
  • Responders execute application logic and perform functions when triggered by event processors.
  • Event Router is the transport mechanism for handling events. This is not a component model, but is worth mentioning as a core Halo concept.

Sensors

A number of pre-built sensors are included with the Halo server. These pre-built sensors include database sensors to monitor JDBC datasources, middleware sensors to monitor messages queues such as JMS, text sensors to parse any text-based information such as e-mails, Web sensors to monitor HTTP sources such as Web pages or RSS feeds and feedback sensors that work internally within the Halo server.

Event Processors

Four basic processor types will handle most BAM applications. Parametric event processors handle database queries into event-enabled databases. Time-series event processors tracks statistics from multiple input streams. Schedule-based event processors are stored in Halo's repository to enable event execution at intervals. Finally, on-demand event processors will generate events based on external triggers.

Responders

Responders often initiate complex, multi-step processes such as work flows and transactional queries. There are three basic types that are included with Halo. Notification responders notify subscribers when a particular event cue has occurred. Notification can be in the form of: messaging (e.g. JMS), email, Web, SMS or Excel updates. Execution responders simply invoke application logic when triggered. Cascading responders publish information back to the Halo server for evaluation.

Installing Halo

Halo currently requires Solaris 2.8 and up or Windows 2000 SP3 and up. The Halo database uses Oracle 8.16 and 8.17 (with Phased Event Detection, see product docs for more information on this, also note IBM DB2 support may be added in future versions) or any other JDBC-compliant RDBMS if Phased Event Detection is not needed. A 1.4.x JDK must be installed (Halo currently also ships with one) and BEA or a JMS-compliant J2EE server are needed for application server integration.

Installation on Windows was smooth, double-click the installer file and follow the wizard. When completed, the Halo server needs to be started, then you are up and running. Solaris installation looks to be equally simple using a command line install.

Using Halo

There are two ways to use Halo: using the console (see Figure 1) or programmatically using the API. Everything in Halo is basically a processor or a lookup. A processor simply does something, whether that is to notify someone or something about an event occurrence or it is to poll a JMS queue. A lookup is the consumption of data, from a database or text file or anything else. To create a BAM application, a developer must create a series if processors and lookups that monitor the event, consume and analyze the results and issue a response. Creating new processors using the console was actually quite simple, assuming one understands what the different types of processors are (e.g. Heartbeat, Gobbler, JMSProcessor, etc.). Once you select the type of processor you wish to add, a new screen will appear containing the necessary information for the type of processor you wish to add. For example, the Heartbeat processor will require an entry as to how frequently it should execute (seconds, hours, days, etc.). Lookups, such as would be used to query Web/XML or database information, are equally simple, select from the three types of lookups and enter the appropriate information. As simple as this interface is, it seems to be a somewhat effective way for setting up and deploying basic pre-built event processors.

iSpheres

Of course for most enterprises and event projects, a greater amount of customization will be necessary. This is where the API can be used. Overall, I found the API quite straightforward. Creating processors and lookups are simply done by creating instances of the relevant processor or lookup class, then interacting with their methods and properties. Additionally, the API allows for the creating of custom processors, to enable further customization. The developer documentation was refreshingly good.

Administering Halo

Without getting into too great a detail, I should mention that the console will also allow for administration of the Halo server. Halo is built for an enterprise environment, and as such provides operational statistics and performance scalability. I had no performance issues whatsoever in running Halo on my small test machine, though I admittedly didn't have numerous processors and complex BAM applications running.

Real-World BAMming

As a final note, and in case anyone hasn't quite gotten the picture of how useful BAM applications can be, I should mention a few possible applications:

  • Marketplace monitoring: an event-driven application could monitor prices of supplies or watch for specific items on B2B exchanges and either automatically make purchases or notify buyers.
  • Financial analysis: using Halo (or another event server) to monitor financial information within an organization could alert controllers or other interested parties when key numbers change in certain ways. This same principal could be used to monitor any crucial internal business information, such as sales data or vendor/supplier information.
  • Real-time trading: by responding to events, such as price increases or drops in commodities or derivatives, traders could greatly benefit by implementing responses to specific events.
  • Fraud detection: by monitoring credit card activity, specific patterns could be discovered and action taken to discover and halt fraud.
As you can see, the possibilities are certainly intriguing and somewhat boundless in scope. It seems that event-based applications could be deployed by most enterprise companies to obtain some type of return on investment.

Conclusion

Overall, I was impressed with Halo. The overall idea of event- based applications and the concept of an event server seems like a model worthy of pursuing. In addition, at version 4 Halo seems to be fairly well evolved from both an administrator and developer standpoint. I would recommend most enterprises at least evaluate the possibility of employing event-based applications.


Drew Falkman is the author of the JRun Web Application Construction Kit and co- author (with Ben Forta) of Reality ColdFusion: J2EE Integration, both published by Macromedia Press. Over the past 6 years, Drew has developed over 150 Web applications in all sizes using ColdFusion and Java. Currently Drew consults, speaks at events, writes for numerous publications, and teaches courses at Portland State University. His latest project through his consulting company, Veraison LLC, was a real-time cattle auction using Flash Remoting and Flash Communication Server. In addition, Drew is a member of Team Macromedia, a certified ColdFusion Developer and a certified Macromedia instructor.

Print Article