[jboss-user] [JBoss jBPM] - Transition Join node

provaJbpm do-not-reply at jboss.com
Thu Oct 23 09:25:39 EDT 2008


Hi,

i've a little problem with join node during the step from my join node to the  next node.

In particular if i have 3 transitions (ex. tr1, tr2, tr3) but only the last one leave the join node, the others 2 are stopped on join node, so when i finished my flow i can see the "end state"  on the end node and on the join node.

Are these two transitions stored in the database or create a problem of memory and performance ?




This is an image that shows my flow:
http://www.flickr.com/photos/31362199@N03/2966198345/


This is the code that forwards the flow:

  | 	public Step[] forwardWF(User user, Step step, Long idWF) {
  | 		JbpmContext jbpmContext = null;
  | 		JbpmConfiguration jbpmConfiguration = null;
  | 		ProcessInstance processInstance = null;
  | 		Step[] steps = null;
  |  		try {
  |  			jbpmConfiguration = JbpmConfiguration.getInstance("WEB-INF/jbpm.cfg.xml");
  |  			jbpmContext = jbpmConfiguration.createJbpmContext();
  |  			processInstance = jbpmContext.getProcessInstance(idWF.longValue());
  |  			if (!processInstance.hasEnded()){
  | 	    		Token token = processInstance.getRootToken();
  | 				TaskMgmtSession taskSession = jbpmContext.getTaskMgmtSession();
  | 				List listaTask = taskSession.findTaskInstancesByProcessInstance(processInstance);
  | 				Field[] fields = step.getFields();
  | 				boolean trovato = false;
  | 				for (int i = 0; i < listaTask.size()&&!trovato; i++) {
  | 					TaskInstance ti = (TaskInstance)listaTask.get(i);
  | 					if(ti.getId()==Long.parseLong(step.getStepID())){
  | 						for (int j = 0; j < fields.length ; j++) {
  | 							ti.setVariable(fields[j].getId(), fields[j].getValue());
  | 				        }
  | 						ti.start("utentegenerico");
  | 						ti.end();						
  | 						trovato=true;
  | 					}
  | 				}
  | 	    		jbpmContext.save(processInstance);
  | 	    		token = processInstance.getRootToken();
  | 	    		listaTask = taskSession.findTaskInstancesByProcessInstance(processInstance);
  | 				if(listaTask!=null&& listaTask.size()>0){
  | 					steps = new Step[listaTask.size()];
  | 	            	for(int i=0; i<steps.length;i++){
  | 	            		TaskInstance ti = (TaskInstance)listaTask.get(i);
  | 	            		Step st = new Step();
  | 	            		st.setStepID(""+ti.getId());
  | 	            		st.setLocked(false);
  | 	            		st.setDescrizioneStep(ti.getName());
  | 	            		st.setFields(getVariables(ti));
  | 	            		steps=st;
  | 	            	}
  | 				}else{
  | 					log.info("non ci sono più task");
  | 					steps=new Step[0];
  | 				}
  | 	    		  		}
  |  			} catch (Exception e) {
  |  				log.error("errore nel avanzamento del flusso");
  |  				log.error(e,e);
  |  			} finally {
  |  				jbpmContext.close();
  |  			}
  |  			return steps;
  | 	}
  | 


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

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




More information about the jboss-user mailing list