[rules-users] Drools fusion and absence of events

richarda richard.ambridge at gmail.com
Wed Oct 28 10:38:31 EDT 2009


Thanks, it turns out my email post was correct and my code i was testing with
with different..

If I do,   
      $a : MyBean(name=="one");
      not( MyBean(name=="two", this after [0s,10s] $a))
which means,  item not received between 0 and 10 seconds
then it works as expected..

If I do
         $a : MyBean(name=="one");
         not( MyBean(name=="two", this after [10s] $a))
which means, item not received between 10 and infinity seconds
then I get the false rule trigger when name==other inserted

Need to get my head around that one.


Edson Tirelli-4 wrote:
> 
>     Richard,
> 
>     It depends on which mode you are running the engine (STREAM or CLOUD)
> and in case you are using STREAM, which clock are you using.
> 
>     If you are using CLOUD, Drools assumes all facts/events are available,
> and does not wait to fire the activation.
> 
>     If you are using STREAM mode, then Drools will delay the firing of the
> rule with a temporal negative pattern for the necessary time (10s in your
> case) and if after that time the rule is still active, it will fire it.
> The
> type of session clock you use, obviously influences the flow of time,
> where
> the 10s might be real time, or pseudo time controlled by the application.
> 
>     The way the rule is written is consistent with the intent you
> described
> in your e-mail, so my guess is that you might be using different
> configurations as described above.
> 
>     []s
>     Edson
> 
> 2009/10/28 Richard Ambridge <Richard.Ambridge at sun.com>
> 
>> Hi,
>>  Trying to get to grips with Fusion and absence of events...
>>
>>  If I have a Bean that has just a simple variable,  e.g.   class
>> MyBean {   private String name;   getter+setter }
>>
>>  I want to use events to determine when an object with  name=="one"
>> is available, and no object with name=="two" appears within 10 seconds..
>>
>>  So, I write a rule:
>>
>>  declare MyBean
>>   @role( event)
>> end
>>
>> rule "myrule'
>>   when
>>       $a : MyBean(name=="one");
>>       not( MyBean(name=="two", this after [0s,10s] $a))
>>   then
>>       //do something
>> end
>>
>>
>> If I inject  an object with Name="one",  and then wait 10seconds, I
>> get the 'myrule' fired,  great!
>>
>> But, if i inject an object with name="one" and then 1second later I
>> inject an object with name="other"
>> the 'myrule' is fired..
>>
>> Looking at the manual, this seems kind of correct,  the rule says  if
>> I have a "one" and not a bean with name=="two"
>> which I do,  as I have a 'one' and a 'other'
>>
>> But, how do I write the rule to say,  I have a 'one' and 'two' doesn't
>> turn up?
>>
>> Cheers
>> Ric
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
> 
> 
> 
> -- 
>  Edson Tirelli
>  JBoss Drools Core Development
>  JBoss by Red Hat @ www.jboss.com
> 
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
> 
> 

-- 
View this message in context: http://www.nabble.com/Drools-fusion-and-absence-of-events-tp26093460p26095824.html
Sent from the drools - user mailing list archive at Nabble.com.




More information about the rules-users mailing list