[jboss-jira] [JBoss JIRA] Created: (JBRULES-2773) Rule delayed although temporal operator within not() refers to past events

Wolfgang Laun (JIRA) jira-events at lists.jboss.org
Fri Nov 5 10:52:01 EDT 2010


Rule delayed although temporal operator within not() refers to past events
--------------------------------------------------------------------------

                 Key: JBRULES-2773
                 URL: https://jira.jboss.org/browse/JBRULES-2773
             Project: Drools
          Issue Type: Bug
      Security Level: Public (Everyone can see)
    Affects Versions: 5.1.1.FINAL
            Reporter: Wolfgang Laun
            Assignee: Mark Proctor
             Fix For: 5.2.0.M1


The .drl:

declare Leave
  @role( event )
  @timestamp( timestamp )
end

rule "XXX Leave not !="
when
    $leave: Leave()
    not Leave( this != $leave )
then
    System.out.println( "XXX only one Leave - not !=" );
end

rule "YYY Leave not after"
when
    $leave: Leave()
    not Leave( this before $leave )
then
    System.out.println( "YYY only one Leave - not before" );
end


A) The pseudo-clock is advanced according to the timestamp; then
exactly one event Leave is inserted; then fireAllRules() is called.

1) Running in CLOUD mode, both rules fire.
2) But running in STREAM mode, ONLY rule XXX fires.

B) Like A, but the session clock is advanced by (at least) 1ms
prior to calling fireAllRules().

3) Either mode, both rules fire.

I think that A2) is incorrect; why should passing another msec change the logic? Rule YYY matches by looking into the past, so the "rule activation delay"  described in 2.5.2.2. Negative Patterns in Stream Mode should not apply because the default parameter for before is [1ms,...].


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list