[jboss-user] [JBoss jBPM] - Add token with external application

jeanC do-not-reply at jboss.com
Tue Mar 11 11:31:27 EDT 2008


I have a process that automatically create nodes (node1). I want to add a new node1 with an external application. I try to call the execute method of the forkHandler but I can not get the executionContext. 

I put all the code of the execute method in the external application, I can obtain the rootToken, but when I try  this code the jpbCxt is always null
ExecutionContext executionContext = new ExecutionContext(rootToken);
JbpmContext jpbCxt = executionContext.getJbpmContext();

Is it possible to do this and how can I do this? 

Thanks 


  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <process-definition
  |   xmlns=""  name="dynamic fork">
  |    <start-state name="start">
  |       <transition name="" to="fork"></transition>
  |    </start-state>
  |    <end-state name="end"></end-state>
  |    <node name="fork">
  |    
  |       <action class="be.labocollard.server.kernel.handlers.ForkHandler"></action>
  |       <transition name="" to="node1"></transition>
  |    </node>
  |    <task-node name="task">
  |       <task name="taskFork">
  |          <assignment expression="user(abc)"></assignment>
  |       </task>
  |       <transition name="" to="join"></transition>
  |    </task-node>
  |    <join name="join">
  |       <transition name="" to="end"></transition>
  |    </join>
  |    <node name="node1">
  |       <transition name="" to="task"></transition>
  |    </node>
  | </process-definition>
  | 
  | 


  | public class ForkHandler implements ActionHandler {
  |     /**
  |      * Logger for this class
  |      */
  |     private static final Logger logger = Logger.getLogger(ForkHandler.class);
  |     
  |     /**
  |      * 
  |      */
  |     private static final long serialVersionUID = 1L;
  |     
  |     /**
  |      * Create a new child token for each item in list.
  |      * 
  |      * @param executionContext
  |      * @throws Exception
  |      */
  |     public void execute(final ExecutionContext executionContext) throws Exception {
  |         logger.debug("execute(ExecutionContext executionContext=" + executionContext + ") - start");
  |         
  |         List<? extends Object> forkList = null;
  |         forkList = initializeList(executionContext);
  |         
  |         final Token rootToken = executionContext.getToken();
  |         final Node node = executionContext.getNode();
  |         
  |         final List<Object[]> argSets = new LinkedList<Object[]>();
  |         //
  |         // First, create a new token and execution context for each item in
  |         // list.
  |         //
  |         for (int i = 0; i < node.getLeavingTransitions().size(); i++) {
  |             final Transition transition = (Transition) node.getLeavingTransitions().get(i);
  |             for (Object object : forkList) {
  |                 final Token newToken = new Token(rootToken, Cola.PREFIX + node.getId() + "." + ((OpCodeTime) object).getId());
  |                 newToken.setTerminationImplicit(true);
  |                 JbpmContext jpbCxt = executionContext.getJbpmContext();
  |                 Session session = jpbCxt.getSession();
  |                 session.save(newToken);
  |                 final ExecutionContext newExecutionContext = new ExecutionContext(newToken);
  |                 newExecutionContext.setVariable(Cola.OPCODETIME, object);
  |                 argSets.add(new Object[] { newExecutionContext, transition });
  |             }
  |         }
  |         
  |         //
  |         // Now, let each new token leave the node.
  |         //
  |         for (int i = 0; i < argSets.size(); i++) {
  |             final Object[] args = argSets.get(i);
  |             node.leave((ExecutionContext) args[0], (Transition) args[1]);
  |         }
  |         
  |         logger.debug("execute(ExecutionContext) - end");
  |     }
  |     
  |     //  @SuppressWarnings("unchecked")
  |     protected List<? extends Object> initializeList(final ExecutionContext executionContext) {
  |         List<? extends Object> list = (List<? extends Object>) executionContext.getContextInstance().getVariable(Cola.FORKLIST);
  |         return list;
  |     }
  |     
  | }
  | 
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4135671#4135671

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4135671



More information about the jboss-user mailing list