[jbpm-commits] JBoss JBPM SVN: r2459 - in jbpm3/trunk/modules/core/src: main/java/org/jbpm/db and 2 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Oct 2 05:14:53 EDT 2008


Author: tom.baeyens at jboss.com
Date: 2008-10-02 05:14:53 -0400 (Thu, 02 Oct 2008)
New Revision: 2459

Modified:
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/command/CancelProcessInstanceCommand.java
   jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java
   jbpm3/trunk/modules/core/src/main/resources/org/jbpm/db/hibernate.queries.hbm.xml
   jbpm3/trunk/modules/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java
Log:
[JBPM-1735] Cleanup ProcessStateDbTest

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/command/CancelProcessInstanceCommand.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/command/CancelProcessInstanceCommand.java	2008-10-02 08:47:31 UTC (rev 2458)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/command/CancelProcessInstanceCommand.java	2008-10-02 09:14:53 UTC (rev 2459)
@@ -18,11 +18,6 @@
 
 	private long processId;
 
-	/**
-	 * recursivly cancel subprocesses?
-	 */
-	boolean cancelSubProcesses = false;
-
 	public CancelProcessInstanceCommand() {		
 	}
 
@@ -57,9 +52,6 @@
 	
             pi.end();
 
-            if (cancelSubProcesses)
-				cancelSubProcesses(processIdToCancel);
-
 			log.info("finished process cancellation");
 		} catch (RuntimeException ex) {
 			log.error("problems while cancel process", ex);
@@ -67,32 +59,6 @@
 		}
 	}
 	
