The case may not be supported, but even then, it should be reported as a compilation error, not as a NPE I'll investigate and report back later Thanks Davide
On 07/22/2014 05:48 PM, Borris wrote: > I was experimenting with ways of avoiding having to put literal strings > into my rules (it is very fragile and bugs can be silent for a long > time). I tried declaring a global and then tried supplying it to a > query. This generates a backtrace during the newKieSession. A simple > example to provoke the problem: > > > KieServices ks = KieServices.Factory.get(); > KieContainer kContainer = ks.getKieClasspathContainer(); > KieSession kSession = > kContainer.newKieSession("ksession-rules"); > > kSession.setGlobal("AString", "Hello World"); > > kSession.fireAllRules(); > > > > package com.sample > > global java.lang.String AString; > > declare Thing > name: String @key > end > > rule init > when > then > insert( new Thing( AString ) ); > end > > query test(String $in) > Thing( $in; ) > end > > rule spot > when > test( "Hello World"; ) > Thing( "Hello World"; ) > test( AString; ) > Thing( AString; ) > then > System.out.println("found msg\n"); > end > > > java.lang.NullPointerException > at > org.drools.core.rule.LogicTransformer.processElement(LogicTransformer.java:243) > at > org.drools.core.rule.LogicTransformer.processElement(LogicTransformer.java:263) > at > org.drools.core.rule.LogicTransformer.fixClonedDeclarations(LogicTransformer.java:134) > at > org.drools.core.rule.LogicTransformer.transform(LogicTransformer.java:99) > at > org.drools.core.definitions.rule.impl.RuleImpl.getTransformedLhs(RuleImpl.java:560) > at > org.drools.core.reteoo.builder.ReteooRuleBuilder.addRule(ReteooRuleBuilder.java:105) > at org.drools.core.reteoo.ReteooBuilder.addRule(ReteooBuilder.java:100) > at > org.drools.core.impl.KnowledgeBaseImpl.addRule(KnowledgeBaseImpl.java:1455) > at > org.drools.core.impl.KnowledgeBaseImpl.addRule(KnowledgeBaseImpl.java:1435) > at > org.drools.core.impl.KnowledgeBaseImpl.addPackages(KnowledgeBaseImpl.java:838) > at > org.drools.core.impl.KnowledgeBaseImpl.addKnowledgePackages(KnowledgeBaseImpl.java:266) > at > org.drools.compiler.kie.builder.impl.KieContainerImpl.createKieBase(KieContainerImpl.java:412) > at > org.drools.compiler.kie.builder.impl.KieContainerImpl.getKieBase(KieContainerImpl.java:346) > at > org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:498) > at > org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:469) > at com.sample.DroolsTest.main(DroolsTest.java:17) > > > The 3rd action in the spot rule causes the null exception during > initialise, if it is present. Comment out just that line and no > exceptions happen and behaviour is as expected. > > Are globals permitted in the way I am trying to use them, as a parameter > to a query? > > Borris > > > > > _______________________________________________ > rules-users mailing list > rules-users@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users > _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users