[rules-dev] Determining if a class is an event or not

Edson Tirelli tirelli at post.com
Wed Nov 7 16:12:29 EST 2007


   All,

   I reached a point where I need to make a design decision and would like
your opinion about it.
   Imagine the following scenario:

   A user has a domain model like this:

package a.b.c;
public interface Event { ... }

package x.y.z;
public class MyEvent implements a.b.c.Event {...}

   Then, in his DRL file he writes:

package p.q.r;
import event a.b.c.*;
rule X
when
    Event( ... )
then
    ...
end

   So, it is clear that a.b.c.Event should be handled as an event by the
engine.
   At runtime, the user asserts an object of the class x.y.z.MyEvent into
the working memory. Seems clear to me (and probably to the user) that
MyEvent should be handled as an event, since by DRL semantics, a.b.c.* are
all events, and by OO class hierarchy concept, since a.b.c.Event is an
event, x.y.z.MyEvent is an event too.

   My question is: how the engine knows that MyEvent is an event, since it
only has the x.y.z.MyEvent class as input?
   The only answer I have is that when the first MyEvent instance is
asserted into the working memory, we must get the class name and iterate
over all event import declarations checking for a match. In case no one is
found, we need to repeat the process for each interface and each class up in
the MyEvent hierarchy. Once this process is complete, we cache the results
in the ObjectTypeConf.
   This may be a quite heavy process to be executed each time a fact of a
different class is asserted in the working memory for the first time, but I
can't think a different user-friendly way to solve the question.

   The alternatives would be intrusive, IMO, breaking the drools premise to
work with user-defined POJOs as facts: use anotations to annotate classes
that are events, or mandate users implement a specific interface for events.

    Any better idea?

    []s
    Edson






-- 
  Edson Tirelli
  Software Engineer - JBoss Rules Core Developer
  Office: +55 11 3529-6000
  Mobile: +55 11 9287-5646
  JBoss, a division of Red Hat @ www.jboss.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20071107/91dbfc05/attachment.html 


More information about the rules-dev mailing list