The "no B:x for 2 minutes" will not fire if nothing comes in even after
2minutes. e.g. if no characters get killed then no events will come in.
If I add a timer to this rule, say like timer (2m 1s), then the rule will
fire every second after 2 minutes.
Best Regards,
Kevin
2010/10/29 Wolfgang Laun <wolfgang.laun(a)gmail.com>
OK; your original version somehow put me off the right track.
This rule will fire as soon as there is no B:n according to the
Player index for 2 minutes.
rule "no B:x for 2 minutes"
when
$b : Player( $index: index )
not ( EventB( index == $index) over window:time( 2m ) )
then
System.out.println( "no B:" + $index + " in last 2 minutes" );
end
This would fire whenever there's no B at all for 2 minutes:
rule "no B for 2 minutes"
when
not ( EventB() over window:time( 2m ) )
then
System.out.println( "no B:" + $index + " in last 2 minutes" );
end
2010/10/28 赵侃侃 <kevin223(a)gmail.com>
> My last mail should actually read:
>
> A player may have multiple characters and the rule should fire when *ALL*of its
characters live longer than 2 minutes. that's why "characters" do
> not have a unique identification and there isn't any event representing a
> character birth.
>
> Best Regards,
> Kevin Zhao
>
> 在 2010年10月28日 下午9:50,赵侃侃 <kevin223(a)gmail.xn--com>:-0s6m5392c
>
> A player may have multiple characters and the rule should fire when any of
>> its characters live longer than 2 minutes. that's why "characters"
do not
>> have a unique identification and there isn't any event representing a
>> character birth.
>>
>> Best Regards,
>> Kevin Zhao
>>
>> 2010/10/28 Wolfgang Laun <wolfgang.laun(a)gmail.com>
>>
>>> If EventB( index == 3 ) signifies that the "character" owned by
player 3
>>> has been killed: what is the event that this character has been born? Life
>>> is the time between birth and death; these two are well-defined (well,
>>> mostly) events, and they ought to be represented by clean-cut events in any
>>> application. Then it's no problem to write rules firing when a
"character"
>>> lives longer or shorter than any time. Also, "characters" may have
to have a
>>> unique identification beyond their player-owner.
>>>
>>> If you are constantly shifting your specs, we won't be getting any
>>> closer to a solution, though.
>>>
>>>
>>> -W
>>>
>>>
>>> 2010/10/28 赵侃侃 <kevin223(a)gmail.com>
>>>
>>>> To be honest, I don't quite understand the rules you wrote. Let me
>>>> explain this a little bit with a real world scenario.
>>>> Assume this is an on-line game that EventB indicates a 'kill'
event
>>>> that a player is losing its character who might be killed by some other
>>>> player.
>>>> The property index points to the player who owns this character. What
>>>> I'm looking for here is to find out when a player's character
survives in 2
>>>> minutes. The number of players in a game is at least 2 but can be up to
any
>>>> number.
>>>>
>>>> Best Regards,
>>>> Kevin Zhao
>>>>
>>>> 2010/10/28 Wolfgang Laun <wolfgang.laun(a)gmail.com>
>>>>
>>>>>
>>>>>
>>>>> 2010/10/28 赵侃侃 <kevin223(a)gmail.com>
>>>>>
>>>>>> Hello Wolfgang,
>>>>>>
>>>>>> Index is just like the index in an array. the value can be any
from 0
>>>>>> to the array length.
>>>>>> for the previous example, the length is 1 so index can be either
0 or
>>>>>> 1. but in the real case, the length can be an arbitrary number.
>>>>>>
>>>>>> another question, there are 2 rules here, do both of them have to
be
>>>>>> applied?
>>>>>>
>>>>>
>>>>> One creates and inserts the PatternConsumer which blocks repeated
>>>>> usage of the pair of EventB facts that have been successfully
paired.
>>>>> Otherwise a sequence EventB:0, EventB:1, EventB:2 would fire 2
times.
>>>>>
>>>>> If the positive condition is more complex, e.g., you need *all*
index
>>>>> values 0,...,L-1 within 2m, then other conditions will be required
(and
>>>>> that's what I meant with "more precisesly"). If any
pair a,b from [0..L-1]
>>>>> will do, then the modified version (!=) should be OK.
>>>>>
>>>>> -W
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> Best Regards,
>>>>>> Kevin Zhao
>>>>>>
>>>>>> 2010/10/28 Wolfgang Laun <wolfgang.laun(a)gmail.com>
>>>>>>
>>>>>> Kindly state your requirements precisely.
>>>>>>>
>>>>>>> Perhaps
>>>>>>> not ( EventB ( index != $index,... )
>>>>>>> is what you need.
>>>>>>> -W
>>>>>>>
>>>>>>> 2010/10/28 赵侃侃 <kevin223(a)gmail.com>
>>>>>>>
>>>>>>> I haven't tested this rule, but what about the case that
property
>>>>>>>> index would have arbitrary number of possible values?
>>>>>>>>
>>>>>>>> 2010/10/27 Wolfgang Laun <wolfgang.laun(a)gmail.com>
>>>>>>>>
>>>>>>>>> Omitting the Entry Points:
>>>>>>>>>
>>>>>>>>> rule "B-0-1-not OK"
>>>>>>>>> when
>>>>>>>>> $b : EventB( $index: index )
>>>>>>>>> not ( PatternConsumer( id == "B01",
events contains $b ) )
>>>>>>>>> not ( EventB( index == (1 - $index), this
after[0s,2m] $b ) )
>>>>>>>>> then
>>>>>>>>> System.out.println( "B:" + $index +
", but no B:" + (1-$index)
>>>>>>>>> );
>>>>>>>>> end
>>>>>>>>>
>>>>>>>>> rule "B-0-1"
>>>>>>>>> when
>>>>>>>>> $b1 : EventB( $index: index )
>>>>>>>>> $b2 : EventB( index == (1 - $index), this
after[0s,2m] $b1 )
>>>>>>>>> then
>>>>>>>>> insert( new PatternConsumer( "B01", $b1,
$b2 ) );
>>>>>>>>> System.out.println( "B:" + $index +
"+B:" + (1-$index) );
>>>>>>>>> end
>>>>>>>>>
>>>>>>>>> -W
>>>>>>>>>
>>>>>>>>> 2010/10/27 赵侃侃 <kevin223(a)gmail.com>:
>>>>>>>>> > Hello,
>>>>>>>>> > With the help from the community I managed to
get my first rule
>>>>>>>>> working, and
>>>>>>>>> > I'm trying to write my second rule on my own
but it just doesn't
>>>>>>>>> seem to
>>>>>>>>> > work correctly.
>>>>>>>>> > Here is the scenario, what I want is to identify
a pattern that
>>>>>>>>> there's no
>>>>>>>>> > EventB coming in within 2 minutes with a
particular index value.
>>>>>>>>> > For example, EventB would have a property named
index and assume
>>>>>>>>> the value
>>>>>>>>> > of index would be either 0 or 1.
>>>>>>>>> > Before firing the rules, I would manually insert
facts of
>>>>>>>>> possibleIndex with
>>>>>>>>> > value 0 and 1 into the workingMemory.
>>>>>>>>> > Within 2 minutes, if there only comes one EventB
with index
>>>>>>>>> valued 0 then
>>>>>>>>> > the system should report no EventB coming in
with index value 1
>>>>>>>>> in last 2
>>>>>>>>> > minutes.
>>>>>>>>> > Vice versa, in the case of only coming one
EventB with index
>>>>>>>>> valued 1 then
>>>>>>>>> > the system should report no EventB coming in
with index value 0
>>>>>>>>> in last 2
>>>>>>>>> > minutes.
>>>>>>>>> > If within 2 minutes, there comes 2 EventB with
both value 0 and
>>>>>>>>> 1 then
>>>>>>>>> > nothing should report.
>>>>>>>>> > Here is what I wrote, but it doesn't seem to
work correctly.
>>>>>>>>> > I used a timer to fire this rule every 10
seconds because I
>>>>>>>>> don't think the
>>>>>>>>> > rule would run automatically if I don't add
that. (not too sure
>>>>>>>>> though)
>>>>>>>>> > rule "no B in 2 minutes"
>>>>>>>>> > timer (0 10s)
>>>>>>>>> > when
>>>>>>>>> > possibleIndex( $index : index ) from entry-point
"Event stream"
>>>>>>>>> > $p : PatternConsumer ( name == 'no B'
&& index == $index )
>>>>>>>>> > not ( EventB( index == $index && this
after[0ms,2m] $p) over
>>>>>>>>> window:time(2m)
>>>>>>>>> > from entry-point "Event stream" )
>>>>>>>>> > then
>>>>>>>>> > PatternConsumer pc = new PatternConsumer(
"no B", $index );
>>>>>>>>> > insert(pc);
>>>>>>>>> > System.out.println("no B in 2 minutes
" + $index);
>>>>>>>>> > end
>>>>>>>>> > Best Regards,
>>>>>>>>> > Kevin Zhao
>>>>>>>>> > _______________________________________________
>>>>>>>>> > rules-users mailing list
>>>>>>>>> > rules-users(a)lists.jboss.org
>>>>>>>>> >
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> rules-users mailing list
>>>>>>>>> rules-users(a)lists.jboss.org
>>>>>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> rules-users mailing list
>>>>>>>> rules-users(a)lists.jboss.org
>>>>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> rules-users mailing list
>>>>>>> rules-users(a)lists.jboss.org
>>>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> rules-users mailing list
>>>>>> rules-users(a)lists.jboss.org
>>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> rules-users mailing list
>>>>> rules-users(a)lists.jboss.org
>>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> rules-users mailing list
>>>> rules-users(a)lists.jboss.org
>>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>
> _______________________________________________
> rules-users mailing list
> rules-users(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users
>
>
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users