Thank you for your response.

I write my code in scala(that's why I don't include code in first post), and use sbt as build tool. I upload the code to github, at
 https://github.com/yuchangyuan/drools-test1s , so just clone the repo to get the code.

sbt 0.13 should be installed(see http://www.scala-sbt.org/ for howto install) before the code can be built and run,
after install sbt, just type 'sbt run' in project root directory(the directory contain 'build.sbt' file) to compile and run the code.

For drools 5.6.0-SNAPSHOT, I will try later.




On Fri, Oct 4, 2013 at 6:56 PM, Davide Sottara <dsotty@gmail.com> wrote:
No, this is not normal.
I could not reproduce it in 5.6.0-SNAPSHOT, however, could you try that version too, and/or post a full
reproducer - i.e. the exact code you are running?
Hopefully it is already fixed
Thanks



On 10/03/2013 11:11 PM, Yu Changyuan wrote:
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


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



--
Best regards,
Changyuan