Article written

  • on 30.12.2011
  • at 05:05 AM
  • by Denis

Problem with Drools 0

Recently, I has been working withDrools component.
I found a very interesting thing.
The problem is that drool engine do not fire conditions which use “after” operator.
This condition does not always work. Error case requires that external events come to the system immediately.
It’s mean that if to set timer for 10 milliseconds between coming events everything works fine.
If events comes into the system continuously (without timer, see my code below) after some time rules not fire.

case_13.drl

global RuleResult result;
global RulesEngine rulesEngine;

declare Map
    @role( event )
end

rule "State 1"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
    then

        System.out.println("State 1 ");
end

rule "State 2"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1)
    then
        System.out.println("State 2");
end


rule "State 3"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1)
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
    then
        System.out.println("State 3 ");
end

rule "State 4"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
    then
        System.out.println("State 4 ");
end

rule "State 5"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
    then
        System.out.println("State 5 ");
end

rule "State 6"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
    then
        System.out.println("State 6 ");
end

rule "State 7"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
    then
        System.out.println("State 7 ");
end

rule "State 8"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
    then
        System.out.println("State 8 ");
end


rule "State 9"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
    then
        System.out.println("State 9 ");
end


rule "State 10"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
    then
        System.out.println("State 10 ");
end


rule "State 11"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
    then
        System.out.println("State 11 ");
end


rule "State 12"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
    then
        System.out.println("State 12 ");
end


rule "State 13"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
    then
        System.out.println("State 13 ");
end


rule "State 14"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
    then
        System.out.println("State 14 ");
end


rule "State 15"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
    then
        System.out.println("State 15 ");
end


rule "State 16"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
        $addToCartEvent16 : Map( this.get("eventName") == "AddToCart16", this after $addToCartEvent15 )
    then
        System.out.println("State 16 ");
end


rule "State 17"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
        $addToCartEvent16 : Map( this.get("eventName") == "AddToCart16", this after $addToCartEvent15 )
        $addToCartEvent17 : Map( this.get("eventName") == "AddToCart17", this after $addToCartEvent16 )
    then
        System.out.println("State 17 ");
end


rule "State 18"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
        $addToCartEvent16 : Map( this.get("eventName") == "AddToCart16", this after $addToCartEvent15 )
        $addToCartEvent17 : Map( this.get("eventName") == "AddToCart17", this after $addToCartEvent16 )
        $addToCartEvent18 : Map( this.get("eventName") == "AddToCart18", this after $addToCartEvent17 )
    then
        System.out.println("State 18 ");
end


rule "State 19"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
        $addToCartEvent16 : Map( this.get("eventName") == "AddToCart16", this after $addToCartEvent15 )
        $addToCartEvent17 : Map( this.get("eventName") == "AddToCart17", this after $addToCartEvent16 )
        $addToCartEvent18 : Map( this.get("eventName") == "AddToCart18", this after $addToCartEvent17 )
        $addToCartEvent19 : Map( this.get("eventName") == "AddToCart19", this after $addToCartEvent18 )
    then
        System.out.println("State 19 ");
end


rule "State 20"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
        $addToCartEvent16 : Map( this.get("eventName") == "AddToCart16", this after $addToCartEvent15 )
        $addToCartEvent17 : Map( this.get("eventName") == "AddToCart17", this after $addToCartEvent16 )
        $addToCartEvent18 : Map( this.get("eventName") == "AddToCart18", this after $addToCartEvent17 )
        $addToCartEvent19 : Map( this.get("eventName") == "AddToCart19", this after $addToCartEvent18 )
        $addToCartEvent20 : Map( this.get("eventName") == "AddToCart20", this after $addToCartEvent19 )
    then
        System.out.println("State 20 ");
end


