<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Mauricio,<div><br></div><div>Were you ever able to figure out what I am doing wrong?</div><div><br><div> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Regards,&nbsp;</div><div><br></div><div>Dan Nathanson</div></div></span> </div><br><div><div>On Dec 23, 2010, at 3:10 AM, Mauricio Salatino wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hi There..<br>What version of Drools are you using?<br>I can help you to figure out what is happening..<br><br><div class="gmail_quote">2010/12/23 Dan Nathanson <span dir="ltr">&lt;<a href="mailto:dan@ddnconsulting.com">dan@ddnconsulting.com</a>&gt;</span><br> <blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>Hi,<br><br>I've been banging my head against this for days and just can't get it<br> to work.&nbsp; At this point I'd like to just get the example code working.<br>&nbsp;I've got a simple class that is currently being driven by a JUnit<br> test case.&nbsp; I just want to create a Process flow and execute it.&nbsp; I<br>don't care what it does at this point.&nbsp; Hello world level stuff.<br><br>My method under test:<br><br>&nbsp;&nbsp; &nbsp; &nbsp; public String runFlow() throws Exception {<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;RuleFlowProcessFactory factory =&nbsp;RuleFlowProcessFactory.createProcess("org.drools.process");<br>&nbsp; &nbsp; &nbsp; &nbsp;factory<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// header<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.name("My process").packageName("org.drools")<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// nodes<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.startNode(1).name("Start").done()<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.actionNode(2).name("Action")<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.action("java", "System.out.println(\"Hello World\");").done()<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.endNode(3).name("End").done()<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// connections<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.connection(1, 2)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.connection(2, 3);<br><br>&nbsp; &nbsp; &nbsp; &nbsp;RuleFlowProcess process = factory.validate().getProcess();<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();<br>&nbsp; &nbsp; &nbsp; &nbsp;KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(knowledgeBase);<br><br>&nbsp; &nbsp; &nbsp; &nbsp;Package pkg = new Package("package1");<br> &nbsp; &nbsp; &nbsp; &nbsp;pkg.addProcess(process);<br>&nbsp; &nbsp; &nbsp; &nbsp;RuleBase ruleBase = RuleBaseFactory.newRuleBase();<br>&nbsp; &nbsp; &nbsp; &nbsp;ruleBase.addPackage(pkg);<br><br>&nbsp; &nbsp; &nbsp; &nbsp;Collection&lt;KnowledgePackage&gt; kpackages = builder.getKnowledgePackages();<br> &nbsp; &nbsp; &nbsp; &nbsp;KnowledgePackage kpackage = new KnowledgePackageImp(pkg);<br>&nbsp; &nbsp; &nbsp; &nbsp;kpackages.add(kpackage);<br>&nbsp; &nbsp; &nbsp; &nbsp;knowledgeBase.addKnowledgePackages(kpackages);<br><br>&nbsp; &nbsp; &nbsp; &nbsp;StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();<br> <br>&nbsp; &nbsp; &nbsp; &nbsp;KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);<br><br>&nbsp; &nbsp; &nbsp; &nbsp;ksession.startProcess("org.drools.process");<br><br>&nbsp; &nbsp; &nbsp; &nbsp;return "foo";<br>&nbsp; &nbsp;}<br><br> When I run this process, I get an exception when the Action node is<br>run. &nbsp;It is a NPE and it happens because the metaData map in the<br>underlying ActionNode does not contain a KVP for "Action". &nbsp;It looks<br> like that KVP is added in in the DroolsAction class when the public<br>void wire(Object object) method is called. &nbsp;Unfortunately, I can't<br>figure out what causes that method to be called. &nbsp;I'm pretty sure my<br> problem is with the set up of my knowledge base (the call to new<br>KnowledgePackageImp() is suspect), but I can't figure out how to set<br>up the knowledge base when building a RuleFlowProcess using the<br>RuleFlowProcessFactory. &nbsp;None of the examples I can find show how to<br> do this.<br><br>Note that if I take out the Action node and just have Start and End<br>nodes, it works fine.<br><br>I am using Drools 5.1.0, but it doesn't work with Drools 5.0.1 either.<br><br>Any help would be appreciated. &nbsp;The flat spot on my forehead is<br> getting flatter every day I continue to bang my head against the wall.<br><br>Here's the output (including KnowledgeRuntimeLogger output):<br><br>BEFORE RULEFLOW STARTED process:My process[id=org.drools.process]<br>BEFORE RULEFLOW NODE TRIGGERED node:Start[id=1] process:My<br> process[id=org.drools.process]<br>null process:My process[id=org.drools.process]<br>BEFORE RULEFLOW NODE TRIGGERED node:Action[id=2] process:My<br>process[id=org.drools.process]<br><br>java.lang.RuntimeException: unable to execute Action<br> &nbsp; &nbsp; &nbsp; &nbsp;at org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:56)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:117)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:178)<br> &nbsp; &nbsp; &nbsp; &nbsp;at org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:144)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.drools.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.drools.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)<br> &nbsp; &nbsp; &nbsp; &nbsp;at org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:117)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.drools.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:32)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.drools.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:192)<br> &nbsp; &nbsp; &nbsp; &nbsp;at org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:309)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1644)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1622)<br> &nbsp; &nbsp; &nbsp; &nbsp;at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:301)<br>&nbsp; &nbsp; &nbsp; &nbsp;at com.proferi.epm.process.DroolsFlowManager.runFlow(DroolsFlowManager.java:75)<br>&nbsp; &nbsp; &nbsp; &nbsp;at com.proferi.epm.process.DroolsFlowManagerTest.testRunFlow(DroolsFlowManagerTest.java:33)<br> &nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>&nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br>&nbsp; &nbsp; &nbsp; &nbsp;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br> &nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)<br> &nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)<br> &nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)<br> &nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)<br> &nbsp; &nbsp; &nbsp; &nbsp;at org.junit.runner.JUnitCore.run(JUnitCore.java:130)<br>&nbsp; &nbsp; &nbsp; &nbsp;at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:64)<br>Caused by: java.lang.NullPointerException<br>&nbsp; &nbsp; &nbsp; &nbsp;at org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:54)<br> &nbsp; &nbsp; &nbsp; &nbsp;... 34 more<br clear="all"></div> <div>&nbsp;</div> <div>Regards,<br><br>Dan Nathanson<br><br></div> <br>_______________________________________________<br> rules-users mailing list<br> <a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br> <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br> <br></blockquote></div><br><br clear="all"><br>-- <br>&nbsp;- CTO @ <a href="http://www.plugtree.com">http://www.plugtree.com</a>&nbsp; <br>&nbsp;- MyJourney @ <a href="http://salaboy.wordpress.com">http://salaboy.wordpress.com</a><br> &nbsp;- Co-Founder @ <a href="http://www.jbug.com.ar">http://www.jbug.com.ar</a><br>&nbsp;<br>&nbsp;- Salatino "Salaboy" Mauricio -<br> _______________________________________________<br>rules-users mailing list<br><a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>https://lists.jboss.org/mailman/listinfo/rules-users<br></blockquote></div><br></div></body></html>