1 Reply Latest reply on Nov 23, 2012 6:42 AM by Laura delli Paoli

    Domain-specific process doesn't start

    Laura delli Paoli Master

      Hello everybody,

      I'm  using JBoss AS 7.1.1 and jBPM 5.4.

      I was trying to define my custom process "Run Action".

      1) I created my "MyProcessesDefinition.conf" file:

      import org.drools.process.core.datatype.impl.type.ObjectDataType;

      import org.drools.process.core.datatype.impl.type.StringDataType;

      import org.drools.process.core.datatype.impl.type.IntegerDataType;

      [

        // my workItem

        [

          "name" : "RunAction",

          "parameters" : [

            "Command" : new StringDataType(),

            "Parameters" : new ObjectDataType(),

          ],

          "results" : [

            "ExitValue" : new IntegerDataType(),

          ],

          "displayName" : "RunAction",

          "icon" : "icons/operation.ico"

        ]

       

       

      ]

      2) I created my "drools.rulebase.conf"

      drools.workDefinitions = MyProcessesDefinition.conf WorkDefinitions.conf

      3) I created the the RunAction handler

       

      public class RunActionHandler implements WorkItemHandler {

       

       

                @Override

                public void abortWorkItem(WorkItem workItem, WorkItemManager manager) {

                          // extract parameters

                    String command = (String) workItem.getParameter("Command");

                   

                    HashMap parameters = (HashMap) workItem.getParameter("Parameters");

       

       

                    // run command

                            

                    String command_with_params =command;

                    Runtime runtime = Runtime.getRuntime();

                    Process process = null;

               

                    System.out.println("okkk");

                   

                   

                    Map<String, Object> result = new HashMap<String, Object>();

                   

                     result.put("ExitValue", new Integer (0));

                   

                    // notify manager that work item has been completed

                   

                   manager.completeWorkItem(workItem.getId(), result);

       

                }

       

       

                @Override

                public void executeWorkItem(WorkItem arg0, WorkItemManager arg1) {

                          // Se invio un Ctrl+C interrompo il task????

                }

       

      }

       

      4)I created the process depicted in the attachement

      5) I wrote the following main:

      public class ProcessMain {

       

                public static final void main(String[] args) throws Exception {

                          // load up the knowledge base

                          KnowledgeBase kbase = readKnowledgeBase();

                          StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();

       

                          ksession.getWorkItemManager().registerWorkItemHandler("RunAction", new RunActionHandler());

       

                          Map<String, Object> params = new HashMap<String, Object>();

                          Object workflowName= new String ("C:\test.bat"), Properties = new String("");

                          params.put("Command", workflowName);

                          params.put("Parameters", Properties);

       

                          // start a new process instance

                          ksession.startProcess("wkfRepository.singleTaskWkf", params);

                          System.out.println("Process started ...");

                }

       

       

                private static KnowledgeBase readKnowledgeBase() throws Exception {

                          KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

                          kbuilder.add(ResourceFactory.newClassPathResource("SingleTaskWkf.bpmn"), ResourceType.BPMN2);

                          return kbuilder.newKnowledgeBase();

                } 

      }

       

      When I start the JBoss server, and run the the java application the process ends, but the custom process does not start (the "okkk" message is NOT printed).

       

      Can anyone help me?