rule "State 21"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
        $addToCartEvent16 : Map( this.get("eventName") == "AddToCart16", this after $addToCartEvent15 )
        $addToCartEvent17 : Map( this.get("eventName") == "AddToCart17", this after $addToCartEvent16 )
        $addToCartEvent18 : Map( this.get("eventName") == "AddToCart18", this after $addToCartEvent17 )
        $addToCartEvent19 : Map( this.get("eventName") == "AddToCart19", this after $addToCartEvent18 )
        $addToCartEvent20 : Map( this.get("eventName") == "AddToCart20", this after $addToCartEvent19 )
        $addToCartEvent21 : Map( this.get("eventName") == "AddToCart21", this after $addToCartEvent20 )
    then
        System.out.println("State 21 ");
end


rule "State 22"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
        $addToCartEvent16 : Map( this.get("eventName") == "AddToCart16", this after $addToCartEvent15 )
        $addToCartEvent17 : Map( this.get("eventName") == "AddToCart17", this after $addToCartEvent16 )
        $addToCartEvent18 : Map( this.get("eventName") == "AddToCart18", this after $addToCartEvent17 )
        $addToCartEvent19 : Map( this.get("eventName") == "AddToCart19", this after $addToCartEvent18 )
        $addToCartEvent20 : Map( this.get("eventName") == "AddToCart20", this after $addToCartEvent19 )
        $addToCartEvent21 : Map( this.get("eventName") == "AddToCart21", this after $addToCartEvent20 )
        $addToCartEvent22 : Map( this.get("eventName") == "AddToCart22", this after $addToCartEvent21 )
    then
        System.out.println("State 22 ");
end


rule "State 23"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
        $addToCartEvent16 : Map( this.get("eventName") == "AddToCart16", this after $addToCartEvent15 )
        $addToCartEvent17 : Map( this.get("eventName") == "AddToCart17", this after $addToCartEvent16 )
        $addToCartEvent18 : Map( this.get("eventName") == "AddToCart18", this after $addToCartEvent17 )
        $addToCartEvent19 : Map( this.get("eventName") == "AddToCart19", this after $addToCartEvent18 )
        $addToCartEvent20 : Map( this.get("eventName") == "AddToCart20", this after $addToCartEvent19 )
        $addToCartEvent21 : Map( this.get("eventName") == "AddToCart21", this after $addToCartEvent20 )
        $addToCartEvent22 : Map( this.get("eventName") == "AddToCart22", this after $addToCartEvent21 )
        $addToCartEvent23 : Map( this.get("eventName") == "AddToCart23", this after $addToCartEvent22 )
    then
        System.out.println("State 23 ");
end


rule "State 24"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
        $addToCartEvent16 : Map( this.get("eventName") == "AddToCart16", this after $addToCartEvent15 )
        $addToCartEvent17 : Map( this.get("eventName") == "AddToCart17", this after $addToCartEvent16 )
        $addToCartEvent18 : Map( this.get("eventName") == "AddToCart18", this after $addToCartEvent17 )
        $addToCartEvent19 : Map( this.get("eventName") == "AddToCart19", this after $addToCartEvent18 )
        $addToCartEvent20 : Map( this.get("eventName") == "AddToCart20", this after $addToCartEvent19 )
        $addToCartEvent21 : Map( this.get("eventName") == "AddToCart21", this after $addToCartEvent20 )
        $addToCartEvent22 : Map( this.get("eventName") == "AddToCart22", this after $addToCartEvent21 )
        $addToCartEvent23 : Map( this.get("eventName") == "AddToCart23", this after $addToCartEvent22 )
        $addToCartEvent24 : Map( this.get("eventName") == "AddToCart24", this after $addToCartEvent23 )
    then
        System.out.println("State 24 ");
end


