[rules-users] stream mode and DroolsStreamUtils

Edson Tirelli tirelli at post.com
Tue Jun 30 10:50:50 EDT 2009


   Jaroslaw,

   This looks like a bug. Would you please open a JIRA and attach the info
bellow as well as drools and mvel version used?

   Thanks,
      Edson

2009/6/30 Jaroslaw Kijanowski <kijanowski at gmail.com>

> Hi,
>  I'm using sliding windows (hence stream mode).
> Here's my rule:
>
> declare Sensor
>        @role (event)
> end
>
> rule 'r'
> when
> Number( dv:doubleValue > 1 ) from accumulate(
>        Sensor( $v : value ) over window:length( 2 ),
>        average( $v ) )
> then
>        System.out.println(dv);
> end
>
> Here's my class:
>
> ++++++++++++++++++++++++++++++++++++++++++++++
> public class CEPTest {
>  public static void main(String[] args) throws Exception {
>
>    KnowledgeBuilder kbuilder =
> KnowledgeBuilderFactory.newKnowledgeBuilder();
>    kbuilder.add(ResourceFactory.newClassPathResource("cep.drl"),
> ResourceType.DRL);
>    if (kbuilder.getErrors().size() > 0) {
>      throw new IllegalArgumentException("Could not parse knowledge.");
>    }
>
>    KnowledgeBaseConfiguration kbaseConfig =
> KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
>    kbaseConfig.setOption(EventProcessingOption.STREAM);
>    KnowledgeBase kbase =
> KnowledgeBaseFactory.newKnowledgeBase(kbaseConfig);
>
>    kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
>    KnowledgeBase kbase2 = (KnowledgeBase)
> DroolsStreamUtils.streamIn(DroolsStreamUtils.streamOut(kbase), null);
>
>    final StatefulKnowledgeSession ksession =
> kbase2.newStatefulKnowledgeSession();
>
>    System.out.println("T1");
>    ksession.insert(new Sensor(1.0));
>    ksession.fireAllRules();
>
>    System.out.println("T2");
>    ksession.insert(new Sensor(2.0));
>    ksession.fireAllRules();
>
>    System.out.println("T3");
>    ksession.insert(new Sensor(3.0));
>    ksession.fireAllRules();
>
>    ksession.dispose();
>  }
> }
> ++++++++++++++++++++++++++++++++++++++++++++++
> The output is (as expected):
> +++++++++++++++
> T1
> T2
> 1.5
> T3
> 2.5
> +++++++++++++++
>
> I'm wondering why I have to use DroolsStreamUtils to get a knowledge base?
> When I use kbase (which didn't went through DroolsStreamUtils) instead of
> kbase2 to create a new session, the output will be:
> +++++++++++++++
> T1
> T2
> 2.0
> T3
> 3.0
> +++++++++++++++
>
> Thanks,
>  Jarek
> _______________________________________________
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090630/6fdbd7de/attachment.html 


More information about the rules-users mailing list