2 Replies Latest reply: Dec 9, 2011 11:45 AM by Sanket Mohile RSS

    Creating process dynamically using Fluent API

    Sanket Mohile Newbie

      Hi,

      I want to create a process dynamically using Fluent API.

      I tried this -

       

      RuleFlowProcessFactory factory = RuleFlowProcessFactory.createProcess("com.sample.process");

        

         factory

          // Header

          .name("HelloWorldProcess")

          .version("1.0")

          .packageName("defaultPackage")

          // 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);

       

      But when I start the process, I get an exception

       

      java.lang.RuntimeException: unable to execute Action

      at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:49)

      at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)

      at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerConnection(NodeInstanceImpl.java:185)

      at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:150)

      at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:49)

      at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:41)

      at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:122)

      at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)

      at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:188)

      at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:302)

      at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:154)

      at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:124)

      at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:116)

      at org.drools.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1090)

      at org.drools.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:301)

      at com.sample.Example1.main(Example1.java:57)

      Caused by: java.lang.NullPointerException

      at org.jbpm.workflow.instance.node.ActionNodeInstance.internalTrigger(ActionNodeInstance.java:47)

      ... 15 more

       

      If I remove the actionNode, the code runs successfully.

      Similarly in case of a human task node, when I use a .onEntryAction("java", "java.util.Map contentParam = new java.util.HashMap();"); it crashes.

      Seems some problem with the "java" dialect. Just not able to figure that out...

       

      Please help.

      Also would be glad if someone could provide a sample code for creating dynamic process with fluent API..

       

      Thanks,

      Sanket.