My workflow doesn't run correctly
pedrosacosta Dec 6, 2005 10:52 AMCan anybody test my example, and see if, if my worflows runs correctly? In my pc, the workflows doesn't pass from the first task-node to the second.
Here is the code:
package com.sample.jbpm; import org.jbpm.graph.def.*; import org.jbpm.graph.exe.*; import org.jbpm.taskmgmt.exe.*; import com.sample.debug.MyDebug; //import org.jbpm.taskmgmt.def.*; import java.util.Vector; import java.util.Iterator; public class WorkFlow implements ActionHandler { private Vector formParameter; public ProcessDefinition processDefinition; public ProcessInstance processInstance; public Token token; public TaskInstance taskInstance; public Iterator it; public WorkFlow() { processDefinition = ProcessDefinition.parseXmlString( "<process-definition name='simple'> " + " <start-state name='start'> " + " <transition name='to_registo_ocorrencia' to='registo_ocorrencia'/> " + " </start-state> " + " <task-node name='registo_ocorrencia'> " + " <task name='RegistoOcorrenciaTask'/> " + " <transition name='to_lista_tarefas' to='lista_tarefas'> " + " </transition> " + " </task-node> " + " <task-node name='lista_tarefas'> " + " <task name='ListaTarefasTask'/> " + " <transition name='to_notificacoes' to='notificacoes'/> " + " </task-node> " + " <task-node name='notificacoes'> " + " <task name='NotificacoesTask'/> " + " <transition name='to_end' to='end'/> " + " </task-node> " + " <end-state name='end'/> " + "</process-definition> " ); /* ProcessInstance is one execution of a ProcessDefinition */ processInstance = new ProcessInstance(processDefinition); /* represents one path of execution */ token = processInstance.getRootToken(); token.signal(); } public void RegistoOcorrenciaTask() { /* taskInstance is one task instance that can be assigned to an actor */ taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance().getTaskInstances().iterator().next(); /** * RegistoOcorrenciaTask **/ if(taskInstance.getName().equals("RegistoOcorrenciaTask")) { // Já tenho que ter os parâmetros inicializados //formParameter = (Vector) taskInstance.getTaskFormParameters(); MyDebug.print("xxxxxxxxxx RegistoOcorrenciaTask xxxxxxxxxxx"); MyDebug.print("getName()\t--> " +taskInstance.getName()); MyDebug.print("isSignalling()\t--> " +taskInstance.isSignalling()); MyDebug.print("isBlocking()\t--> " +taskInstance.isBlocking()); //Daqui posso chamar outras funções java para tratar os argumentos. taskInstance.end(); MyDebug.print("hasEnded()\t--> " +taskInstance.hasEnded()); MyDebug.print("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); } } public void ListaTarefasTask() { taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance().getTaskInstances().iterator().next(); System.out.println("TASKINSTANCE " + taskInstance.getName()); /** * ListaTarefasTask */ if(taskInstance.getName().equals("ListaTarefasTask")) { //taskInstance.setActorId("User"); MyDebug.print("############# ListaTarefasTask ###########"); MyDebug.print("getName()\t--> " +taskInstance.getName()); MyDebug.print("isSignalling()\t--> " +taskInstance.isSignalling()); MyDebug.print("isBlocking()\t--> " +taskInstance.isBlocking()); taskInstance.end(); MyDebug.print("hasEnded()\t--> " +taskInstance.hasEnded()); } } public void NotificacoesTask() { taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance().getTaskInstances().iterator().next(); /** * NotificacoesTask */ if(taskInstance.getName().equals("NotificacoesTask")) { MyDebug.print("############# NotificacoesTask ###########"); MyDebug.print("getName()\t--> " +taskInstance.getName()); MyDebug.print("isSignalling()\t--> " +taskInstance.isSignalling()); MyDebug.print("isBlocking()\t--> " +taskInstance.isBlocking()); taskInstance.end(); MyDebug.print("hasEnded()\t--> " +taskInstance.hasEnded()); } } public ProcessDefinition getProcessDefinition() { return processDefinition; } public ProcessInstance getProcessInstance() { return processInstance; } public Token getToken() { return token; } public TaskInstance getTaskInstance() { return taskInstance; } /** * Retorna um vector com todos os parametros * indicados no registo de ocorrencia * @return Vector */ public Vector getFormParameter() { return formParameter; } public static void main(String[] args){ WorkFlow wf = new WorkFlow(); wf.RegistoOcorrenciaTask(); wf.ListaTarefasTask(); wf.NotificacoesTask(); } public void execute(ExecutionContext executionContext) throws Exception { MyDebug.print("------> ENTROU NO EXECUTE <---------"); executionContext.leaveNode(); } }
The output is:
xxxxxxxxxx RegistoOcorrenciaTask xxxxxxxxxxx getName() --> RegistoOcorrenciaTask isSignalling() --> true isBlocking() --> false hasEnded() --> true xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx TASKINSTANCE RegistoOcorrenciaTask log4j:WARN No appenders could be found for logger (org.jbpm.jpdl.xml.JpdlXmlReader). log4j:WARN Please initialize the log4j system properly.
Can anybody understand why this happens?
Please, I'm desperate.
Thanks.