create a task without task node
abhikal Oct 14, 2005 3:32 AMhi
i am trying to understand the work flow of websale demo.
Please help me to know that how to create task in the state when no task node tag is given.
<process-definition name="pay raise process"> <swimlane name="requester" /> <swimlane name="boss"> <delegation class="ActorAssignmentHandler">cg</delegation> </swimlane> <swimlane name="erp operator"> <delegation class="ActorAssignmentHandler">pf</delegation> </swimlane> <start-state name="request a payraise"> <transition to="evaluating"> </transition> </start-state> <state name="evaluating"> <assignment swimlane="boss" /> <transition name="approve" to="fork"></transition> <transition name="disapprove" to="done"></transition> </state> <fork name="fork"> <transition to="updating erp asynchronously"></transition> <transition to="treating collegues on cake and pie"></transition> </fork> <state name="updating erp asynchronously"> <assignment swimlane="erp operator" /> <transition to="join"></transition> </state> <state name="treating collegues on cake and pie"> <assignment swimlane="requester" /> <transition to="join"></transition> </state> <join name="join"> <transition to="done"></transition> </join> <end-state name="done"></end-state> </process-definition>
CODE IS public class WebSale { static JbpmSessionFactory jsf = JbpmSessionFactory.buildJbpmSessionFactory(); static { jsf.getJbpmSchema().createSchema(); } public WebSale() { ProcessDefinition pd =ProcessDefinition.parseXmlResource("sale2.par/processdefinition.xml" ); JbpmSession js = jsf.openJbpmSession(); js.beginTransaction(); js.getGraphSession().saveProcessDefinition(pd); js.commitTransaction(); js.close(); } public void func1() { JbpmSession js = jsf.openJbpmSession(); js.beginTransaction(); ProcessDefinition pd =js.getGraphSession() .findLatestProcessDefinition("pay raise process"); ProcessInstance pi = new ProcessInstance(pd); ContextInstance ci =pi.getContextInstance(); ci.setVariable("amount", new Integer(500)); ci.setVariable("reason", "i met my deadline"); System.out.println("-----"+pi.getRootToken().getNode().getName()); pi.signal(); Collection tasks = pi.getTaskMgmtInstance().getTaskInstances(); if(tasks!=null) { for (Iterator taskIterator = tasks.iterator (); taskIterator.hasNext();) { TaskInstance task = (TaskInstance) tasks.iterator().next (); System.out.println("+++++========"+ equals(task.getName())); } } System.out.println("-----"+pi.getRootToken().getNode().getName()); js.getGraphSession().saveProcessInstance(pi); js.commitTransaction(); js.close(); } public void func2() { JbpmSession js = jsf.openJbpmSession(); js.beginTransaction(); ProcessDefinition pd =js.getGraphSession() .findLatestProcessDefinition("pay raise process"); GraphSession graphSession = js.getGraphSession(); List all_pi=graphSession.findProcessInstances(pd.getId()); System.out.println("+++++"+ all_pi); ProcessInstance pi =(ProcessInstance) all_pi.get(0); ContextInstance ci =pi.getContextInstance(); System.out.println(" AMOUNT ###="+ci.getVariable("amount")); System.out.println(" REASON ###="+ci.getVariable("reason")); System.out.println("-----"+pi.getRootToken().getNode().getName()); pi.signal(); System.out.println("-----"+pi.getRootToken().getNode().getName()); pi.signal(); System.out.println("-----"+pi.getRootToken().getNode().getName()); pi.signal(); System.out.println("-----"+pi.getRootToken().getNode().getName()); pi.signal(); System.out.println("-----"+pi.getRootToken().getNode().getName()); js.getGraphSession().saveProcessInstance(pi); js.commitTransaction(); js.close(); } public static void main(String a[]) { WebSale sale=new WebSale(); System.out.println("Going to start the process"); sale.func1(); sale.func2(); } }