[rules-users] What's wrong with this rule

赵侃侃 kevin223 at gmail.com
Thu Oct 28 11:19:55 EDT 2010


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 at gmail.com>写道:

> 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 at 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 at 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 at gmail.com>
>>>
>>>>
>>>>
>>>> 2010/10/28 赵侃侃 <kevin223 at 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 at gmail.com>
>>>>>
>>>>> Kindly state your requirements precisely.
>>>>>>
>>>>>> Perhaps
>>>>>>    not ( EventB ( index != $index,... )
>>>>>> is what you need.
>>>>>> -W
>>>>>>
>>>>>> 2010/10/28 赵侃侃 <kevin223 at 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 at 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 at 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 at lists.jboss.org
>>>>>>>> > https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>>> >
>>>>>>>> >
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> rules-users mailing list
>>>>>>>> rules-users at lists.jboss.org
>>>>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> rules-users mailing list
>>>>>>> rules-users at lists.jboss.org
>>>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> rules-users mailing list
>>>>>> rules-users at lists.jboss.org
>>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> rules-users mailing list
>>>>> rules-users at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> rules-users mailing list
>>>> rules-users at lists.jboss.org
>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>
>>>>
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>>
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20101028/c17304a7/attachment.html 


More information about the rules-users mailing list