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&#39;ve been banging my head against this for days and just can&#39;t get it<br>
to work.  At this point I&#39;d like to just get the example code working.<br> I&#39;ve got a simple class that is currently being driven by a JUnit<br>
test case.  I just want to create a Process flow and execute it.  I<br>don&#39;t care what it does at this point.  Hello world level stuff.<br><br>My method under test:<br><br>       public String runFlow() throws Exception {<br>

<br>       RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess(&quot;org.drools.process&quot;);<br>       factory<br>               // header<br>               .name(&quot;My process&quot;).packageName(&quot;org.drools&quot;)<br>

               // nodes<br>               .startNode(1).name(&quot;Start&quot;).done()<br>               .actionNode(2).name(&quot;Action&quot;)<br>               .action(&quot;java&quot;, &quot;System.out.println(\&quot;Hello World\&quot;);&quot;).done()<br>

               .endNode(3).name(&quot;End&quot;).done()<br>               // connections<br>               .connection(1, 2)<br>               .connection(2, 3);<br><br>       RuleFlowProcess process = factory.validate().getProcess();<br>

<br>       KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();<br>       KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(knowledgeBase);<br><br>       Package pkg = new Package(&quot;package1&quot;);<br>

       pkg.addProcess(process);<br>       RuleBase ruleBase = RuleBaseFactory.newRuleBase();<br>       ruleBase.addPackage(pkg);<br><br>       Collection&lt;KnowledgePackage&gt; kpackages = builder.getKnowledgePackages();<br>

       KnowledgePackage kpackage = new KnowledgePackageImp(pkg);<br>       kpackages.add(kpackage);<br>       knowledgeBase.addKnowledgePackages(kpackages);<br><br>       StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();<br>

<br>       KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);<br><br>       ksession.startProcess(&quot;org.drools.process&quot;);<br><br>       return &quot;foo&quot;;<br>   }<br><br>

When I run this process, I get an exception when the Action node is<br>run.  It is a NPE and it happens because the metaData map in the<br>underlying ActionNode does not contain a KVP for &quot;Action&quot;.  It looks<br>

like that KVP is added in in the DroolsAction class when the public<br>void wire(Object object) method is called.  Unfortunately, I can&#39;t<br>figure out what causes that method to be called.  I&#39;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&#39;t figure out how to set<br>up the knowledge base when building a RuleFlowProcess using the<br>RuleFlowProcessFactory.  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&#39;t work with Drools 5.0.1 either.<br><br>Any help would be appreciated.  The flat spot on my forehead is<br>

getting flatter every day I continue to bang my head against the wall.<br><br>Here&#39;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>

       at org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:56)<br>       at org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:117)<br>       at org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:178)<br>

       at org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:144)<br>       at org.drools.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)<br>       at org.drools.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)<br>

       at org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:117)<br>       at org.drools.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:32)<br>       at org.drools.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:192)<br>

       at org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:309)<br>       at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1644)<br>       at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1622)<br>

       at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:301)<br>       at com.proferi.epm.process.DroolsFlowManager.runFlow(DroolsFlowManager.java:75)<br>       at com.proferi.epm.process.DroolsFlowManagerTest.testRunFlow(DroolsFlowManagerTest.java:33)<br>

       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br>       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br>

       at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)<br>       at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)<br>       at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)<br>

       at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)<br>       at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)<br>       at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)<br>

       at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)<br>       at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)<br>       at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)<br>

       at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)<br>       at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)<br>       at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)<br>

       at org.junit.runner.JUnitCore.run(JUnitCore.java:130)<br>       at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:64)<br>Caused by: java.lang.NullPointerException<br>       at org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:54)<br>

       ... 34 more<br clear="all"></div>
<div> </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> - CTO @ <a href="http://www.plugtree.com">http://www.plugtree.com</a>  <br> - MyJourney @ <a href="http://salaboy.wordpress.com">http://salaboy.wordpress.com</a><br>
 - Co-Founder @ <a href="http://www.jbug.com.ar">http://www.jbug.com.ar</a><br> <br> - Salatino &quot;Salaboy&quot; Mauricio -<br>