[rules-users] Temporal operator "after"

Wolfgang Laun wolfgang.laun at gmail.com
Fri Aug 13 16:40:57 EDT 2010


If I'm not too Sauvignon-Blanced-out at the moment: the error message reads
"cannot be cast to a org.drools.common.EventFactHandle".

But the WM(EntryPoint) could very well do a getFactHandle( Object x ), which
would succeed and give it the equivalent of the bound variable's
full-fledged event.

So, in addition to (order to be decided) testing for Date/long/event, just
one more try with getFactHandle()... ?

Cheers!
-W


2010/8/13 Edson Tirelli <tirelli at post.com>

>    Hi Wolfgang,
>
>    I will explain why it happens and we can discuss how to improve that (at
> least improving the error message).
>
>    All temporal operators work when used against either an event, a date
> attribute or a long attribute (interpreted as a timestamp).
>
>    In your example:
>
>    Wrapper( $eventA : foo )
>    $eventB : Bar( this after[0ms,1h] $eventA )
>
>     The engine has no idea that $eventA is an event in the working memory.
> From the engine's point of view, it is just a "foo" attribute from the
> Wrapper fact. So it checks if event A is a Date (nope), a long (nope) and
> finally tries to use it as an event raising the exception you see.
>
>     On your last example:
>
> $eventA : Foo( this == $foo )
>
>     $eventA is an event in the working memory with all the internal
> metadata required to handle events. So, in this case, the engine knows how
> to deal with it.
>
>     Suggestions on how to improve that are welcome.
>
>     Edson
>
> 2010/8/13 Wolfgang Laun <wolfgang.laun at gmail.com>
>
>> According to the Fusion manual, "after" is used like this:
>>
>>    $eventA : Foo(...)
>>    $eventB : Bar( this after[0ms,1h] $eventA )
>>
>> provided Foo and Bar have @role(event).
>>
>> This works.
>>
>> But, given a class Wrapper( Foo foo ), the pattern combination
>>    Wrapper( $eventA : foo )
>>    $eventB : Bar( this after[0ms,1h] $eventA )
>> results in a class cast exception at runtime, telling me that a Foo cannot
>> be cast to a org.drools.common.EventFactHandle.
>>
>> Working around this by doing
>>   Wrapper( $foo: foo )
>>   $eventA : Foo( this == $foo )
>>   $eventB : Bar( this after[0ms,1h] $eventA )
>>
>> solves the problem, but is this really necessary and intentional? (The
>> documentation doesn't even hint at such a restriction.)
>>
>> -W
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
>
> --
>   Edson Tirelli
>   JBoss Drools Core Development
>   JBoss by Red Hat @ www.jboss.com
>
> _______________________________________________
> 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/20100813/1443f3e2/attachment.html 


More information about the rules-users mailing list