Hi, everyone,

  I just find that, insert an event into a entry point or insert it directly into session will cause different behaviour, is this expected?

  Here is the details:

1. drools run in stream mode and use pseudo clock
2. insert a MyEvent into entry-point "stream" and a MyEvent into session directly every 1 seconds, start at 500ms.
3. call fireAllRules every 1seconds, at second 1, second 2, etc
4. drools version 5.5.0.Final

Below is the rule:

package me.ycy.drools.test1.data

import java.util.List

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

rule "over 0.3s"
    when
        $list: List() from collect(MyEvent() over window:time(300ms))
    then
        System.out.println("Rule: with in 0.3s --> " + $list);
end

rule "over 1s"
    when
        $list: List() from collect(MyEvent() over window:time(1s))
    then
        System.out.println("Rule: with in 1s --> " + $list);
end

rule "over 3s"
    when
        $list: List() from collect(MyEvent() over window:time(3s))
    then
        System.out.println("Rule: with in 3s --> " + $list);
end

rule "over 0.3s ep"
    when
        $list: List() from collect(MyEvent() over window:time(300ms) from entry-point "stream")
    then
        System.out.println("Rule: with in 0.3s use ep --> " + $list);
end

rule "over 1s ep"
    when
        $list: List() from collect(MyEvent() over window:time(1s) from entry-point "stream")
    then
        System.out.println("Rule: with in 1s use ep --> " + $list);
end

rule "over 3s ep"
    when
        $list: List() from collect(MyEvent() over window:time(3s) from entry-point "stream")
    then
        System.out.println("Rule: with in 3s use ep --> " + $list);
end

// ------- end of rule

Finally, the output(just run 5 seconds)

-------------- fire at 1000 ---------------
Rule: with in 3s use ep --> [MyEvent(event 0,500)]
Rule: with in 1s use ep --> [MyEvent(event 0,500)]
Rule: with in 0.3s use ep --> [MyEvent(event 0,500)]
Rule: with in 3s --> [MyEvent(event 0,500)]
Rule: with in 1s --> [MyEvent(event 0,500)]
Rule: with in 0.3s --> []
-------------- fire at 2000 ---------------
Rule: with in 3s use ep --> [MyEvent(event 0,500), MyEvent(event 1,1500)]
Rule: with in 1s use ep --> [MyEvent(event 0,500), MyEvent(event 1,1500)]
Rule: with in 0.3s use ep --> [MyEvent(event 0,500), MyEvent(event 1,1500)]
Rule: with in 3s --> [MyEvent(event 0,500), MyEvent(event 1,1500)]
Rule: with in 1s --> [MyEvent(event 1,1500)]
Rule: with in 0.3s --> []
-------------- fire at 3000 ---------------
Rule: with in 3s use ep --> [MyEvent(event 0,500), MyEvent(event 1,1500), MyEvent(event 2,2500)]
Rule: with in 1s use ep --> [MyEvent(event 0,500), MyEvent(event 1,1500), MyEvent(event 2,2500)]
Rule: with in 0.3s use ep --> [MyEvent(event 0,500), MyEvent(event 1,1500), MyEvent(event 2,2500)]
Rule: with in 3s --> [MyEvent(event 0,500), MyEvent(event 1,1500), MyEvent(event 2,2500)]
Rule: with in 1s --> [MyEvent(event 2,2500)]
Rule: with in 0.3s --> []
-------------- fire at 4000 ---------------
Rule: with in 3s use ep --> [MyEvent(event 1,1500), MyEvent(event 2,2500), MyEvent(event 3,3500)]
Rule: with in 1s use ep --> [MyEvent(event 1,1500), MyEvent(event 2,2500), MyEvent(event 3,3500)]
Rule: with in 0.3s use ep --> [MyEvent(event 1,1500), MyEvent(event 2,2500), MyEvent(event 3,3500)]
Rule: with in 3s --> [MyEvent(event 1,1500), MyEvent(event 2,2500), MyEvent(event 3,3500)]
Rule: with in 1s --> [MyEvent(event 3,3500)]
Rule: with in 0.3s --> []
-------------- fire at 5000 ---------------
Rule: with in 3s use ep --> [MyEvent(event 2,2500), MyEvent(event 3,3500), MyEvent(event 4,4500)]
Rule: with in 1s use ep --> [MyEvent(event 2,2500), MyEvent(event 3,3500), MyEvent(event 4,4500)]
Rule: with in 0.3s use ep --> [MyEvent(event 2,2500), MyEvent(event 3,3500), MyEvent(event 4,4500)]
Rule: with in 3s --> [MyEvent(event 2,2500), MyEvent(event 3,3500), MyEvent(event 4,4500)]
Rule: with in 1s --> [MyEvent(event 4,4500)]
Rule: with in 0.3s --> []



--
Best regards,
Changyuan