I figured it out. 
 
I was missing the buildProcess() call which actually turns all the nodes into Rules:
 
        PackageBuilder packageBuilder = new PackageBuilder();
        ProcessBuilder processBuilder = new ProcessBuilder(packageBuilder);
        processBuilder.buildProcess(process, null);
I found it by grepping through the JUnit test cases in a test case that had nothing to do with the Fluent API, but was just using it to create a process as part of the set up for another test.
 
Now, I have another question: When using the Fluent API to create a Process that has a WorkItemNode, do I have to define the work parameter definitions, or can I just set parameters directly, without defining their types first?  Are the type definitions just needed for the UI process builders (which I will not be using)?  I didn't see any code in the WorkItemImpl which checks that the value passed to setParameter matches the defined types.

Regards,

Dan Nathanson



2010/12/27 Mauricio Salatino <salaboy@gmail.com>
I'm working with 5.2.0.SNAPSHOT.. I will try to test your code and let you know my results..
Greetings.

2010/12/27 Daniel Nathanson <dan@ddnconsulting.com>

Hi Mauricio,

Were you ever able to figure out what I am doing wrong?

Regards, 

Dan Nathanson

On Dec 23, 2010, at 3:10 AM, Mauricio Salatino wrote:

Hi There..
What version of Drools are you using?
I can help you to figure out what is happening..

2010/12/23 Dan Nathanson <dan@ddnconsulting.com>
Hi,

I've been banging my head against this for days and just can't get it
to work.  At this point I'd like to just get the example code working.
 I've got a simple class that is currently being driven by a JUnit
test case.  I just want to create a Process flow and execute it.  I
don't care what it does at this point.  Hello world level stuff.

My method under test:

       public String runFlow() throws Exception {

       RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess("org.drools.process");
       factory
               // header
               .name("My process").packageName("org.drools")
               // nodes
               .startNode(1).name("Start").done()
               .actionNode(2).name("Action")
               .action("java", "System.out.println(\"Hello World\");").done()
               .endNode(3).name("End").done()
               // connections
               .connection(1, 2)
               .connection(2, 3);

       RuleFlowProcess process = factory.validate().getProcess();

       KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase();
       KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(knowledgeBase);

       Package pkg = new Package("package1");
       pkg.addProcess(process);
       RuleBase ruleBase = RuleBaseFactory.newRuleBase();
       ruleBase.addPackage(pkg);

       Collection<KnowledgePackage> kpackages = builder.getKnowledgePackages();
       KnowledgePackage kpackage = new KnowledgePackageImp(pkg);
       kpackages.add(kpackage);
       knowledgeBase.addKnowledgePackages(kpackages);

       StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();

       KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);

       ksession.startProcess("org.drools.process");

       return "foo";
   }

When I run this process, I get an exception when the Action node is
run.  It is a NPE and it happens because the metaData map in the
underlying ActionNode does not contain a KVP for "Action".  It looks
like that KVP is added in in the DroolsAction class when the public
void wire(Object object) method is called.  Unfortunately, I can't
figure out what causes that method to be called.  I'm pretty sure my
problem is with the set up of my knowledge base (the call to new
KnowledgePackageImp() is suspect), but I can't figure out how to set
up the knowledge base when building a RuleFlowProcess using the
RuleFlowProcessFactory.  None of the examples I can find show how to
do this.

Note that if I take out the Action node and just have Start and End
nodes, it works fine.

I am using Drools 5.1.0, but it doesn't work with Drools 5.0.1 either.

Any help would be appreciated.  The flat spot on my forehead is
getting flatter every day I continue to bang my head against the wall.

Here's the output (including KnowledgeRuntimeLogger output):

BEFORE RULEFLOW STARTED process:My process[id=org.drools.process]
BEFORE RULEFLOW NODE TRIGGERED node:Start[id=1] process:My
process[id=org.drools.process]
null process:My process[id=org.drools.process]
BEFORE RULEFLOW NODE TRIGGERED node:Action[id=2] process:My
process[id=org.drools.process]

java.lang.RuntimeException: unable to execute Action
       at org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:56)
       at org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:117)
       at org.drools.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:178)
       at org.drools.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:144)
       at org.drools.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)
       at org.drools.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)
       at org.drools.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:117)
       at org.drools.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:32)
       at org.drools.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:192)
       at org.drools.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:309)
       at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1644)
       at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1622)
       at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:301)
       at com.proferi.epm.process.DroolsFlowManager.runFlow(DroolsFlowManager.java:75)
       at com.proferi.epm.process.DroolsFlowManagerTest.testRunFlow(DroolsFlowManagerTest.java:33)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
       at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
       at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
       at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
       at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
       at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
       at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
       at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
       at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
       at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
       at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
       at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
       at org.junit.runner.JUnitCore.run(JUnitCore.java:130)
       at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:64)
Caused by: java.lang.NullPointerException
       at org.drools.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:54)
       ... 34 more
 
Regards,

Dan Nathanson


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users




--
 - CTO @ http://www.plugtree.com 
 - MyJourney @ http://salaboy.wordpress.com
 - Co-Founder @ http://www.jbug.com.ar
 
 - Salatino "Salaboy" Mauricio -
_______________________________________________
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




--
 - CTO @ http://www.plugtree.com 
 - MyJourney @ http://salaboy.wordpress.com
 - Co-Founder @ http://www.jbug.com.ar
 
 - Salatino "Salaboy" Mauricio -

_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users