Event Processing Languages in CEP

Reading Time: 2 minutes

Occasionally we at TIBCO get asked about event processing languages (EPLs), and how generic languages such as C++/Java with suitable extensions compare to custom proprietary script languages.

In TIBCO’s case, with almost 20 years experience in event-driven architectures and commercial distributed computing, we selected the Java OOP model for the BusinessEvents™ EPL. Object-oriented programming (OOP) is very important for users to help them manage the challenges of rising complexity in software development. The same can be said for EPLs. For example, the idea behind OO programming was that a program or processing model may be viewed as comprising of a collection of individual components, or objects, that act on each other, as opposed to a traditional simple view in which a program may be seen as a collection of functions, or simply as a list of instructions. OOP utilizes ideas such as class, message passing, abstraction, encapsulation, inheritance and polymorphism to accomplish the objectives of complexity management in programming languages.

Solving CEP classes of problems with EPLs are similar to solving problems with other software languages: in order to solve complex tasks, a feature rich ontology of functionality and extensibility is required. It goes without saying that only the most basic event processing tasks can be processed with simple languages. Many of the other CEP EPLs we see in the market tend to be built around simple event processing statements and instructions that are designed for specific tasks and domains.

The TIBCO BusinessEvents event processing language is a general purpose, extensible, feature and grammar rich, object-oriented Java-like EPL that allows users to define business rules on events, systems, services, or a combination of all of these, and execute tasks. Built in EPL functionality includes: Date and Date Functions, Engine.Locale Functions, Engine Functions, Event Functions, Instance.PropertyArray Functions, Instance.PropertyAtom Functions, Instance.StateMachine Functions, Instance Functions, Math Functions, Number Functions, String Functions, String.IO Functions, System Functions, Temporal.Calculus Functions, Temporal.History Functions, Temporal.Numeric Functions, Temporal Statistic Functions, and XPath Functions.

Simple EPLs are useful, but limited in overall capability to address the broad range of business optimization and CEP solutions that require rich processing functionality including statistical and other mathematical models, state, temporal, system and event management. In addition, it is easy to build domain specific business user languages and interfaces when the underlying EPL is feature rich and easily extensible, like TIBCO’s underlying Java-like EPL.