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
>
>