[jboss-user] [JBoss jBPM] - Re: TaskInstance and ProcessInstance not ending

Sowmya Yellamilli do-not-reply at jboss.com
Tue Dec 4 23:56:13 EST 2007


ok i'll get back to u with my unit test ...
meanwhile, i am not able to understand why websale also behaved the same way...websale unit test which i executed was like this:

/*
  |  * JBoss, Home of Professional Open Source
  |  * Copyright 2005, JBoss Inc., and individual contributors as indicated
  |  * by the @authors tag. See the copyright.txt in the distribution for a
  |  * full listing of individual contributors.
  |  *
  |  * This is free software; you can redistribute it and/or modify it
  |  * under the terms of the GNU Lesser General Public License as
  |  * published by the Free Software Foundation; either version 2.1 of
  |  * the License, or (at your option) any later version.
  |  *
  |  * This software is distributed in the hope that it will be useful,
  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  |  * Lesser General Public License for more details.
  |  *
  |  * You should have received a copy of the GNU Lesser General Public
  |  * License along with this software; if not, write to the Free
  |  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  |  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  |  */
  | package org.jbpm.websale;
  | 
  | import java.util.HashMap;
  | import java.util.List;
  | import java.util.Map;
  | 
  | import junit.framework.TestCase;
  | 
  | import org.jbpm.JbpmConfiguration;
  | import org.jbpm.JbpmContext;
  | import org.jbpm.context.exe.ContextInstance;
  | import org.jbpm.graph.def.ProcessDefinition;
  | import org.jbpm.graph.exe.ProcessInstance;
  | import org.jbpm.identity.Entity;
  | import org.jbpm.identity.hibernate.IdentitySession;
  | import org.jbpm.identity.xml.IdentityXmlParser;
  | import org.jbpm.persistence.db.DbPersistenceServiceFactory;
  | import org.jbpm.svc.Services;
  | import org.jbpm.taskmgmt.exe.TaskInstance;
  | import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
  | 
  | public class WebsaleTest extends TestCase {
  |   
  |   JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
  |   DbPersistenceServiceFactory dbPersistenceServiceFactory = (DbPersistenceServiceFactory) jbpmConfiguration.getServiceFactory(Services.SERVICENAME_PERSISTENCE);
  | 
  |   JbpmContext jbpmContext;
  | 
  |   ProcessInstance processInstance = null;
  |   ContextInstance contextInstance = null;
  |   TaskMgmtInstance taskMgmtInstance = null;
  |   long processInstanceId = -1;
  | 
  |   public void setUp() {
  |     dbPersistenceServiceFactory.createSchema();
  |     deployProcess();
  |     jbpmContext = jbpmConfiguration.createJbpmContext();
  |   }
  | 
  |   public void tearDown() {
  |     jbpmContext.close();
  |    // dbPersistenceServiceFactory.dropSchema();
  |     jbpmContext = null;
  |   }
  | 
  |   public void newTransaction() {
  |     jbpmContext.close();
  |     jbpmContext = jbpmConfiguration.createJbpmContext();
  |   }
  |   
  |   public void deployProcess() {
  |     JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
  |     try {
  |       ProcessDefinition processDefinition = 
  |         ProcessDefinition.parseXmlResource("processdefinition.xml");
  |       jbpmContext.deployProcessDefinition(processDefinition);
  |     } finally {
  |       jbpmContext.close();
  |     }
  |   }
  | 
  |   public void loadIdentities() {
  |     JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
  |     try {
  |       Entity[] entities = IdentityXmlParser.parseEntitiesResource("hsqldb/identity.db.xml");
  |       IdentitySession identitySession = new IdentitySession(jbpmContext.getSession());
  |       for (int i=0; i<entities.length; i++) {
  |         identitySession.saveEntity(entities);
  |       }
  |     } finally {
  |       jbpmContext.close();
  |     }
  |   }
  | 
  |   public TaskInstance createNewProcessInstance() {
  |     processInstance = jbpmContext.newProcessInstanceForUpdate("websale");
  |     processInstanceId = processInstance.getId();
  |     contextInstance = processInstance.getContextInstance();
  |     taskMgmtInstance = processInstance.getTaskMgmtInstance();
  |     return processInstance.getTaskMgmtInstance().createStartTaskInstance();
  |   }
  |   
  |   public void reloadProcessInstance() {
  |     processInstance = jbpmContext.loadProcessInstanceForUpdate(processInstanceId);
  |     contextInstance = processInstance.getContextInstance();
  |     taskMgmtInstance = processInstance.getTaskMgmtInstance();
  |   }
  |   
  |   public void testWebSaleOrderTaskParameters() {
  |     TaskInstance taskInstance = createNewProcessInstance();
  |     assertEquals("Create new web sale order", taskInstance.getName());
  |     assertEquals(0, taskInstance.getVariables().size());
  |   }
  | 
  |   public void testPerformWebSaleOrderTask() {
  |     jbpmContext.setActorId("user");
  |     // create a task to start the websale process
  |     TaskInstance taskInstance = createNewProcessInstance();
  | 
  |     Map taskVariables = new HashMap();
  |     taskVariables.put("item", "cookies");
  |     taskVariables.put("quantity", "lots of them");
  |     taskVariables.put("address", "46 Main St.");
  |     
  |     taskInstance.addVariables(taskVariables);
  |     taskInstance.end();
  |     
  |     assertEquals("cookies", contextInstance.getVariable("item"));
  |     assertEquals("lots of them", contextInstance.getVariable("quantity"));
  |     assertEquals("46 Main St.", contextInstance.getVariable("address"));
  |     assertEquals("user", taskMgmtInstance.getSwimlaneInstance("buyer").getActorId());
  |   }
  | 
  |   public void testEvaluateAssignment() {
  |     jbpmContext.setActorId("user");
  |     // create a task to start the websale process
  |     TaskInstance taskInstance = createNewProcessInstance();
  |     taskInstance.setVariable("item", "cookies");
  |     taskInstance.end();
  |     jbpmContext.save(processInstance);
  |     processInstanceId = processInstance.getId();
  |     
  |     newTransaction();
  |     
  |     List sampleManagersTasks = jbpmContext.getTaskMgmtSession().findTaskInstances("manager");
  |     assertEquals(1, sampleManagersTasks.size());
  | 
  |     TaskInstance evaluateTaskInstance = (TaskInstance) sampleManagersTasks.get(0);
  |     assertEquals("manager", evaluateTaskInstance.getActorId());
  |     assertEquals("Evaluate web order", evaluateTaskInstance.getName());
  |     assertNotNull(evaluateTaskInstance.getToken());
  |     assertNotNull(evaluateTaskInstance.getCreate());
  |     assertNull(evaluateTaskInstance.getStart());
  |     assertNull(evaluateTaskInstance.getEnd());
  |   }
  | 
  |   public void testEvaluateOk() {
  |     TaskInstance taskInstance = createNewProcessInstance();
  |     taskInstance.end();
  |     jbpmContext.save(processInstance);
  |     
  |     newTransaction();
  |     
  |     TaskInstance evaluateTaskInstance = (TaskInstance) jbpmContext.getTaskMgmtSession().findTaskInstances("manager").get(0);
  |     evaluateTaskInstance.end("OK");
  |     jbpmContext.save(evaluateTaskInstance);
  | 
  |     newTransaction();
  |     
  |     List sampleShippersTasks = jbpmContext.getTaskMgmtSession().findTaskInstances("shipper");
  |     assertEquals(1, sampleShippersTasks.size());
  | 
  |     TaskInstance waitForMoneyTaskInstance = (TaskInstance) sampleShippersTasks.get(0);
  |     assertEquals("shipper", waitForMoneyTaskInstance.getActorId());
  |     assertEquals("Wait for money", waitForMoneyTaskInstance.getName());
  |     assertNotNull(waitForMoneyTaskInstance.getToken());
  |     assertNotNull(waitForMoneyTaskInstance.getCreate());
  |     assertNull(waitForMoneyTaskInstance.getStart());
  |     assertNull(waitForMoneyTaskInstance.getEnd());
  |   }
  | 
  |   public void testUnwritableVariableException() {
  |     testEvaluateAssignment();
  |     newTransaction();
  |     List sampleManagersTasks = jbpmContext.getTaskMgmtSession().findTaskInstances("manager");
  |     TaskInstance evaluateTaskInstance = (TaskInstance) sampleManagersTasks.get(0);
  |     evaluateTaskInstance.end();
  | 
  |     newTransaction();
  |     
  |     processInstance = jbpmContext.getGraphSession().loadProcessInstance(processInstanceId);
  |     contextInstance = processInstance.getContextInstance();
  |     // so the cookies should still be in the item process variable.
  |     assertEquals("cookies", contextInstance.getVariable("item"));
  |   }
  | 
  |   public void testEvaluateNok() {
  |     testEvaluateAssignment();
  |     newTransaction();
  |     
  |     List sampleManagersTasks = jbpmContext.getTaskMgmtSession().findTaskInstances("manager");
  |     TaskInstance evaluateTaskInstance = (TaskInstance) sampleManagersTasks.get(0);
  |     evaluateTaskInstance.setVariable("comment", "wtf");
  |     evaluateTaskInstance.end("More info needed");
  |     jbpmContext.save(evaluateTaskInstance);
  |     
  |     newTransaction();
  | 
  |     List sampleUserTasks = jbpmContext.getTaskMgmtSession().findTaskInstances("user");
  |     assertEquals(1, sampleUserTasks.size());
  |     TaskInstance fixWebOrderDataTaskInstance = (TaskInstance) sampleUserTasks.get(0);
  |     assertEquals("user", fixWebOrderDataTaskInstance.getActorId());
  |     assertEquals("wtf", fixWebOrderDataTaskInstance.getVariable("comment"));
  |   }
  | 
  |   public void testMoreInfoNeeded() {
  |     jbpmContext.setActorId("user");
  |       
  |     // create a task to start the websale process
  |     TaskInstance taskInstance = createNewProcessInstance();
  |     taskInstance.end();
  |     jbpmContext.save(processInstance);
  |     
  |     newTransaction();
  |     
  |     TaskInstance evaluateTaskInstance = (TaskInstance) jbpmContext.getTaskMgmtSession().findTaskInstances("manager").get(0);
  |     evaluateTaskInstance.end("More info needed");
  |     jbpmContext.save(evaluateTaskInstance);
  | 
  |     newTransaction();
  |     
  |     List sampleUserTasks = jbpmContext.getTaskMgmtSession().findTaskInstances("user");
  |     assertEquals(1, sampleUserTasks.size());
  | 
  |     TaskInstance fixWebOrderDataTaskInstance = (TaskInstance) sampleUserTasks.get(0);
  |     assertEquals("user", fixWebOrderDataTaskInstance.getActorId());
  |     assertEquals("Fix web order data", fixWebOrderDataTaskInstance.getName());
  |     assertNotNull(fixWebOrderDataTaskInstance.getToken());
  |     assertNotNull(fixWebOrderDataTaskInstance.getCreate());
  |     assertNull(fixWebOrderDataTaskInstance.getStart());
  |     assertNull(fixWebOrderDataTaskInstance.getEnd());
  |   }
  | }
  | 

i didn't change anything in the processdefinition or any of the classes that came with this example accept this test case...

i'll make a test case for my process definition....and get back to u...



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

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



More information about the jboss-user mailing list