-	/**
-	 * cancel all sub processes of the process with the given id calls
-	 * "cancelProcess" recursivly until all processes are ended
-	 * 
-	 * @param processId
-	 */
-	protected void cancelSubProcesses(long processId) {
-		Query q = jbpmContext.getSession().getNamedQuery(
-				"GraphSession.findSubProcessInstances");
-		q.setLong("instanceId", processId);
-		Iterator iter = q.list().iterator();
-		while (iter.hasNext()) {
-			ProcessInstance pi = (ProcessInstance) iter.next();
-			log.info("cancel sub process instance #" + pi.getId());
-			cancelProcess(pi.getId());
-		}
-	}	
-
-	public boolean isCancelSubProcesses() {
-		return cancelSubProcesses;
-	}
-
-	public void setCancelSubProcesses(boolean cancelSubProcesses) {
-		this.cancelSubProcesses = cancelSubProcesses;
-	}
-
 	public long getProcessId() {
 		return processId;
 	}

Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java	2008-10-02 08:47:31 UTC (rev 2458)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/db/GraphSession.java	2008-10-02 09:14:53 UTC (rev 2459)
@@ -37,6 +37,7 @@
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.graph.exe.Token;
+import org.jbpm.graph.node.ProcessState;
 
 /**
  * are the graph related database operations.
@@ -233,6 +234,13 @@
         }
       }
       
+      List referencingProcessStates = findReferencingProcessStates(processDefinition);
+      Iterator iter = referencingProcessStates.iterator();
+      while (iter.hasNext()) {
+        ProcessState processState = (ProcessState) iter.next();
+        processState.setSubProcessDefinition(null);
+      }
+      
       // then delete the process definition
       session.delete(processDefinition);
 
@@ -243,6 +251,12 @@
     } 
   }
 
+  protected List findReferencingProcessStates(ProcessDefinition subProcessDefinition) {
+    Query query = session.getNamedQuery("GraphSession.findReferencingProcessStates");
+    query.setEntity("subProcessDefinition", subProcessDefinition);
+    return query.list();
+  }
+
   // process instances ////////////////////////////////////////////////////////
   
   /**
@@ -370,12 +384,14 @@
       Query query = session.getNamedQuery("GraphSession.findTokensForProcessInstance");
       query.setEntity("processInstance", processInstance);
       List tokens = query.list();
-      
-      // deleteSubProcesses
-      Iterator iter = tokens.iterator();
-      while (iter.hasNext()) {
-        Token token = (Token) iter.next();
-        deleteSubProcesses(token);
+
+      if (!tokens.isEmpty()) {
+        // deleteSubProcesses
+        Iterator iter = tokens.iterator();
+        while (iter.hasNext()) {
+          Token token = (Token) iter.next();
+          deleteSubProcesses(token);
+        }
       }
 
       // jobs
@@ -395,13 +411,15 @@
         query.setParameterList("taskInstanceIds", taskInstanceIds);
       }
        
-      // delete the logs for all the process instance's tokens
-      query = session.getNamedQuery("GraphSession.selectLogsForTokens");
-      query.setParameterList("tokens", tokens);
-      List logs = query.list();
-      iter = logs.iterator();
-      while (iter.hasNext()) {
-        session.delete(iter.next());
+      if (!tokens.isEmpty()) {
+        // delete the logs for all the process instance's tokens
+        query = session.getNamedQuery("GraphSession.selectLogsForTokens");
+        query.setParameterList("tokens", tokens);
+        List logs = query.list();
+        Iterator iter = logs.iterator();
+        while (iter.hasNext()) {
+          session.delete(iter.next());
+        }
       }
 
       // then delete the process instance
@@ -429,6 +447,7 @@
       subProcessInstance.setSuperProcessToken(null);
       token.setSubProcessInstance(null);
       deleteProcessInstance(subProcessInstance);
+      session.flush();
     }
     
     if (token.getChildren()!=null) {

Modified: jbpm3/trunk/modules/core/src/main/resources/org/jbpm/db/hibernate.queries.hbm.xml
===================================================================
--- jbpm3/trunk/modules/core/src/main/resources/org/jbpm/db/hibernate.queries.hbm.xml	2008-10-02 08:47:31 UTC (rev 2458)
+++ jbpm3/trunk/modules/core/src/main/resources/org/jbpm/db/hibernate.queries.hbm.xml	2008-10-02 09:14:53 UTC (rev 2459)
@@ -74,6 +74,14 @@
       order by pi.start desc
     ]]>
   </query>
+  
+  <query name="GraphSession.findReferencingProcessStates">
+    <![CDATA[
+      select processState
+      from org.jbpm.graph.node.ProcessState as processState
+      where processState.subProcessDefinition = :subProcessDefinition
+    ]]>
+  </query>
 
   <!-- related to ProcessInstance -->
   <!-- ########################## -->
@@ -124,7 +132,6 @@
       order by pi.start desc
     ]]>
   </query>
-
   
   <query name="GraphSession.findTokensForProcessInstance">
     <![CDATA[

Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java	2008-10-02 08:47:31 UTC (rev 2458)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java	2008-10-02 09:14:53 UTC (rev 2459)
@@ -49,6 +49,7 @@
     }
     finally
     {
+      newTransaction();
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
@@ -78,6 +79,7 @@
     }
     finally
     {
+      newTransaction();
       jbpmContext.getGraphSession().deleteProcessDefinition(superProcessDefinition.getId());
       jbpmContext.getGraphSession().deleteProcessDefinition(subProcessDefinition.getId());
     }
@@ -101,6 +103,7 @@
     }
     finally
     {
+      newTransaction();
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
@@ -185,6 +188,7 @@
     }
     finally
     {
+      newTransaction();
       jbpmContext.getGraphSession().deleteProcessDefinition(superProcessDefinition.getId());
       jbpmContext.getGraphSession().deleteProcessDefinition(subProcessDefinition.getId());
     }
@@ -213,6 +217,7 @@
     }
     finally
     {
+      newTransaction();
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionOne.getId());
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionTwo.getId());
     }
@@ -243,6 +248,7 @@
     }
     finally
     {
+      newTransaction();
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionOne.getId());
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionTwo.getId());
     }
@@ -250,12 +256,6 @@
 
   public void testRecursiveProcessDefinition() 
   {
-    if (true)
-    {
-      System.out.println("FIXME [JBPM-1735]: Cleanup ProcessStateDbTest");
-      return;
-    }
-    
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
       "<process-definition name='recursive process'>" +
       "  <start-state>" +
@@ -298,10 +298,12 @@
       superProcessInstance = graphSession.loadProcessInstance(superProcessInstance.getId());
 
       assertTrue(subProcessInstance.hasEnded());    
-      assertTrue(superProcessInstance.hasEnded());    
+      assertTrue(superProcessInstance.hasEnded());
+      
     }
     finally
     {
+      newTransaction();
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
@@ -331,17 +333,21 @@
       "  <state name='wait' />" +
       "</process-definition>");
     jbpmContext.deployProcessDefinition(superProcessDefinition);
+    
+    ProcessInstance superProcessInstance = null;
+    ProcessInstance subProcessInstance = null;
+    
     try
     {
       newTransaction();
       
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("superprocess");
-      processInstance.signal();
+      superProcessInstance = jbpmContext.newProcessInstanceForUpdate("superprocess");
+      superProcessInstance.signal();
       
       newTransaction();
 
-      long subProcessInstanceId = processInstance.getRootToken().getSubProcessInstance().getId();
-      ProcessInstance subProcessInstance = jbpmContext.loadProcessInstance(subProcessInstanceId);
+      long subProcessInstanceId = superProcessInstance.getRootToken().getSubProcessInstance().getId();
+      subProcessInstance = jbpmContext.loadProcessInstance(subProcessInstanceId);
       subProcessInstance.signal();
       jbpmContext.save(subProcessInstance);
 
@@ -356,12 +362,13 @@
       ProcessStateLog processStateLog = (ProcessStateLog) processStateLogs.get(0);
       
       assertEquals(subProcessInstanceId, processStateLog.getSubProcessInstance().getId());
-      assertEquals(processInstance.getId(), processStateLog.getToken().getProcessInstance().getId());
+      assertEquals(superProcessInstance.getId(), processStateLog.getToken().getProcessInstance().getId());
     }
     finally
     {
-      jbpmContext.getGraphSession().deleteProcessDefinition(superProcessDefinition.getId());
-      jbpmContext.getGraphSession().deleteProcessDefinition(subProcessDefinition.getId());
+      newTransaction();
+      graphSession.deleteProcessDefinition(subProcessDefinition.getId());
+      graphSession.deleteProcessDefinition(superProcessDefinition.getId());
     }
   }
   
@@ -474,6 +481,7 @@
     }
     finally
     {
+      newTransaction();
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionOne.getId());
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionTwo.getId());
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionThree.getId());
@@ -482,12 +490,6 @@
 
   public void testUnboundSubProcess() 
   {
-    if (true)
-    {
-      System.out.println("FIXME [JBPM-1735]: Cleanup ProcessStateDbTest");
-      return;
-    }
-    
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
       "<process-definition name='superprocess'>" +
       "  <start-state name='start'>" +
@@ -519,6 +521,7 @@
     }
     finally
     {
+      newTransaction();
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }




More information about the jbpm-commits mailing list