[rules-users] A basic doubt about Drools Fusion

Esteban Aliverti esteban.aliverti at gmail.com
Fri Dec 7 08:06:50 EST 2012


It could be the case, and I'm guessing here, that the AgendaEventListener
is called just before the activation is placed into the agenda. So, the
call to fireAllRules() finds an empty agenda. What you could do to check if
this is what is happening, is to insert 2 EvenA objects. The second call of
fireAllRules() should fire the activation of the first object (and you will
miss the activation of the second).

Best Regards,




XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Esteban Aliverti
- Blog @ http://ilesteban.wordpress.com



On Fri, Dec 7, 2012 at 1:55 PM, Adrián Paredes <
adrianp at epidataconsulting.com> wrote:

> Hi all:
>
> I have a very basic doubt about Drools Fusion.
>
> I have two simple Java classes:
>
> EventA  {
>     String id;
>     Date timestamp;
>     Long duration;
> }
>
> EventB {
>     String id;
>     Date timestamp;
>     Long duration;
> }
>
> I have a DRL file, where I declare this two classes as Events:
>
> declare EventA
>     @role(event)
>     @timestamp(timestamp)
>     @duration(duration)
> end
>
> declare EventB
>     @role(event)
>     @timestamp(timestamp)
>     @duration(duration)
> end
>
> I have a simple rule:
>
> rule "Basic Rule"
> dialect 'mvel'
> when
>     $eventA: EventA($aId: id) from entry-point "time stream"
> then
>     System.out.println("Event A " + $aId + " at " + $eventA.timestamp);
> end
>
> Finally, I have a test that starts a StatefulKnowledgeSession in STREAM
> mode, register an eventLister in the session in order to fire the rules
> when an event arrives:
>
> ksession.addEventListener(new DefaultAgendaEventListener() {
>     @Override
>     public void activationCreated(ActivationCreatedEvent event) {
>         ((StatefulKnowledgeSession)
> event.getKnowledgeRuntime()).fireAllRules();
>     }
> });
>
> And then the test insert in the "time stream" entry-point an instance of
> EventA with duration of 10 miliseconds, as follows:
>
> EventA eventA = new EventA();
> eventA.setId("123");
> eventA.setTimestamp(new Date());
> eventA.setDuration(10L);
> ksession.getWorkingMemoryEntryPoint("time stream").insert(event);
>
> At the end of the test, I have an sleep of 2 seconds just in case.
>
> I don't understand why the "Basic Rule" never fires.
>
> But if I add another condition to the same rule, something like this:
>
> rule "Basic Rule"
> dialect 'mvel'
> when
>     $eventA: EventA($aId: id) from entry-point "time stream"
>     not EventB($aId == id, this after [0s,5s] $eventA) from entry-point
> "time stream"
> then
>     System.out.println("Event A " + $aId + " at " + $eventA.timestamp);
> end
>
> The rules fires and I see this message in console:
>
> Event A 123 at Fri Dec 07 09:48:59 ART 2012
>
> I don't understand why the first rule, that is more open, don't fire, and
> the second rule, that is more restrictive, fires without problems.
>
> Thank you very much!
>
> Greetings,
> Adrian.
>
> --
> *Epidata Consulting | Deploying Ideas
> Ing. Adrián M. Paredes | Arquitecto Desarrollador
> adrianp at epidataconsulting.com | Cel: (54911) 3297 1713
>
> ----------------------------------------------------------------------------------------------------------------------------
> Argentina: Maipú 521 Piso 1 Of. A | Buenos Aires | Of: (5411) 5031 0060
> Chile: Apoquindo 3600 Piso 7 y 9 | Las Condes - Santiago | Of: (+56) 2
> 495 8450
>
> ---------------------------------------------------------------------------------------------------------------------------
>  www.epidataconsulting.com
>  Linkedin <http://bit.ly/epidatalinkedin> | Facebook<http://www.facebook.com/epidata.consulting>
>  | Twitter <http://twitter.com/epidata>
> *
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20121207/fd1f1676/attachment-0001.html 


More information about the rules-users mailing list