Sorry Edson ... I can't declare the fact type with the parameter @role(
event ) in guvnor throw creating a declarative model :( could you explain it
better?
2009/4/2 Edson Tirelli <tirelli(a)post.com>
Declare your fact type with @role( event ).
2009/4/2 Nestor Tarin Burriel <nestabur(a)gmail.com>
And how can I create events from guvnor?
>
> 2009/4/2 Edson Tirelli <tirelli(a)post.com>
>
>
>> Need to fix the error message, but it seems you are trying to use the
>> sliding window on regular facts... sliding window only makes sense for
>> events...
>>
>> Also, the property you are using to set the event processing mode
>> seems wrong. Check here:
>>
>>
>>
https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/t...
>>
>> []s
>> Edson
>>
>> 2009/4/2 nestabur <nestabur(a)gmail.com>
>>
>>
>>>
>>> Hi All,
>>>
>>> I'm trying to use sliding windows with guvnor, I deploy the package in
>>> my
>>> rule engine as:
>>>
>>> Properties props = new Properties();
>>> props.put("url", rulePackagePath);
>>> props.put("eventProcessingMode",
"stream");
>>>
>>> agent = RuleAgent.newRuleAgent(props);
>>> session = agent.getRuleBase().newStatefulSession();
>>>
>>> When I insert a fact into the working memory as:
>>> session.insert(fact);
>>> session.fireAllRules();
>>>
>>> I get the following error:
>>>
>>> Exception while processing message: java.lang.ClassCastException:
>>> org.drools.common.DefaultFactHandle cannot be cast to
>>> org.drools.common.EventFactHandle
>>> java.lang.ClassCastException: org.drools.common.DefaultFactHandle cannot
>>> be
>>> cast to org.drools.common.EventFactHandle
>>> at
>>>
>>>
org.drools.rule.SlidingTimeWindow.updateNextExpiration(SlidingTimeWindow.java:192)
>>> at
>>>
>>>
org.drools.rule.SlidingTimeWindow.assertRightTuple(SlidingTimeWindow.java:119)
>>> at
>>>
>>> org.drools.rule.BehaviorManager.assertRightTuple(BehaviorManager.java:87)
>>> at org.drools.reteoo.ExistsNode.assertObject(ExistsNode.java:172)
>>> at
>>>
>>>
org.drools.reteoo.CompositeObjectSinkAdapter.doPropagateAssertObject(CompositeObjectSinkAdapter.java:366)
>>> at
>>>
>>>
org.drools.reteoo.CompositeObjectSinkAdapter.propagateAssertObject(CompositeObjectSinkAdapter.java:349)
>>> at org.drools.reteoo.AlphaNode.assertObject(AlphaNode.java:147)
>>> at
>>>
>>>
org.drools.reteoo.SingleObjectSinkAdapter.propagateAssertObject(SingleObjectSinkAdapter.java:42)
>>> at
>>> org.drools.reteoo.ObjectTypeNode.assertObject(ObjectTypeNode.java:184)
>>> at
>>> org.drools.reteoo.EntryPointNode.assertObject(EntryPointNode.java:146)
>>> at
>>>
>>>
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1066)
>>> at
>>>
>>>
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:1022)
>>> at
>>>
>>>
org.drools.common.AbstractWorkingMemory.insert(AbstractWorkingMemory.java:810)
>>> at
>>>
>>>
com.s2grupo.triton.service.impl.CorrelatorServiceImpl.insertFact(CorrelatorServiceImpl.java:64)
>>> at
>>>
>>>
com.s2grupo.triton.jms.impl.JmsMessageListenerImpl.onMessage(JmsMessageListenerImpl.java:67)
>>> at
>>>
>>>
org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1021)
>>> at
>>>
>>>
org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:122)
>>> at
>>>
>>>
org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:192)
>>> at
>>>
>>>
org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
>>> at
>>>
>>> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
>>> at
>>>
>>>
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>>> at
>>>
>>>
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>>> at java.lang.Thread.run(Thread.java:619)
>>>
>>> What I'm missing? Is it a bug? I'm using the 5.0.0.SNAPSHOT version
of
>>> drools.
>>>
>>> Thanks,
>>>
>>> NEStor
>>>
>>>
>>> ober0n wrote:
>>> >
>>> > Hi Ed, thanks for the quick reply, I will try the temporal constraints
>>> as
>>> > well.
>>> >
>>> > I haven't completed my testing yet but the sliding windows seems to
be
>>> > working. Thanks!
>>> >
>>> > I am getting a strange problem of my program hanging. It gets all the
>>> way
>>> > past my "dispose()" of the StatefulKnowledgeSession and
closing the
>>> > session logger and to the end of my main(). Then it just sits there.
>>> I'm
>>> > thinking it's a bug in my rules but wanted to make sure this
wasn't a
>>> > feature of Streams (maybe some thread kicked off to accept facts or
>>> > something).
>>> >
>>> > If you could just confirm nothing in Drools fusion is supposed to
>>> continue
>>> > running, that would be great.
>>> >
>>> > Here are the significant snippets of my code:
>>> > ...
>>> > WorkingMemoryEntryPoint eventStream =
>>> > ksession.getWorkingMemoryEntryPoint( "EventStream" );
>>> > ...
>>> > eventStream.insert(goodbye_message);
>>> > Thread.sleep(10000);
>>> > eventStream.insert(hello_message);
>>> > ksession.fireAllRules();
>>> > ksession.dispose();
>>> > logger.close();
>>> > } catch (Throwable t) {
>>> > t.printStackTrace();
>>> > }
>>> > } // end main() <-- tracing through the code, I get past the end of
>>> > main() then see a "Source not found." in the Eclipse debugger
which
>>> seems
>>> > to be looking for "Thread.exit() line: 604"
>>> >
>>> >
>>> > The updated rule:
>>> >
>>> > declare Message
>>> > @role( event )
>>> > end
>>> >
>>> > rule "Hello World"
>>> > when
>>> > Message( status == Message.HELLO ) from entry-point
>>> "EventStream"
>>> > exists(Message( status == Message.GOODBYE ) over
>>> window:time( 4s ) from
>>> > entry-point "EventStream")
>>> > then
>>> >
>>> >
>>>
System.out.println("**************************************************");
>>> > System.out.println( "There was a GOODBYE message
near
>>> the HELLO
>>> > message." );
>>> >
>>> >
>>>
System.out.println("**************************************************");
>>> > end
>>> >
>>> > Thanks.
>>> >
>>> >
>>> > Edson Tirelli-3 wrote:
>>> >>
>>> >> Although your rule should work, the best way to write your rule
>>> would
>>> >> be
>>> >> using temporal constraints instead of sliding windows:
>>> >>
>>> >> rule "Goodbye before Hello World"
>>> >> when
>>> >> $m : Message( status == Message.HELLO )
>>> >> exists( Message( status == Message.GOODBYE, this
>>> >> before[0s,3s] $m ) )
>>> >> then
>>> >> System.out.println( "There was a GOODBYE
message
>>> before
>>> >> the
>>> >> HELLO
>>> >> message." );
>>> >> end
>>> >>
>>> >> Using "before" operator is not only much cheaper (in
terms of
>>> used
>>> >> resources) than sliding windows, but it also allow the engine to
>>> reason
>>> >> over
>>> >> the temporal constraints looking for special cases, like when you
use
>>> >> negative patterns.
>>> >>
>>> >> I will look further into your case to check if I missed
anything
>>> on
>>> >> the
>>> >> sliding windows support, but using STREAM mode should work.
>>> >>
>>> >> If you can open a JIRA for me to raise a compilation error when
>>> >> compiling sliding windows using CLOUD mode, I appreciate. This will
>>> allow
>>> >> you to follow up my progress.
>>> >>
>>> >> []s
>>> >> Edson
>>> >>
>>> >>
>>> >> 2009/3/30 ober0n <lili339(a)hotmail.com>
>>> >>
>>> >>>
>>> >>> Hi Ed, no need to apologize, you have been invaluable in my
first
>>> steps
>>> >>> towards Drooling :-D so thanks for all your help, it is GREATLY
>>> >>> appreciated
>>> >>> :clap:.
>>> >>>
>>> >>> We have a few scenarios in mind but aren't really
implementing them
>>> yet,
>>> >>> just trying to see if sliding windows works the way we think it
>>> does. In
>>> >>> the
>>> >>> simple rule I wrote above, I basically want to check if two
facts
>>> are
>>> >>> temporally close.
>>> >>>
>>> >>> Yes, you are correct. I didn't pay enough attention to the
manual
>>> and
>>> >>> didn't
>>> >>> use STREAM mode to enter in my facts. I will use the manual
>>> insertion
>>> >>> process found in "Example 2.10. Inserting facts into an
entry point"
>>> of
>>> >>> section "2.3. Streams Support" to update my code. And,
I will update
>>> my
>>> >>> rule
>>> >>> to specify a "from entry-point <Specific
Stream>".
>>> >>>
>>> >>> Also, could you comment on the simple rule I am using? Does it
look
>>> like
>>> >>> it
>>> >>> should work after I do the updates? Or is my logic incorrect?
>>> >>>
>>> >>> Thanks again.
>>> >>>
>>> >>>
>>> >>>
>>> >>> Ober0n,
>>> >>>
>>> >>> Sorry for the delay on answering. I am on a trip with limited
>>> internet
>>> >>> connection.
>>> >>> I am interested in your experience with the sliding windows,
since
>>> the
>>> >>> tests are working. Maybe it is a scenario not covered by the
tests.
>>> >>>
>>> >>> In any case, what is probably happening is that you are not
>>> >>> configuring
>>> >>> the engine to work in STREAM mode. The default mode is CLOUD and
it
>>> does
>>> >>> not
>>> >>> support sliding windows. It seems the engine is silently failing
in
>>> this
>>> >>> case, when the compiler raise an error to warn the user.
>>> >>>
>>> >>> I just committed some docs on this subject:
>>> >>>
>>> >>>
>>> >>>
>>>
https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/t...
>>> >>>
>>> >>> (plz, wait for hudson to rebuild the docs or build docs
>>> yourself).
>>> >>>
>>> >>> Feedback welcome. I will complement the sliding window docs.
>>> >>>
>>> >>> []s
>>> >>> Edson
>>> >>>
>>> >>> 2009/3/29 ober0n <lili339(a)hotmail.com>
>>> >>>
>>> >>> >
>>> >>> > Still trying to get sliding windows to work (basing my code
off of
>>> the
>>> >>> > Eclipse supplied "Hello World" example). I
don't think I fully
>>> >>> understand
>>> >>> > how it works yet so I'm trying to simplify things even
further by
>>> >>> writing
>>> >>> > a
>>> >>> > simple rule that is meant to say:
>>> >>> >
>>> >>> > if (current_message = "Hello" AND exists(
goodbye_message within
>>> >>> > sliding_window(3 seconds) ))
>>> >>> > then print("There was a GOODBYE message before the
HELLO message."
>>> )
>>> >>> >
>>> >>> > In other words: This rule should fire if the current Hello
World
>>> >>> message
>>> >>> > was
>>> >>> > preceeded within 3 seconds by a goodbye message.
>>> >>> >
>>> >>> >
>>> >>> >
>>> >>>
>>>
---------------------------------------------------------------------------------------------------
>>> >>> > I wrote a new rule for this:
>>> >>> >
>>> >>> > declare Message
>>> >>> > @role( event )
>>> >>> > end
>>> >>> >
>>> >>> > rule "Goodbye before Hello World"
>>> >>> > when
>>> >>> > Message( status == Message.HELLO )
>>> >>> > exists( Message( status == Message.GOODBYE )
over
>>> >>> > window:time( 3s ) )
>>> >>> > then
>>> >>> > System.out.println( "There was a
GOODBYE message
>>> before
>>> >>> the
>>> >>> > HELLO
>>> >>> > message." );
>>> >>> > end
>>> >>> >
>>> >>> >
>>> >>> >
>>> >>>
>>>
---------------------------------------------------------------------------------------------------
>>> >>> >
>>> >>> > To send the messages: (ksession is a
StatefulKnowledgeSession)
>>> >>> >
>>> >>> > ...
>>> >>> > ksession.insert(goodbye_message);
>>> >>> > ksession.fireAllRules();
>>> >>> >
>>> >>> > Thread.sleep(5000);
>>> >>> >
>>> >>> > ksession.insert(hello_message);
>>> >>> > ksession.fireAllRules();
>>> >>> > ...
>>> >>> >
>>> >>> >
>>> >>>
>>>
---------------------------------------------------------------------------------------------------
>>> >>> >
>>> >>> > I expect to get nothing back since I sent the Hello message
5
>>> seconds
>>> >>> > after
>>> >>> > the goodbye message (outside the sliding window of 3
seconds).
>>> But,
>>> >>> for
>>> >>> > some
>>> >>> > reason the rule fires and I get one:
>>> >>> >
>>> >>> > "There was a GOODBYE message before the HELLO
message."
>>> >>> >
>>> >>> > Any help would be greatly appreciated.
>>> >>> >
>>> >>> > Thanks!
>>> >>> > --
>>> >>> > View this message in context:
>>> >>> >
>>> >>>
>>>
http://www.nabble.com/Trying-to-get-Sliding-Windows-to-work-tp22735051p22...
>>> >>> > Sent from the drools - user mailing list archive at
Nabble.com.
>>> >>> >
>>> >>> > _______________________________________________
>>> >>> > rules-users mailing list
>>> >>> > rules-users(a)lists.jboss.org
>>> >>> >
https://lists.jboss.org/mailman/listinfo/rules-users
>>> >>> >
>>> >>>
>>> >>>
>>> >>>
>>> >>> --
>>> >>> Edson Tirelli
>>> >>> JBoss Drools Core Development
>>> >>> JBoss, a division of Red Hat @
www.jboss.com
>>> >>>
>>> >>> _______________________________________________
>>> >>> rules-users mailing list
>>> >>> rules-users(a)lists.jboss.org
>>> >>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>> >>>
>>> >>>
>>> >>>
>>> >>> --
>>> >>> View this message in context:
>>> >>>
>>>
http://www.nabble.com/Trying-to-get-Sliding-Windows-to-work-tp22735051p22...
>>> >>> Sent from the drools - user mailing list archive at
Nabble.com.
>>> >>>
>>> >>> _______________________________________________
>>> >>> rules-users mailing list
>>> >>> rules-users(a)lists.jboss.org
>>> >>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>> >>>
>>> >>
>>> >>
>>> >>
>>> >> --
>>> >> Edson Tirelli
>>> >> JBoss Drools Core Development
>>> >> JBoss, a division of Red Hat @
www.jboss.com
>>> >>
>>> >> _______________________________________________
>>> >> rules-users mailing list
>>> >> rules-users(a)lists.jboss.org
>>> >>
https://lists.jboss.org/mailman/listinfo/rules-users
>>> >>
>>> >>
>>> >
>>> >
>>>
>>> --
>>> View this message in context:
>>>
http://www.nabble.com/Trying-to-get-Sliding-Windows-to-work-tp22735051p22...
>>> Sent from the drools - user mailing list archive at
Nabble.com.
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users(a)lists.jboss.org
>>>
https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>
>>
>>
>> --
>> Edson Tirelli
>> JBoss Drools Core Development
>> JBoss, a division of Red Hat @
www.jboss.com
>>
>> _______________________________________________
>> 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
>
>
--
Edson Tirelli
JBoss Drools Core Development
JBoss, a division of Red Hat @
www.jboss.com
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users