[rules-users] Accumulate function, events and stream processing

Wolfgang Laun wolfgang.laun at gmail.com
Tue Jan 31 11:32:41 EST 2012


Well, I can't reproduce the failure of "FirstRule" to fire - both
rules fire after the insertion of a single event. Of course, I use a
simplified scenario, and there are only these two rules in my
knowledge base.

Using 5.3.0 final; not OSGi, but I don't see how this should matter.

Check the
   RULES_CHANGESET = "org/openhab/core/drools/changeset.xml";
Does it really refer to one DRL with just these two rules?

-W



On 31/01/2012, Philipp Herzig <pherzig at googlemail.com> wrote:
> Have you ever tried out to insert the events into the
> WorkingMemoryEntryPoint "EventStream" directly that you have commented out
> in your execute method?
> and read the window from that eventstream in your rule, that is,
> "window:length( 5 ) from entry-point EvenStream".
>
> Of course, the second rule will fire also if it would be no event but a
> simple fact for drools.
> Unfortunately, I do not know under which condition the default entrypoint
> is populated.
>
> 2012/1/31 juankera <juankera at gmail.com>
>
>> Tried, but won't work.
>>
>> Ok, step by step.
>>
>> 1- DRL File
>>
>> Event declared, FirstRule won't work and SecondRule is working properly
>> (neither count or sum)
>>
>> declare StateEvent
>>        @role( event )
>> end
>>
>> rule "FirstRule"
>>
>> when
>>        Number( $total : doubleValue ) from accumulate(
>>        StateEvent(itemName=="Temperatura", $val : newState) over
>> window:length( 5 ),
>>        count ( 1 ))
>> then
>>    System.out.println("" + $total);
>> end
>>
>> rule "SecondRule "
>>
>> when
>>        StateEvent(itemName=="Temperatura", $val : newState)
>> then
>>        System.out.println("" +
>> ((DecimalType)$val).toBigDecimal().doubleValue());
>> end
>>
>> 2. Important lines from Engine starting (notice that i'm using stateful
>> session)
>>
>> KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
>>
>> kbuilder.add(ResourceFactory.newClassPathResource(RULES_CHANGESET,
>> getClass()), ResourceType.CHANGE_SET);
>>
>> KnowledgeBaseConfiguration kbaseConfig =
>> KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
>> kbaseConfig.setOption( EventProcessingOption.STREAM );
>> KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(kbaseConfig);
>>
>> StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
>>
>> 3. Attached you can find the full code
>> http://drools.46999.n3.nabble.com/file/n3703619/RuleService.java
>> RuleService.java
>>
>> 4. Environment
>>
>> Drools 5.3.0 FINAL, running on a OSGi environment.
>>
>>
>>
>>
>>
>> --
>> View this message in context:
>> http://drools.46999.n3.nabble.com/rules-users-Accumulate-function-events-and-stream-processing-tp3700577p3703619.html
>> Sent from the Drools: User forum mailing list archive at Nabble.com.
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>
>
>
> --
> --------------------------------------------
> Philipp Herzig, M.Sc.
>
> Mail: pherzig at googlemail.com
> Cell: 0178 - 6156244
>



More information about the rules-users mailing list