rule "State 25"
    when
        $addToCartEvent1 : Map( this.get("eventName") == "AddToCart1" )
        $addToCartEvent2 : Map( this.get("eventName") == "AddToCart2", this after $addToCartEvent1 )
        $addToCartEvent3 : Map( this.get("eventName") == "AddToCart3", this after $addToCartEvent2 )
        $addToCartEvent4 : Map( this.get("eventName") == "AddToCart4", this after $addToCartEvent3 )
        $addToCartEvent5 : Map( this.get("eventName") == "AddToCart5", this after $addToCartEvent4 )
        $addToCartEvent6 : Map( this.get("eventName") == "AddToCart6", this after $addToCartEvent5 )
        $addToCartEvent7 : Map( this.get("eventName") == "AddToCart7", this after $addToCartEvent6 )
        $addToCartEvent8 : Map( this.get("eventName") == "AddToCart8", this after $addToCartEvent7 )
        $addToCartEvent9 : Map( this.get("eventName") == "AddToCart9", this after $addToCartEvent8 )
        $addToCartEvent10 : Map( this.get("eventName") == "AddToCart10", this after $addToCartEvent9 )
        $addToCartEvent11 : Map( this.get("eventName") == "AddToCart11", this after $addToCartEvent10 )
        $addToCartEvent12 : Map( this.get("eventName") == "AddToCart12", this after $addToCartEvent11 )
        $addToCartEvent13 : Map( this.get("eventName") == "AddToCart13", this after $addToCartEvent12 )
        $addToCartEvent14 : Map( this.get("eventName") == "AddToCart14", this after $addToCartEvent13 )
        $addToCartEvent15 : Map( this.get("eventName") == "AddToCart15", this after $addToCartEvent14 )
        $addToCartEvent16 : Map( this.get("eventName") == "AddToCart16", this after $addToCartEvent15 )
        $addToCartEvent17 : Map( this.get("eventName") == "AddToCart17", this after $addToCartEvent16 )
        $addToCartEvent18 : Map( this.get("eventName") == "AddToCart18", this after $addToCartEvent17 )
        $addToCartEvent19 : Map( this.get("eventName") == "AddToCart19", this after $addToCartEvent18 )
        $addToCartEvent20 : Map( this.get("eventName") == "AddToCart20", this after $addToCartEvent19 )
        $addToCartEvent21 : Map( this.get("eventName") == "AddToCart21", this after $addToCartEvent20 )
        $addToCartEvent22 : Map( this.get("eventName") == "AddToCart22", this after $addToCartEvent21 )
        $addToCartEvent23 : Map( this.get("eventName") == "AddToCart23", this after $addToCartEvent22 )
        $addToCartEvent24 : Map( this.get("eventName") == "AddToCart24", this after $addToCartEvent23 )
        $addToCartEvent25 : Map( this.get("eventName") == "AddToCart25", this after $addToCartEvent24 )
    then
        System.out.println("State 25 ");

        result.setDone(true);
        result.setName("ActinableEvent");
end


rule "State All"
    when
        $event : Map( )
    then
        System.out.println("All: " + $event.get("eventName"));
end

Java code case:

    @Test
    public void thirteenthCase(){
        RuleResult  ruleResult  = new RuleResult();
        RulesEngine rulesEngine = null;

        try {

            rulesEngine = new RulesEngine("rules/case_13.drl");
            rulesEngine.setGlobalObject("result", ruleResult);
            rulesEngine.setGlobalObject("rulesEngine", rulesEngine);

        } catch (Exception e) {
            e.printStackTrace();
        }

        for(int i = 1; i < 26; i++){
            Map<String, Object> event = new HashMap<String, Object>();
            event.put("eventName", "AddToCart" + i);

            rulesEngine.sendEvent(event);

            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            }
        }

        Assert.assertTrue(ruleResult.isDone());
    }

If  "Thread.sleep(10);"  commented I have the log result:

All: AddToCart1
State 1 
All: AddToCart2
State 2
All: AddToCart3
State 3 
All: AddToCart4
All: AddToCart5
All: AddToCart6
All: AddToCart7
All: AddToCart8
All: AddToCart9
All: AddToCart10
All: AddToCart11
All: AddToCart12
All: AddToCart13
All: AddToCart14
All: AddToCart15
All: AddToCart16
All: AddToCart17
All: AddToCart18
All: AddToCart19
All: AddToCart20
All: AddToCart21
All: AddToCart22
All: AddToCart23
All: AddToCart24
All: AddToCart25

 

I will be very grateful for any help or suggestion.

Thank you in advance!
 

blog comments powered by Disqus

Denis Blog is powered by Drupal
developed by Denis Liger

Valid XHTML 1.0 Strict

Рейтинг@Mail.ru