[Reaction-tg] ruleCore beta is ready!

"Marco Seiriö @ ruleCore" marco at rulecore.com
Tue Nov 27 17:46:21 AST 2007


Hello reaction rule experts!

I'm happy to, at last, announce that our reactive rule engine ruleCore is
available for beta testing for anyone interested. It is provided as a 
service
so it's easy to test. No installation, just send and receive events from
the ruleCore server. Everything is done using events so load your
favorite XML, XPath and XSLT tools and start testing ;)

I'd would be glad to get comments on how this fits into RuleML
reaction rule ideas, current and future.

Everything is declarative, completely event-driven and in XML
so we think it is a good start.

The full announcement is below.


cheers
/Marco



The ruleCore server is an event-driven complex situation detector 
provided as a service and aimed at providing reactive capabilities into 
any EDA and event driven SOA platform.

RuleCore uses an declarative approach to monitor and track entities. It 
monitors the progress of user defined situations for each entity and 
provides immediate notification when a situation is detected for a 
particular entity.

*The Short Version*

    *

      A server providing event driven immediate complex situation
      detection -- Tracks and detects situations.

    *

      Event I/O layer built on slightly extended Mule, users do
      everything using events.

    *

      Uses well known concepts like XML, XPath, XSLT and DOM.

    *

      Rules, event stream views, situations and actions can all be
      managed dynamically and their run-time state can be monitored.

    *

      Unordered events will be sorted and re-sequenced by ruleCore.
      Allowing for events sent by clients with unsynchronized clocks.

    *

      Rule state is persistent and crash resistant with automatic recovery.

    *

      Built for easy integration into event driven architectures and
      message based integration frameworks. Plays well with message
      brokers, ESBs and message queues like WebSphere MQ.

    *

      Will be available as a service hosted in our data center and
      accessed using a number of event transport protocols provided by Mule.



*The Long Version*


We use a concept of active rules (do not confuse with 
production/inference rules!) to track and detect situations. Our 
solution is completely event driven and designed for loosely coupled 
distributed environments. Think message brokers, asynchronous messaging, 
JMS, event-driven SOA and that kind of architectures.


A situation is a combination of events as they happen over time. 
Situations are detected by ruleCore immediately as they happen. A 
situation starts to develop when a special initiator event occurs. This 
event might, or might not, be the first event in a situation. As the 
situation develops, more and more events are added and at some point a 
triggering event can cause the situation to be detected. The triggering 
event contains a summary, created with XSLT from an virtual DOM, of the 
detected situation.


RuleCore uses a declarative approach to situation detection, thus no 
programming is required. Situations are declared using XML. We use XML 
as our external representation but there's nothing in the concepts that 
actually require XML as such. But using XML is very practical as you can 
use your favorite editors, libs and tools. We also use XML related 
standards like XML-Schema, DOM, XPath and XSLT.


In ruleCore we use a concept of tracked entities. It's common to create 
rules in a way that each rule instance tracks one entity. It is possible 
to query the engine in order receive an event with the current state of 
a rule instance, thus allowing you to keep track of a situation as it 
develops for a particular entity. Great for early warning applications.


While designing ruleCore a lot of effort has been put into creating good 
support for the temporal aspects of situation detection. Keeping track 
of a large number of situations as they develop, each consisting of 
multiple events with timing constraints, is pretty tricky using 
traditional tools such as databases or plain old code.


Although we use a rather strict and "pure" definition of events, see 
below, we are very pragmatic when it comes to event transport protocols. 
Basically anything that can carry a piece of XML in and out of ruleCore 
is okay. RuleCore uses an extended Mule ESB to implement its Event I/O 
layer. You can basically use any (30+) of the transports available for 
Mule or easily build your own ones. We have added some security, traffic 
logging, database driven configuration and event sequencing to the Mule 
we use.

A rule consists of three major parts. The view, the situation and the 
action. Rules are created and evaluated automatically in response to 
events.

The view declares which events are seen by each rule instance. The view 
is a peephole into the incoming event stream. The events in the view are 
normally semantically related. For example carrying information about 
the same server, person, area or process. The view gives each rule 
instance an unique context in which the situation detection is executed.

The situation describes a combination of events as seen in the view. If 
the correct combination of events are seen over time, the situation is 
detected. Very advanced situation declarations can be created by 
combining a number of situation detector nodes in a tree.

The action is used to report on a detected situation. An action creates 
a new event by executing an XSLT transformation on a virtual DOM 
document describing all the events used in the situation detection. The 
event created by the action is sent out from ruleCore on a outbound 
channel and is the way you know that a rule in ruleCore has triggered.


*Events -- The ruleCore Way*


There is unfortunately no common syntax or semantics for events in the 
Complex Event Processing (CEP) world. We have chosen a simple event 
model that we believe will be usable for most types of applications.

We see an event as a notification about state change in some entity.

In our model an event happens at an exact point in time and two events 
can not occur at the same point in time. If you think they do, your 
timer resolution is too low.

Events are immutable. Events can not be modified in any way after they 
are created. This makes sense as event are notifications about something 
that has already happened and something that has happened can't "unhappen".

All events have a globally unique ID. We use UUIDs so both event sources 
and ruleCore can create an event ID.

Each event has a timestamp. The event's timestamp tells when the state 
change occurred, not when the event was published or received.

Events are encoded in XML and have a header and a body.

    *

      The event header contains event meta-data such as security related
      information.

    *

      The event body is any valid XML fragment with additional detail
      about the state change.


Events can be generated by multiple sources with unsynchronized clocks. 
Events are (re)sequenced in ruleCore in order to create an ordered flow 
of events. The sequencer will sort late and early (timestamp in the 
future) events and create a (synthetic) ordering for events even if they 
have the same timestamp. Thus our rules will always operate on one 
single ordered stream of events.


*ruleCore as a Service*

Access to ruleCore will be provided as a service. The architecture of 
ruleCore is ideal for SaaS solutions as the user does everything by 
sending events to ruleCore and receives reaction events as response to a 
rule triggering. Monitoring of the engine is done using events too. The 
user submits an XPath query to the engine in order to query it's 
internal virtual DOM document which holds the complete state of the 
engine. The response to the query is sent back as an event.


A free subscription to the service can be created on our web page soon, 
meanwhile you need to contact us at support at rulecore.com 
<mailto:support at rulecore.com> if you like to test the beta service.



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.ruleml.org/pipermail/reaction-tg/attachments/20071127/879caddc/attachment.htm


More information about the Reaction-tg mailing list