[rules-users] Correlation of events
Edson Tirelli
tirelli at post.com
Wed Feb 28 06:47:35 EST 2007
Ashfaq,
The idea of a rules engine is that all the "search", or in better
words, the "match" of facts is done in the LHS. This is exactly what the
rules engine does better! The RHS should be composed (ideally) of simple
actions, not algorithms.
For instance, in your example, lets say you use 2 other fields for
correlating the events: source (the origin of the error) and type (the
type of the error).
Your rule would simply be written:
rule "new error"
when
$error : Error( state == NEW_ERROR, $source : source, $type : type )
$errFromWorkingMemory : Error( source == $source, type == $type )
then
$errFromWorkingMemory.setLastTimeStamp( currentTimestamp );
modify( $errFromWorkingMemory );
retract( $error );
end
See? Clean and clear. No algorithms involved and the engine will
optimize the matching and execution giving you the best performance.
You can also create rules to automatically remove any error with
status NEW_ERROR that is not the last one, based on timestamp. Example
rule "keep only the last error"
when
$error : Error( $state : state == NEW_ERROR, $source : source, $type
: type, $timestamp : timestamp )
exists Error( state == $state, source == $source, type == $type,
timestamp > $timestamp )
end
retract( $error );
end
So, my advice is: use the engine to your benefit... ;)
[]s
Edson
Steven Williams wrote:
> I think you may want to use a global here:
>
> global ErrorMetaData errorMetadata;
>
> rule "new error"
> when
> $error : Error (state == NEW_ERROR)
> then
> (search workingmemory if this error was already
> registered)
> if (found)
> {
> errorMetadata.setLastTimestamp(currentTimestamp)
> retract($error);
> }
> end
>
>
> On 2/28/07, *Framewala, Ashfaq Y* <Ashfaq.Framewala at gs.com
> <mailto:Ashfaq.Framewala at gs.com>> wrote:
>
> Hi,
>
> I am working on a system where I need to correlate few error
> conditions happening in the network infrastructure. I have gone
> through the documentation for Jboss rules engine (Drools) and I am
> planning to use it for the correlation purpose.
>
> Can anyone let me know a way in which I can get an object from
> workingmemory in the "then" part of the rule? For e.g., I need the
> following
>
>
> rule "new error"
> when
> $error : Error (state == NEW_ERROR)
> then
> (search workingmemory if this error was already
> registered)
> if (found)
> {
>
> $errFromWorkingMemory.setLastTimestamp(currentTimestamp)
> retract($error);
> }
> End
>
> Thanks,
> Ashfaq
>
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
>
> --
> Steven Williams
>
> Supervising Consultant
>
> Object Consulting
> Office: 8615 4500 Mob: 0439 898 668 Fax: 8615 4501
> stevenw at objectconsulting.com.au <mailto:stevenw at objectconsulting.com.au>
> www.objectconsulting.com.au <http://www.objectconsulting.com.au>
>
> consulting | development | training | support
> our experience makes the difference
>
>------------------------------------------------------------------------
>
>_______________________________________________
>rules-users mailing list
>rules-users at lists.jboss.org
>https://lists.jboss.org/mailman/listinfo/rules-users
>
>
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3124-6000
Mobile: +55 11 9218-4151
JBoss, a division of Red Hat @ www.jboss.com
More information about the rules-users
mailing list