[rules-users] stream mode and DroolsStreamUtils
Jaroslaw Kijanowski
kijanowski at gmail.com
Tue Jun 30 11:05:55 EDT 2009
https://jira.jboss.org/jira/browse/JBRULES-2150
Thanks.
Edson Tirelli wrote:
>
> 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
> <mailto: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 <mailto: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 <http://www.jboss.com>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
More information about the rules-users
mailing list