[jboss-user] [JBoss jBPM] - Re: removeTaskInstance doesn't work!

MindTheGap2 do-not-reply at jboss.com
Fri Jan 19 10:28:54 EST 2007


Sorry, the real code is this:


  | public void removeStateProcessInstance(Integer keyRef, String processNname, String state) {
  | 		JbpmContext jc = jbpmConfiguration.createJbpmContext();
  | 		TaskMgmtSession tms = jc.getTaskMgmtSession();
  | 		try {
  | 			GraphSession gs = jc.getGraphSession();
  | 			ProcessDefinition pd = gs.findLatestProcessDefinition(processName);
  | 			
  | 			List processInstances = gs.findProcessInstances(pd.getId());
  | 			if (processInstances.isEmpty() == false) {
  | 				ListIterator listProcessInstances = processInstances.listIterator();
  | 				while (listProcessInstances.hasNext() ) {
  | 					ProcessInstance pi = (ProcessInstance)listProcessInstances.next();
  | 					ContextInstance contextInstance = pi.getContextInstance();
  | 					if(contextInstance.getVariable("key")!=null) {
  | 						if(keyRef.intValue() == Integer.parseInt(contextInstance.getVariable("key").toString())) {
  | 						    
  | 							//Obtém o TaskInstanceId da última tarefa da lista actual
  | 							Iterator taskInstances = pi.getTaskMgmtInstance().getTaskInstances().iterator();
  | 							TaskInstance ti = null;
  | 							
  | 							long tid = 0;
  | 							while (taskInstances.hasNext()) {
  | 								ti = (TaskInstance) taskInstances.next();
  | 								if(ti.getName().equals(state)) tid = ti.getId();	
  | 						    }
  | 							
  | 							//Put 'End' field to null and get token node
  | 							Node node = null;
  | 							ArrayList<Long> x = new ArrayList<Long>();
  | 							for(Iterator i=pi.getTaskMgmtInstance().getTaskInstances().iterator(); i.hasNext();) {
  | 								ti = (TaskInstance) i.next();
  | 								if(ti.getId()==tid) {
  | 									ti.setEnd(null);
  | 									node = ti.getToken().getNode();
  | 								}
  | 								
  | 								if(ti.getId()>tid){
  | 									x.add(ti.getId());																	
  | 								}
  | 						    }
  | 							
  | 							
  | 							Token token = pi.getRootToken();
  | 							token.setNode(node);
  | 							
  | 							int i;
  | //remove taskInstances
  | 							for(i=0;i<x.size();i++) {
  | 								TaskInstance tit = tms.loadTaskInstance(Long.parseLong(x.get(i).toString()));
  | 								pi.getTaskMgmtInstance().removeTaskInstance(tit);
  | 								
  | 							}
  | 							
  | 						}
  | 					}
  | 					jc.save(pi);
  | 					break;
  | 				}
  | 			}			
  | 		}catch (Exception e) {
  | 			System.out.println(e.getMessage());
  | 		} finally {
  | 			jc.close();
  | 		}   
  | 	}			
  | 

It doesn't save the changes in the db!
Is there any restriction to remove taskInstances?

Thanks in advance!

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

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




More information about the jboss-user mailing list