You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by se...@apache.org on 2009/04/20 08:44:38 UTC

svn commit: r766592 [2/3] - in /ode/branches/APACHE_ODE_1.X: axis2-war/src/test/java/org/apache/ode/axis2/ axis2/src/main/java/org/apache/ode/axis2/ bpel-api/src/main/java/org/apache/ode/bpel/iapi/ bpel-dao/src/main/java/org/apache/ode/bpel/dao/ bpel-e...

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessDaoImpl.java Mon Apr 20 06:44:37 2009
@@ -23,6 +23,7 @@
 import org.apache.ode.bpel.common.CorrelationKey;
 import org.apache.ode.bpel.common.ProcessState;
 import org.apache.ode.bpel.dao.CorrelatorDAO;
+import org.apache.ode.bpel.dao.DeferredProcessInstanceCleanable;
 import org.apache.ode.bpel.dao.ProcessDAO;
 import org.apache.ode.bpel.dao.ProcessInstanceDAO;
 import org.apache.ode.daohib.SessionManager;
@@ -32,11 +33,13 @@
 import org.apache.ode.daohib.bpel.hobj.HCorrelationSet;
 import org.apache.ode.daohib.bpel.hobj.HCorrelator;
 import org.apache.ode.daohib.bpel.hobj.HCorrelatorMessage;
+import org.apache.ode.daohib.bpel.hobj.HCorrelatorSelector;
 import org.apache.ode.daohib.bpel.hobj.HFaultData;
 import org.apache.ode.daohib.bpel.hobj.HLargeData;
 import org.apache.ode.daohib.bpel.hobj.HMessage;
 import org.apache.ode.daohib.bpel.hobj.HMessageExchange;
 import org.apache.ode.daohib.bpel.hobj.HMessageExchangeProperty;
+import org.apache.ode.daohib.bpel.hobj.HObject;
 import org.apache.ode.daohib.bpel.hobj.HPartnerLink;
 import org.apache.ode.daohib.bpel.hobj.HProcess;
 import org.apache.ode.daohib.bpel.hobj.HProcessInstance;
@@ -50,6 +53,7 @@
 import org.hibernate.criterion.Order;
 
 import javax.xml.namespace.QName;
+
 import java.util.Collection;
 import java.util.Date;
 import java.util.Iterator;
@@ -58,8 +62,7 @@
 /**
  * Hibernate-based {@link ProcessDAO} implementation.
  */
-public class ProcessDaoImpl extends HibernateDao implements ProcessDAO {
-    @SuppressWarnings("unused")
+public class ProcessDaoImpl extends HibernateDao implements ProcessDAO, DeferredProcessInstanceCleanable {
     private static final Log __log = LogFactory.getLog(ProcessDaoImpl.class);
 
     private static final String QRY_CORRELATOR = "where this.correlatorId = ?";
@@ -142,63 +145,77 @@
         // nothing to do here (yet?)
     }
 
-    public void delete() {
-        entering("ProcessDaoImpl.delete");
-
-        deleteEvents();
-        deleteCorrelations();
-        deleteMessages();
-        deleteVariables();
-        deleteProcessInstances();
+    public void deleteProcessAndRoutes() {
+        // delete routes
+        getSession().getNamedQuery(HCorrelatorSelector.DELETE_MESSAGE_ROUTES_BY_PROCESS).setParameter("process", _process).executeUpdate();
 
+        // delete process dao
+        getSession().getNamedQuery(HCorrelator.DELETE_CORRELATORS_BY_PROCESS).setParameter("process", _process).executeUpdate();
         getSession().delete(_process); // this deletes HCorrelator -> HCorrelatorSelector
 
         // after this delete, we have a use case that creates the process with the same procid.
         // for hibernate to work without the database deferred constraint check, let's just flush the session.
         getSession().flush();
     }
+    
+    @SuppressWarnings("unchecked")
+	public int deleteInstances(int transactionSize) {
+        entering("ProcessDaoImpl.delete");
 
-    private void deleteProcessInstances() {
-        getSession().getNamedQuery(HLargeData.DELETE_ACTIVITY_RECOVERY_LDATA_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-        getSession().getNamedQuery(HActivityRecovery.DELETE_ACTIVITY_RECOVERIES_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-        getSession().getNamedQuery(HLargeData.DELETE_FAULT_LDATA_BY_PROCESS).setParameter("process", _process).executeUpdate();
-        getSession().getNamedQuery(HFaultData.DELETE_FAULTS_BY_PROCESS).setParameter("process", _process).executeUpdate();
-        getSession().getNamedQuery(HLargeData.DELETE_JACOB_LDATA_BY_PROCESS).setParameter("process", _process).executeUpdate();
-        getSession().getNamedQuery(HProcessInstance.DELETE_INSTANCES_BY_PROCESS).setParameter("process", _process).executeUpdate();
-    }
-
-    private void deleteVariables() {
-        getSession().getNamedQuery(HCorrelationProperty.DELETE_CORPROPS_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-        getSession().getNamedQuery(HCorrelationSet.DELETE_CORSETS_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-
-        getSession().getNamedQuery(HVariableProperty.DELETE_VARIABLE_PROPERITES_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-        getSession().getNamedQuery(HLargeData.DELETE_XMLDATA_LDATA_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-        getSession().getNamedQuery(HXmlData.DELETE_XMLDATA_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-
-        getSession().getNamedQuery(HLargeData.DELETE_PARTNER_LINK_LDATA_BY_PROCESS).setParameter ("process", _process).setParameter ("process2", _process).executeUpdate();
-        getSession().getNamedQuery(HPartnerLink.DELETE_PARTNER_LINKS_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-        getSession().getNamedQuery(HScope.DELETE_SCOPES_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-    }
-
-    private void deleteMessages() {
-        getSession().getNamedQuery(HCorrelatorMessage.DELETE_CORMESSAGES_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-
-        getSession().getNamedQuery(HLargeData.DELETE_MESSAGE_LDATA_BY_PROCESS).setParameter("process", _process).setParameter ("process2", _process).executeUpdate();
-        getSession().getNamedQuery(HMessage.DELETE_MESSAGES_BY_PROCESS).setParameter("process", _process).executeUpdate();
-        getSession().getNamedQuery(HMessageExchangeProperty.DELETE_MEX_PROPS_BY_PROCESS).setParameter("process", _process).executeUpdate();
-        getSession().getNamedQuery(HLargeData.DELETE_MEX_LDATA_BY_PROCESS).setParameter("process", _process).setParameter("process2", _process).executeUpdate();
-        getSession().getNamedQuery(HMessageExchange.DELETE_MEX_BY_PROCESS).setParameter("process", _process).executeUpdate();
-        getSession().getNamedQuery(HCorrelator.DELETE_CORRELATORS_BY_PROCESS).setParameter("process", _process).executeUpdate();
+        if( transactionSize < 1 ) {
+               if(__log.isWarnEnabled()) __log.warn("A zero or negative value was given for the transaction size of process dao deletion; overriding to '1'. Not using bulk deletion of rows may result in performance degradation.");
+               transactionSize = 1;
+        }
+
+        Collection<HProcessInstance> instances = getSession().getNamedQuery(HProcessInstance.SELECT_INSTANCES_BY_PROCESS).setParameter("process", _process).setMaxResults(transactionSize).list();
+        if( !instances.isEmpty() ) {
+	        deleteEvents(instances);
+	        deleteCorrelations(instances);
+	        deleteMessages(instances);
+	        deleteVariables(instances);
+	        deleteProcessInstances(instances);
+        }
+
+        return instances.size();
     }
 
-    private void deleteCorrelations() {
-        getSession().getNamedQuery(HCorrelationProperty.DELETE_CORPROPS_BY_PROCESS).setParameter ("process", _process).executeUpdate();
-        getSession().getNamedQuery(HCorrelationSet.DELETE_CORSETS_BY_PROCESS).setParameter ("process", _process).executeUpdate();
+    private void deleteProcessInstances(Collection<HProcessInstance> instances) {
+        getSession().getNamedQuery(HLargeData.DELETE_ACTIVITY_RECOVERY_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HActivityRecovery.DELETE_ACTIVITY_RECOVERIES_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HLargeData.DELETE_FAULT_LDATA_BY_INSTANCE_IDS).setParameterList("instanceIds", HObject.toIdArray(instances)).executeUpdate();
+        getSession().getNamedQuery(HFaultData.DELETE_FAULTS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HLargeData.DELETE_JACOB_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HProcessInstance.DELETE_INSTANCES).setParameterList("instances", instances).executeUpdate();
+    }
+
+    private void deleteVariables(Collection<HProcessInstance> instances) {
+        getSession().getNamedQuery(HVariableProperty.DELETE_VARIABLE_PROPERITES_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HLargeData.DELETE_XMLDATA_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HXmlData.DELETE_XMLDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+
+        getSession().getNamedQuery(HLargeData.DELETE_PARTNER_LINK_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HPartnerLink.DELETE_PARTNER_LINKS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HScope.DELETE_SCOPES_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+    }
+
+    private void deleteMessages(Collection<HProcessInstance> instances) {
+        getSession().getNamedQuery(HCorrelatorMessage.DELETE_CORMESSAGES_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+
+        getSession().getNamedQuery(HLargeData.DELETE_MESSAGE_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HMessage.DELETE_MESSAGES_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HMessageExchangeProperty.DELETE_MEX_PROPS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HLargeData.DELETE_MEX_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HMessageExchange.DELETE_MEX_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+    }
+    
+    private void deleteCorrelations(Collection<HProcessInstance> instances) {
+        getSession().getNamedQuery(HCorrelationProperty.DELETE_CORPROPS_BY_INSTANCES).setParameterList ("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HCorrelationSet.DELETE_CORSETS_BY_INSTANCES).setParameterList ("instances", instances).executeUpdate();
     }
 
-    private void deleteEvents() {
-        getSession().getNamedQuery(HLargeData.DELETE_EVENT_LDATA_BY_PROCESS).setParameter("process", _process).executeUpdate();
-        getSession().getNamedQuery(HBpelEvent.DELETE_EVENTS_BY_PROCESS).setParameter("process", _process).executeUpdate();
+    private void deleteEvents(Collection<HProcessInstance> instances) {
+        getSession().getNamedQuery(HLargeData.DELETE_EVENT_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+        getSession().getNamedQuery(HBpelEvent.DELETE_EVENTS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
     }
 
     public QName getType() {
@@ -224,8 +241,8 @@
     @SuppressWarnings("unchecked")
     public Collection<ProcessInstanceDAO> getActiveInstances() {
         ArrayList<ProcessInstanceDAO> instDaos = new ArrayList<ProcessInstanceDAO>();
-        Collection<HProcessInstance> insts = getSession().getNamedQuery(HProcessInstance.SELECT_ACTIVE_INSTANCES)
-                .setParameter("processId", _process.getId()).setParameter("state", ProcessState.STATE_ACTIVE).list();
+        Collection<HProcessInstance> insts = getSession().getNamedQuery(HProcessInstance.SELECT_INSTANCES_BY_PROCESSES_AND_STATES)
+                .setParameterList("processIds", new Object[] {_process.getId()}).setParameterList("states", new Object[] {ProcessState.STATE_ACTIVE}).list();
         for (HProcessInstance inst : insts)
             instDaos.add(new ProcessInstanceDaoImpl(_sm, inst));
         return instDaos;

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessInstanceDaoImpl.java Mon Apr 20 06:44:37 2009
@@ -44,7 +44,7 @@
  * Hibernate-based {@link ProcessInstanceDAO} implementation.
  */
 public class ProcessInstanceDaoImpl extends HibernateDao implements ProcessInstanceDAO {
-	private static final Log __log = LogFactory.getLog(ProcessInstanceDaoImpl.class);
+  private static final Log __log = LogFactory.getLog(ProcessInstanceDaoImpl.class);
 
   /** Query for removing selectors. */
   private static final String QRY_DELSELECTORS = "delete from "  + 
@@ -60,18 +60,18 @@
 
   private ScopeDAO _root;
   
-	public ProcessInstanceDaoImpl(SessionManager sm, HProcessInstance instance) {
+  public ProcessInstanceDaoImpl(SessionManager sm, HProcessInstance instance) {
     super(sm, instance);
-        entering("ProcessInstanceDaoImpl.ProcessInstanceDaoImpl");
-		_instance = instance;
-	}
+    entering("ProcessInstanceDaoImpl.ProcessInstanceDaoImpl");
+    _instance = instance;
+  }
 
   /**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getCreateTime()
-	 */
-	public Date getCreateTime() {
-		return _instance.getCreated();
-	}
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getCreateTime()
+   */
+  public Date getCreateTime() {
+    return _instance.getCreated();
+  }
   
   public void setFault(FaultDAO fault) {
       entering("ProcessInstanceDaoImpl.setFault");
@@ -113,18 +113,19 @@
     else return new FaultDAOImpl(_sm, _instance.getFault());
   }
 
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getExecutionState()
-	 */
-	public byte[] getExecutionState() {
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getExecutionState()
+   */
+  public byte[] getExecutionState() {
         entering("ProcessInstanceDaoImpl.getExecutionState");
     if (_instance.getJacobState() == null) return null;
     return _instance.getJacobState().getBinary();
-	}
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#setExecutionState(byte[])
-	 */
-	public void setExecutionState(byte[] bytes) {
+  }
+	
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#setExecutionState(byte[])
+   */
+  public void setExecutionState(byte[] bytes) {
         entering("ProcessInstanceDaoImpl.setExecutionState");
     if (_instance.getJacobState() != null)
       getSession().delete(_instance.getJacobState());
@@ -135,19 +136,19 @@
     }
     getSession().update(_instance);
   }
-	
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getProcess()
-	 */
-	public ProcessDAO getProcess() {
-        entering("ProcessInstanceDaoImpl.getProcess");
-		return new ProcessDaoImpl(_sm, _instance.getProcess());
-	}
-  
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getRootScope()
-	 */
-	public ScopeDAO getRootScope() {
+
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getProcess()
+   */
+  public ProcessDAO getProcess() {
+    entering("ProcessInstanceDaoImpl.getProcess");
+    return new ProcessDaoImpl(_sm, _instance.getProcess());
+  }
+  
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getRootScope()
+   */
+  public ScopeDAO getRootScope() {
         entering("ProcessInstanceDaoImpl.getRootScope");
     if (_root != null) 
       return _root;
@@ -156,12 +157,12 @@
     HScope hroot = (HScope)rootQry.uniqueResult();
     if (hroot == null)
       return null;
-		return _root = new ScopeDaoImpl(_sm, hroot);
-	}
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#setState(short)
-	 */
-	public void setState(short state) {
+    return _root = new ScopeDaoImpl(_sm, hroot);
+  }
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#setState(short)
+   */
+  public void setState(short state) {
         entering("ProcessInstanceDaoImpl.setState");
         _instance.setPreviousState(_instance.getState());
     _instance.setState(state);
@@ -170,23 +171,25 @@
     }
     getSession().update(_instance);
   }
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getState()
-	 */
-	public short getState() {
-		return _instance.getState();
-	}
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getPreviousState()
-	 */
-	public short getPreviousState() {
-		return _instance.getPreviousState();
-	}
-
-  
-	public ScopeDAO createScope(ScopeDAO parentScope, String name, int scopeModelId) {
-        entering("ProcessInstanceDaoImpl.createScope");
-		HScope scope = new HScope();
+
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getState()
+   */
+  public short getState() {
+    return _instance.getState();
+  }
+	
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getPreviousState()
+   */
+  public short getPreviousState() {
+    return _instance.getPreviousState();
+  }
+
+  
+  public ScopeDAO createScope(ScopeDAO parentScope, String name, int scopeModelId) {
+    entering("ProcessInstanceDaoImpl.createScope");
+    HScope scope = new HScope();
     scope.setParentScope(parentScope != null
         ? (HScope)((ScopeDaoImpl)parentScope).getHibernateObj()
         : null);
@@ -198,15 +201,15 @@
 //    _instance.addScope(scope);
     getSession().save(scope);
 
-		return new ScopeDaoImpl(_sm, scope);
-	}
+    return new ScopeDaoImpl(_sm, scope);
+  }
 
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getInstanceId()
-	 */
-	public Long getInstanceId() {
-		return _instance.getId();
-	}
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getInstanceId()
+   */
+  public Long getInstanceId() {
+    return _instance.getId();
+  }
 
   public ScopeDAO getScope(Long scopeInstanceId) {
       entering("ProcessInstanceDaoImpl.getScope");
@@ -217,10 +220,10 @@
             : null;
   }
   
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getScopes(java.lang.String)
-	 */
-	@SuppressWarnings("unchecked")
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getScopes(java.lang.String)
+   */
+  @SuppressWarnings("unchecked")
   public Collection<ScopeDAO> getScopes(String scopeName) {
         entering("ProcessInstanceDaoImpl.getScopes");
     Collection<HScope> hscopes;
@@ -238,33 +241,34 @@
       }
      });
     return ret;
-	}
+  }
 
   public Collection<ScopeDAO> getScopes() {
     return getScopes(null);
   }
   
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getInstantiatingCorrelator()
-	 */
-	public CorrelatorDAO getInstantiatingCorrelator() {
-        entering("ProcessInstanceDaoImpl.getInstantiatingCorrelator");
-		return new CorrelatorDaoImpl(_sm, _instance.getInstantiatingCorrelator());
-	}
-
-  /**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getLastActiveTime()
-	 */
-	public Date getLastActiveTime() {
-		return _instance.getLastActiveTime();
-	}
-	/**
-	 * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#setLastActiveTime(java.util.Date)
-	 */
-	public void setLastActiveTime(Date dt) {
-        entering("ProcessInstanceDaoImpl.setLastActiveTime");
-		_instance.setLastActiveTime(dt);
-	}
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getInstantiatingCorrelator()
+   */
+  public CorrelatorDAO getInstantiatingCorrelator() {
+    entering("ProcessInstanceDaoImpl.getInstantiatingCorrelator");
+    return new CorrelatorDaoImpl(_sm, _instance.getInstantiatingCorrelator());
+  }
+
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getLastActiveTime()
+   */
+  public Date getLastActiveTime() {
+    return _instance.getLastActiveTime();
+  }
+  
+  /**
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#setLastActiveTime(java.util.Date)
+   */
+  public void setLastActiveTime(Date dt) {
+    entering("ProcessInstanceDaoImpl.setLastActiveTime");
+    _instance.setLastActiveTime(dt);
+  }
 
   public Set<CorrelationSetDAO> getCorrelationSets() {
       entering("ProcessInstanceDaoImpl.getCorrelationSets");
@@ -286,13 +290,13 @@
     return null;
   }
 
-    /**
-     * TODO this is never used, except by test cases - should be removed
-     * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getVariables(java.lang.String, int)
-     */
-    @SuppressWarnings("unchecked")
-	public XmlDataDAO[] getVariables(String variableName, int scopeModelId) {
-        entering("ProcessInstanceDaoImpl.getVariables");
+  /**
+   * TODO this is never used, except by test cases - should be removed
+   * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#getVariables(java.lang.String, int)
+   */
+  @SuppressWarnings("unchecked")
+  public XmlDataDAO[] getVariables(String variableName, int scopeModelId) {
+    entering("ProcessInstanceDaoImpl.getVariables");
     List<XmlDataDAO> results = new ArrayList<XmlDataDAO>();
 
     Iterator iter;
@@ -303,12 +307,12 @@
     iter = qry.iterate();
 
     while(iter.hasNext()) {
-    	results.add(new XmlDataDaoImpl(_sm, (HXmlData)iter.next()));
+      results.add(new XmlDataDaoImpl(_sm, (HXmlData)iter.next()));
     }
     Hibernate.close(iter);
 
     return results.toArray(new XmlDataDAO[results.size()]);
-	}
+  }
 
   /**
    * @see org.apache.ode.bpel.dao.ProcessInstanceDAO#finishCompletion()
@@ -322,82 +326,85 @@
   }
 
   public void delete(Set<CLEANUP_CATEGORY> cleanupCategories) {
-      entering("ProcessInstanceDaoImpl.delete");
-	  if(__log.isDebugEnabled()) __log.debug("Cleaning up instance data with categories = " + cleanupCategories);
-      
-	  if( _instance.getJacobState() != null ) {
-		  getSession().delete(_instance.getJacobState());
-		  _instance.setJacobState(null);
-	  }
-	  
-      if( cleanupCategories.contains(CLEANUP_CATEGORY.EVENTS) ) {
-    	  deleteEvents();
-      }
+    entering("ProcessInstanceDaoImpl.delete");
+    if(__log.isDebugEnabled()) __log.debug("Cleaning up instance data with categories = " + cleanupCategories);
       
-      if( cleanupCategories.contains(CLEANUP_CATEGORY.CORRELATIONS) ) {
-    	  deleteCorrelations();
-      }
+    if( _instance.getJacobState() != null ) {
+      getSession().delete(_instance.getJacobState());
+      _instance.setJacobState(null);
+    }
+
+    HProcessInstance[] instances = new HProcessInstance[] {_instance};
+    
+    if( cleanupCategories.contains(CLEANUP_CATEGORY.EVENTS) ) {
+      deleteEvents(instances);
+    }
       
-      if( cleanupCategories.contains(CLEANUP_CATEGORY.MESSAGES) ) {
-    	  deleteMessages();
-      }
+    if( cleanupCategories.contains(CLEANUP_CATEGORY.CORRELATIONS) ) {
+      deleteCorrelations(instances);
+    }
+
+    if( cleanupCategories.contains(CLEANUP_CATEGORY.MESSAGES) ) {
+      deleteMessages(instances);
+    }
       
-      if( cleanupCategories.contains(CLEANUP_CATEGORY.VARIABLES) ) {
-    	  deleteVariables();
-      }
+    if( cleanupCategories.contains(CLEANUP_CATEGORY.VARIABLES) ) {
+      deleteVariables(instances);
+    }
       
-      if( cleanupCategories.contains(CLEANUP_CATEGORY.INSTANCE) ) {
-    	  deleteInstance();
-      }
+    if( cleanupCategories.contains(CLEANUP_CATEGORY.INSTANCE) ) {
+      deleteInstances(instances);
+    }
 
-      getSession().flush();
+    getSession().flush();
       
-	  if(__log.isDebugEnabled()) __log.debug("Instance data cleaned up and flushed.");
+    if(__log.isDebugEnabled()) __log.debug("Instance data cleaned up and flushed.");
+  }
+  
+  private void deleteInstances(HProcessInstance[] instances) {
+    getSession().getNamedQuery(HLargeData.DELETE_FAULT_LDATA_BY_INSTANCE_IDS).setParameterList("instanceIds", HObject.toIdArray(instances)).executeUpdate();
+    getSession().getNamedQuery(HFaultData.DELETE_FAULTS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+
+    getSession().delete(_instance); // this deletes JcobState, HActivityRecovery -> ActivityRecovery-LData
+  }
+
+  private void deleteVariables(HProcessInstance[] instances) {
+    getSession().getNamedQuery(HCorrelationProperty.DELETE_CORPROPS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+    getSession().getNamedQuery(HCorrelationSet.DELETE_CORSETS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+
+    getSession().getNamedQuery(HVariableProperty.DELETE_VARIABLE_PROPERITES_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+    getSession().getNamedQuery(HLargeData.DELETE_XMLDATA_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+    getSession().getNamedQuery(HXmlData.DELETE_XMLDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+
+    getSession().getNamedQuery(HLargeData.DELETE_PARTNER_LINK_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+    getSession().getNamedQuery(HPartnerLink.DELETE_PARTNER_LINKS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+
+    getSession().getNamedQuery(HScope.DELETE_SCOPES_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+  }
+
+  @SuppressWarnings("unchecked")
+  private void deleteMessages(HProcessInstance[] instances) {
+    // there are chances that some unmatched messages are still there
+    getSession().getNamedQuery(HLargeData.DELETE_UNMATCHED_MESSAGE_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+    Collection unmatchedMex = getSession().getNamedQuery(HMessageExchange.SELECT_UNMATCHED_MEX_BY_INSTANCES).setParameterList("instances", instances).list();
+    if( !unmatchedMex.isEmpty() ) {
+      getSession().delete(unmatchedMex);
+//    getSession().getNamedQuery(HMessageExchange.DELETE_UNMATCHED_MEX).setParameter("mex", unmatchedMex).executeUpdate();
+    }
+    getSession().getNamedQuery(HCorrelatorMessage.DELETE_CORMESSAGES_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+
+    getSession().getNamedQuery(HCorrelatorSelector.DELETE_MESSAGE_ROUTES_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
   }
   
-  	private void deleteInstance() {
-  		getSession().getNamedQuery(HLargeData.DELETE_FAULT_LDATA_BY_INSTANCE_ID).setParameter ("instanceId", _instance.getId()).executeUpdate();
-		getSession().getNamedQuery(HFaultData.DELETE_FAULTS_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-
-		getSession().delete(_instance); // this deletes JcobState, HActivityRecovery -> ActivityRecovery-LData
-  	}
-  	
-  	private void deleteVariables() {
-		getSession().getNamedQuery(HCorrelationProperty.DELETE_CORPROPS_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-		getSession().getNamedQuery(HCorrelationSet.DELETE_CORSETS_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-
-  		getSession().getNamedQuery(HVariableProperty.DELETE_VARIABLE_PROPERITES_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-		getSession().getNamedQuery(HLargeData.DELETE_XMLDATA_LDATA_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-		getSession().getNamedQuery(HXmlData.DELETE_XMLDATA_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-
-		getSession().getNamedQuery(HLargeData.DELETE_PARTNER_LINK_LDATA_BY_INSTANCE).setParameter ("instance", _instance).setParameter ("instance2", _instance).executeUpdate();
-		getSession().getNamedQuery(HPartnerLink.DELETE_PARTNER_LINKS_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-
-		getSession().getNamedQuery(HScope.DELETE_SCOPES_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-  	}
-
-  	@SuppressWarnings("unchecked")
-    private void deleteMessages() {
-    	// there are chances that some unmatched messages are still there
-  		getSession().getNamedQuery(HLargeData.DELETE_UNMATCHED_MESSAGE_LDATA_BY_INSTANCE).setParameter("instance", _instance).setParameter("instance2", _instance).executeUpdate();
-  		Collection unmatchedMex = getSession().getNamedQuery(HMessageExchange.SELECT_UNMATCHED_MEX_BY_INSTANCE).setParameter("instance", _instance).list();
-  		if( !unmatchedMex.isEmpty() ) {
-  			getSession().getNamedQuery(HMessageExchange.DELETE_UNMATCHED_MEX).setParameter("mex", unmatchedMex).executeUpdate();
-  		}
-  		getSession().getNamedQuery(HCorrelatorMessage.DELETE_CORMESSAGES_BY_INSTANCE).setParameter("instance", _instance).executeUpdate();
-
-  		getSession().getNamedQuery(HCorrelatorSelector.DELETE_MESSAGE_ROUTES_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-  	}
-  
-  	private void deleteCorrelations() {
-		getSession().getNamedQuery(HCorrelationProperty.DELETE_CORPROPS_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-		getSession().getNamedQuery(HCorrelationSet.DELETE_CORSETS_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-  	}
-
-  	private void deleteEvents() {
-		getSession().getNamedQuery(HLargeData.DELETE_EVENT_LDATA_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();
-		getSession().getNamedQuery(HBpelEvent.DELETE_EVENTS_BY_INSTANCE).setParameter ("instance", _instance).executeUpdate();		
-	}
+  private void deleteCorrelations(HProcessInstance[] instances) {
+    getSession().getNamedQuery(HCorrelationProperty.DELETE_CORPROPS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+    getSession().getNamedQuery(HCorrelationSet.DELETE_CORSETS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+  }
+
+  private void deleteEvents(HProcessInstance[] instances) {
+    getSession().getNamedQuery(HLargeData.DELETE_EVENT_LDATA_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();
+    getSession().getNamedQuery(HBpelEvent.DELETE_EVENTS_BY_INSTANCES).setParameterList("instances", instances).executeUpdate();		
+  }
 
   public void insertBpelEvent(ProcessInstanceEvent event) {
       entering("ProcessInstanceDaoImpl.insertBpelEvent");
@@ -423,13 +430,13 @@
   }
 
   public Collection<MessageExchangeDAO> getMessageExchanges() {
-	  Collection<MessageExchangeDAO> exchanges = new ArrayList<MessageExchangeDAO>();
-	  
-	  for( HMessageExchange exchange : _instance.getMessageExchanges() ) {
-		  exchanges.add(new MessageExchangeDaoImpl(_sm, exchange));
-	  }
-	  
-	  return exchanges;
+    Collection<MessageExchangeDAO> exchanges = new ArrayList<MessageExchangeDAO>();
+  
+    for( HMessageExchange exchange : _instance.getMessageExchanges() ) {
+      exchanges.add(new MessageExchangeDaoImpl(_sm, exchange));
+    }
+
+    return exchanges;
   }
   
   public long genMonotonic() {

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessManagementDaoImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessManagementDaoImpl.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessManagementDaoImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/ProcessManagementDaoImpl.java Mon Apr 20 06:44:37 2009
@@ -40,9 +40,9 @@
 	public Object[] findFailedCountAndLastFailedDateForProcessId(BpelDAOConnection conn, String status, String processId) {
 		Object[] results = new Object[] {0, null};
 		
-		Query query = getSession().getNamedQuery(HProcessInstance.COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID);
+		Query query = getSession().getNamedQuery(HProcessInstance.COUNT_FAILED_INSTANCES_BY_PROCESS_IDS_AND_STATES);
 		query.setParameterList("states", new InstanceFilter("status=" + status).convertFilterState());
-		query.setParameter("processId", processId);
+		query.setParameterList("processIds", new String[] {processId});
 		query.setResultTransformer(new ResultTransformer() {
 			private static final long serialVersionUID = 8034301512569916379L;
 

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HActivityRecovery.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HActivityRecovery.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HActivityRecovery.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HActivityRecovery.java Mon Apr 20 06:44:37 2009
@@ -24,110 +24,109 @@
 /**
  * Persistent representation of activity recovery information.
  * @hibernate.class table="BPEL_ACTIVITY_RECOVERY"
- * @hibernate.query name="DELETE_ACTIVITY_RECOVERIES_BY_PROCESS" query="delete from HActivityRecovery as a where a.instance in(select i from HProcessInstance as i where i.process = :process)"
+ * @hibernate.query name="DELETE_ACTIVITY_RECOVERIES_BY_INSTANCES" query="delete from HActivityRecovery as a where a.instance in (:instances)" 
  */
 public class HActivityRecovery extends HObject {
-	public final static String DELETE_ACTIVITY_RECOVERIES_BY_PROCESS = "DELETE_ACTIVITY_RECOVERIES_BY_PROCESS";
-
-  /** Process instance to which this scope belongs. */
-  private HProcessInstance _instance;
-  private long        _activityId;
-  private String      _channel;
-  private String      _reason;
-  private Date        _dateTime;
-  private HLargeData  _details;
-  private String      _actions;
-  private int         _retries;
-
-  /**
-   * Get the {@link HProcessInstance} to which this scope object belongs.
-   * @hibernate.many-to-one
-   *  column="PIID" foreign-key="none"
-   */
-	public HProcessInstance getInstance() {
-		return _instance;
-	}
-
-  /** @see #getInstance() */
-  public void setInstance(HProcessInstance instance) {
-		_instance = instance;
-	}
-
-  /**
-   * @hibernate.property column="AID"
-   */
-  public long getActivityId() {
-    return _activityId;
-  }
-
-  public void setActivityId(long activityId) {
-    _activityId = activityId;
-  }
-
-  /**
-   * @hibernate.property column="CHANNEL"
-   */
-	public String getChannel() {
-		return _channel;
-	}
-
-  public void setChannel(String channel) {
-		_channel = channel;
-	}
-
-  /**
-   * @hibernate.property column="REASON"
-   */
-	public String getReason() {
-		return _reason;
-	}
-
-  public void setReason(String reason) {
-		_reason = reason;
-	}
-
-  /**
-   * @hibernate.property column="DATE_TIME"
-   */
-	public Date getDateTime() {
-		return _dateTime;
-	}
-
-  public void setDateTime(Date dateTime) {
-		_dateTime = dateTime;
-	}
-
-  /**
-   * @hibernate.many-to-one column="LDATA_ID" cascade="delete" foreign-key="none"
-   */
-  public HLargeData getDetails() {
-    return _details;
-  }
-
-  public void setDetails(HLargeData details) {
-    _details = details;
-  }
-
-  /**
-   * @hibernate.property column="ACTIONS"
-   */
-	public String getActions() {
-		return _actions;
-	}
-
-  public void setActions(String actions) {
-		_actions = actions;
-	}
-
-  /**
-   * @hibernate.property column="RETRIES"
-   */
-  public int getRetries() {
-    return _retries;
-  }
-
-  public void setRetries(int retries) {
-    _retries = retries;
-  }
+    public final static String DELETE_ACTIVITY_RECOVERIES_BY_INSTANCES = "DELETE_ACTIVITY_RECOVERIES_BY_INSTANCES";
 
+    /** Process instance to which this scope belongs. */
+    private HProcessInstance _instance;
+    private long                _activityId;
+    private String            _channel;
+    private String            _reason;
+    private Date                _dateTime;
+    private HLargeData    _details;
+    private String            _actions;
+    private int                 _retries;
+
+    /**
+     * Get the {@link HProcessInstance} to which this scope object belongs.
+     * @hibernate.many-to-one
+     *    column="PIID" foreign-key="none"
+     */
+    public HProcessInstance getInstance() {
+        return _instance;
+    }
+
+    /** @see #getInstance() */
+    public void setInstance(HProcessInstance instance) {
+        _instance = instance;
+    }
+
+    /**
+     * @hibernate.property column="AID"
+     */
+    public long getActivityId() {
+        return _activityId;
+    }
+
+    public void setActivityId(long activityId) {
+        _activityId = activityId;
+    }
+
+    /**
+     * @hibernate.property column="CHANNEL"
+     */
+    public String getChannel() {
+        return _channel;
+    }
+
+    public void setChannel(String channel) {
+        _channel = channel;
+    }
+
+    /**
+     * @hibernate.property column="REASON"
+     */
+    public String getReason() {
+        return _reason;
+    }
+
+    public void setReason(String reason) {
+        _reason = reason;
+    }
+
+    /**
+     * @hibernate.property column="DATE_TIME"
+     */
+    public Date getDateTime() {
+        return _dateTime;
+    }
+
+    public void setDateTime(Date dateTime) {
+        _dateTime = dateTime;
+    }
+
+    /**
+     * @hibernate.many-to-one column="LDATA_ID" cascade="delete" foreign-key="none"
+     */
+    public HLargeData getDetails() {
+        return _details;
+    }
+
+    public void setDetails(HLargeData details) {
+        _details = details;
+    }
+
+    /**
+     * @hibernate.property column="ACTIONS"
+     */
+    public String getActions() {
+        return _actions;
+    }
+
+    public void setActions(String actions) {
+        _actions = actions;
+    }
+
+    /**
+     * @hibernate.property column="RETRIES"
+     */
+    public int getRetries() {
+        return _retries;
+    }
+
+    public void setRetries(int retries) {
+        _retries = retries;
+    }
 }

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HBpelEvent.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HBpelEvent.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HBpelEvent.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HBpelEvent.java Mon Apr 20 06:44:37 2009
@@ -27,113 +27,110 @@
  * Row representation of a BPEL event. 
  *
  * @hibernate.class table="BPEL_EVENT"
- * @hibernate.query name="DELETE_EVENTS_BY_PROCESS" query="delete from HBpelEvent as e where e.process = :process"
- * @hibernate.query name="DELETE_EVENTS_BY_INSTANCE" query="delete from HBpelEvent as e where e.instance = :instance"
+ * @hibernate.query name="DELETE_EVENTS_BY_INSTANCES" query="delete from HBpelEvent as e where e.instance in (:instances)"
  */
 public class HBpelEvent extends HObject {
-	public final static String DELETE_EVENTS_BY_PROCESS = "DELETE_EVENTS_BY_PROCESS";
-	public static final String DELETE_EVENTS_BY_INSTANCE = "DELETE_EVENTS_BY_INSTANCE";
-	
-  private Timestamp _tstamp;
-  private String _type;
-  private String _detail;
-
-  private HProcess _process;
-  private HProcessInstance _instance;
-  private HLargeData _data;
-
-  /** Scope identifier, possibly null. */
-  private Long _scopeId;
-
-  /**
-   * @hibernate.many-to-one column="IID" foreign-key="none"
-   */
-  public HProcessInstance getInstance() {
-    return _instance;
-  }
-
-  public void setInstance(HProcessInstance instance) {
-    _instance = instance;
-  }
-
-  /**
-   * @hibernate.many-to-one column="PID" foreign-key="none"
-   */
-  public HProcess getProcess() {
-    return _process;
-  }
-
-  public void setProcess(HProcess process) {
-    _process = process;
-  }
-
-  /**
-   * @hibernate.property
-   *    column="TSTAMP"
-   */
-  public Timestamp getTstamp() {
-    return _tstamp;
-  }
-
-  public void setTstamp(Timestamp tstamp) {
-    _tstamp = tstamp;
-  }
-
-  /**
-   * @hibernate.property
-   *    column="TYPE"
-   */
-  public String getType() {
-    return _type;
-  }
-
-  public void setType(String type) {
-    _type = type;
-  }
-
-  /**
-   * TODO Check 32000 is enough for details
-   */
-  /**
-   * @hibernate.property
-   *  column="DETAIL"
-   *  type="text"
-   *  length="32000"
-   */
-  public String getDetail() {
-    return _detail;
-  }
-
-  public void setDetail(String detail) {
-    _detail = detail;
-  }
-
-
-  /**
-   * @hibernate.many-to-one column="LDATA_ID" cascade="delete" foreign-key="none"
-   */
-  public HLargeData getData() {
-    return _data;
-  }
-
-  public void setData(HLargeData data) {
-    _data = data;
-  }
-
-  /**
-   * Get the scope identifier of the scope associated with this event. 
-   * Note, that this is not implemented as a many-to-one relationship
-   * because when scopes are deleted from the database we do not want 
-   * their events to suffer the same fate. 
-   * @hibernate.property
-   *    column="SID"
-   */
-  public Long getScopeId() {
-    return _scopeId;
-  }
-
-  public void setScopeId(Long scopeId) {
-    _scopeId = scopeId;
-  }
+    public static final String DELETE_EVENTS_BY_INSTANCES = "DELETE_EVENTS_BY_INSTANCES";
 
+    private Timestamp _tstamp;
+    private String _type;
+    private String _detail;
+
+    private HProcess _process;
+    private HProcessInstance _instance;
+    private HLargeData _data;
+
+    /** Scope identifier, possibly null. */
+    private Long _scopeId;
+
+    /**
+     * @hibernate.many-to-one column="IID" foreign-key="none"
+     */
+    public HProcessInstance getInstance() {
+        return _instance;
+    }
+
+    public void setInstance(HProcessInstance instance) {
+        _instance = instance;
+    }
+
+    /**
+     * @hibernate.many-to-one column="PID" foreign-key="none"
+     */
+    public HProcess getProcess() {
+        return _process;
+    }
+
+    public void setProcess(HProcess process) {
+        _process = process;
+    }
+
+    /**
+     * @hibernate.property
+     *        column="TSTAMP"
+     */
+    public Timestamp getTstamp() {
+        return _tstamp;
+    }
+
+    public void setTstamp(Timestamp tstamp) {
+        _tstamp = tstamp;
+    }
+
+    /**
+     * @hibernate.property
+     *        column="TYPE"
+     */
+    public String getType() {
+        return _type;
+    }
+
+    public void setType(String type) {
+        _type = type;
+    }
+
+    /**
+     * TODO Check 32000 is enough for details
+     */
+    /**
+     * @hibernate.property
+     *    column="DETAIL"
+     *    type="text"
+     *    length="32000"
+     */
+    public String getDetail() {
+        return _detail;
+    }
+
+    public void setDetail(String detail) {
+        _detail = detail;
+    }
+
+
+    /**
+     * @hibernate.many-to-one column="LDATA_ID" cascade="delete" foreign-key="none"
+     */
+    public HLargeData getData() {
+        return _data;
+    }
+
+    public void setData(HLargeData data) {
+        _data = data;
+    }
+
+    /**
+     * Get the scope identifier of the scope associated with this event. 
+     * Note, that this is not implemented as a many-to-one relationship
+     * because when scopes are deleted from the database we do not want 
+     * their events to suffer the same fate. 
+     * @hibernate.property
+     *        column="SID"
+     */
+    public Long getScopeId() {
+        return _scopeId;
+    }
+
+    public void setScopeId(Long scopeId) {
+        _scopeId = scopeId;
+    }
 }

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationProperty.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationProperty.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationProperty.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationProperty.java Mon Apr 20 06:44:37 2009
@@ -26,83 +26,81 @@
  * Hibernate table-mapped class representing one valued property in
  * a correlation set.
  * @hibernate.class table="BPEL_CORRELATION_PROP"
- * @hibernate.query name="DELETE_CORPROPS_BY_PROCESS" query="delete from HCorrelationProperty as p where p.correlationSet in(select s from HCorrelationSet as s where s.process = :process)"
- * @hibernate.query name="DELETE_CORPROPS_BY_INSTANCE" query="delete from HCorrelationProperty as p where p.correlationSet in(select s from HCorrelationSet as s where s.instance = :instance)"
+ * @hibernate.query name="DELETE_CORPROPS_BY_INSTANCES" query="delete from HCorrelationProperty as p where p.correlationSet in(select s from HCorrelationSet as s where s.instance in (:instances))"
  */
 public class HCorrelationProperty extends HObject {
-	public final static String DELETE_CORPROPS_BY_PROCESS = "DELETE_CORPROPS_BY_PROCESS";
-	public final static String DELETE_CORPROPS_BY_INSTANCE = "DELETE_CORPROPS_BY_INSTANCE";
-	
-  private String _name;
-  private String _namespace;
-  private String _value;
-  private HCorrelationSet _correlationSet;
-
-  public HCorrelationProperty() {
-    super();
-  }
-
-  public HCorrelationProperty(String name, String namespace, String value, HCorrelationSet correlationSet) {
-    super();
-    _name = name;
-    _namespace = namespace;
-    _value = value;
-    _correlationSet = correlationSet;
-  }
-
-  public HCorrelationProperty(QName qname, String value, HCorrelationSet correlationSet) {
-    super();
-    _name = qname.getLocalPart();
-    _namespace = qname.getNamespaceURI();
-    _value = value;
-    _correlationSet = correlationSet;
-  }
-
-  /**
-   * @hibernate.property column="NAME"
-   */
-  public String getName() {
-    return _name;
-  }
-
-  public void setName(String name) {
-    _name = name;
-  }
-
-  /**
-   * @hibernate.property column="NAMESPACE"
-   */
-  public String getNamespace() {
-    return _namespace;
-  }
-
-  public void setNamespace(String namespace) {
-    _namespace = namespace;
-  }
-
-  /**
-   * @hibernate.property column="VALUE"
-   */
-  public String getValue() {
-    return _value;
-  }
-
-  public void setValue(String value) {
-    _value = value;
-  }
-
-  /**
-   * @hibernate.many-to-one column="CORR_SET_ID" foreign-key="none"
-   */
-  public HCorrelationSet getCorrelationSet() {
-    return _correlationSet;
-  }
-
-  public void setCorrelationSet(HCorrelationSet correlationSet) {
-    _correlationSet = correlationSet;
-  }
-
-  public QName getQName() {
-    return new QName(getNamespace(), getName());
-  }
+    public final static String DELETE_CORPROPS_BY_INSTANCES = "DELETE_CORPROPS_BY_INSTANCES";
+
+    private String _name;
+    private String _namespace;
+    private String _value;
+    private HCorrelationSet _correlationSet;
+
+    public HCorrelationProperty() {
+        super();
+    }
+
+    public HCorrelationProperty(String name, String namespace, String value, HCorrelationSet correlationSet) {
+        super();
+        _name = name;
+        _namespace = namespace;
+        _value = value;
+        _correlationSet = correlationSet;
+    }
+
+    public HCorrelationProperty(QName qname, String value, HCorrelationSet correlationSet) {
+        super();
+        _name = qname.getLocalPart();
+        _namespace = qname.getNamespaceURI();
+        _value = value;
+        _correlationSet = correlationSet;
+    }
+
+    /**
+     * @hibernate.property column="NAME"
+     */
+    public String getName() {
+        return _name;
+    }
+
+    public void setName(String name) {
+        _name = name;
+    }
+
+    /**
+     * @hibernate.property column="NAMESPACE"
+     */
+    public String getNamespace() {
+        return _namespace;
+    }
+
+    public void setNamespace(String namespace) {
+        _namespace = namespace;
+    }
+
+    /**
+     * @hibernate.property column="VALUE"
+     */
+    public String getValue() {
+        return _value;
+    }
+
+    public void setValue(String value) {
+        _value = value;
+    }
+
+    /**
+     * @hibernate.many-to-one column="CORR_SET_ID" foreign-key="none"
+     */
+    public HCorrelationSet getCorrelationSet() {
+        return _correlationSet;
+    }
+
+    public void setCorrelationSet(HCorrelationSet correlationSet) {
+        _correlationSet = correlationSet;
+    }
+
+    public QName getQName() {
+        return new QName(getNamespace(), getName());
+    }
 }

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationSet.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationSet.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationSet.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelationSet.java Mon Apr 20 06:44:37 2009
@@ -25,16 +25,14 @@
 /**
  * Hibernate table representing correlation set values.
  * @hibernate.class table="BPEL_CORRELATION_SET"
- * @hibernate.query name="DELETE_CORSETS_BY_INSTANCE" query="delete from HCorrelationSet as c where c.instance = :instance"
- * @hibernate.query name="DELETE_CORSETS_BY_PROCESS" query="delete from HCorrelationSet as c where c.process = :process"
+ * @hibernate.query name="DELETE_CORSETS_BY_INSTANCES" query="delete from HCorrelationSet as c where c.instance in (:instances)"
  * @hibernate.query name="SELECT_CORSETS_BY_INSTANCES" query="from HCorrelationSet as c left join fetch c.properties where c.instance.id in (:instances)"
- * @hibernate.query name="SELECT_ACTIVE_CORSETS" query="from HCorrelationSet as c left join fetch c.process left join fetch c.instance where c.instance.state = (:state)"
+ * @hibernate.query name="SELECT_CORSETS_BY_PROCESS_STATES" query="from HCorrelationSet as c left join fetch c.process left join fetch c.instance where c.instance.state in (:states)"
  */
 public class HCorrelationSet extends HObject{
-    public static final String DELETE_CORSETS_BY_INSTANCE = "DELETE_CORSETS_BY_INSTANCE";
-    public static final String DELETE_CORSETS_BY_PROCESS = "DELETE_CORSETS_BY_PROCESS";
+    public static final String DELETE_CORSETS_BY_INSTANCES = "DELETE_CORSETS_BY_INSTANCES";
     public static final String SELECT_CORSETS_BY_INSTANCES = "SELECT_CORSETS_BY_INSTANCES";
-    public static final String SELECT_ACTIVE_CORSETS = "SELECT_ACTIVE_CORSETS";
+    public static final String SELECT_CORSETS_BY_PROCESS_STATES = "SELECT_CORSETS_BY_PROCESS_STATES";
 
     private HProcess _process;
     private HProcessInstance _instance;

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorMessage.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorMessage.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorMessage.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorMessage.java Mon Apr 20 06:44:37 2009
@@ -21,15 +21,13 @@
 
 /**
  * @hibernate.class table="BPEL_UNMATCHED" lazy="true"
- * @hibernate.query name="DELETE_CORMESSAGES_BY_PROCESS" query="delete from HCorrelatorMessage as m where m.correlator in(select c from HCorrelator as c where c.process = :process)"
- * @hibernate.query name="DELETE_CORMESSAGES_BY_INSTANCE" query="delete from HCorrelatorMessage as m where m.messageExchange in(select mex from HMessageExchange as mex where mex.instance = :instance)"
+ * @hibernate.query name="DELETE_CORMESSAGES_BY_INSTANCES" query="delete from HCorrelatorMessage as m where m.messageExchange in(select mex from HMessageExchange as mex where mex.instance in (:instances))"
  * @hibernate.query name="DELETE_CORMESSAGES_BY_MEX" query="delete from HCorrelatorMessage as m where m.messageExchange = :mex"
  */
 public class HCorrelatorMessage extends HObject {
-	public final static String DELETE_CORMESSAGES_BY_PROCESS = "DELETE_CORMESSAGES_BY_PROCESS";
-	public final static String DELETE_CORMESSAGES_BY_MEX = "DELETE_CORMESSAGES_BY_MEX";
-	public final static String DELETE_CORMESSAGES_BY_INSTANCE = "DELETE_CORMESSAGES_BY_INSTANCE";
-	
+    public final static String DELETE_CORMESSAGES_BY_MEX = "DELETE_CORMESSAGES_BY_MEX";
+    public final static String DELETE_CORMESSAGES_BY_INSTANCES = "DELETE_CORMESSAGES_BY_INSTANCES";
+
     private HMessageExchange _messageExchange;
     private HCorrelator _correlator;
     private String _correlationKey;

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorSelector.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorSelector.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorSelector.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HCorrelatorSelector.java Mon Apr 20 06:44:37 2009
@@ -21,11 +21,13 @@
 
 /**
  * @hibernate.class table="BPEL_SELECTORS" lazy="true"
- * @hibernate.query name="DELETE_MESSAGE_ROUTES_BY_INSTANCE" query="delete from HCorrelatorSelector as m where m.instance = :instance)"
+ * @hibernate.query name="DELETE_MESSAGE_ROUTES_BY_PROCESS" query="delete from HCorrelatorSelector as m where m.correlator in(select c from HCorrelator c where c.process = :process)"
+ * @hibernate.query name="DELETE_MESSAGE_ROUTES_BY_INSTANCES" query="delete from HCorrelatorSelector as m where m.instance in (:instances))"
  */
 public class HCorrelatorSelector extends HObject {
-	public static final String DELETE_MESSAGE_ROUTES_BY_INSTANCE = "DELETE_MESSAGE_ROUTES_BY_INSTANCE";
-	
+    public static final String DELETE_MESSAGE_ROUTES_BY_PROCESS = "DELETE_MESSAGE_ROUTES_BY_PROCESS";
+    public static final String DELETE_MESSAGE_ROUTES_BY_INSTANCES = "DELETE_MESSAGE_ROUTES_BY_INSTANCES";
+
     private HProcessInstance _instance;
     private String _groupId;
     private int _idx;

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HFaultData.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HFaultData.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HFaultData.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HFaultData.java Mon Apr 20 06:44:37 2009
@@ -23,75 +23,72 @@
 /**
  * Persistent representation of a fault.
  * @hibernate.class table="BPEL_FAULT"
- * @hibernate.query name="DELETE_FAULTS_BY_PROCESS" query="delete from HFaultData as f where f in (select i.fault from HProcessInstance as i where i.process = :process)"
- * @hibernate.query name="DELETE_FAULTS_BY_INSTANCE" query="delete from HFaultData as f where f in (select i.fault from HProcessInstance as i where i = :instance)"
+ * @hibernate.query name="DELETE_FAULTS_BY_INSTANCES" query="delete from HFaultData as f where f in (select i.fault from HProcessInstance as i where i in (:instances))"
  */
 public class HFaultData extends HObject {
-  public final static String DELETE_FAULTS_BY_PROCESS = "DELETE_FAULTS_BY_PROCESS";
-  public final static String DELETE_FAULTS_BY_INSTANCE = "DELETE_FAULTS_BY_INSTANCE";
+    public final static String DELETE_FAULTS_BY_INSTANCES = "DELETE_FAULTS_BY_INSTANCES";
 
-  private String _name;
-  private String _explanation;
-  private HLargeData _data;
-  private int _lineNo;
-  private int _activityId;
-
-  /**
-   * @hibernate.property column="FAULTNAME"
-   */
-	public String getName() {
-		return _name;
-	}
-
-  public void setName(String name) {
-		_name = name;
-	}
-
-  /**
-   * @hibernate.many-to-one column="LDATA_ID" cascade="delete" foreign-key="none"
-   */
-  public HLargeData getData() {
-    return _data;
-  }
-
-  public void setData(HLargeData data) {
-    _data = data;
-  }
-
-
-  /**
-   * @hibernate.property column="EXPLANATION" length="4000"
-   */
-  public String getExplanation() {
-    return _explanation;
-  }
-
-  public void setExplanation(String explanation) {
-      // Don't want to make this a blob, truncating to avoid errors
-      if (explanation != null && explanation.length() > 4000)
-          explanation = explanation.substring(0, 3999);
-    _explanation = explanation;
-  }
-
-  /**
-   * @hibernate.property column="LINE_NUM"
-   */
-  public int getLineNo() {
-    return _lineNo;
-  }
-
-  public void setLineNo(int lineNo) {
-    _lineNo = lineNo;
-  }
-
-  /**
-   * @hibernate.property column="AID"
-   */
-  public int getActivityId() {
-    return _activityId;
-  }
-
-  public void setActivityId(int activityId) {
-    _activityId = activityId;
-  }
+    private String _name;
+    private String _explanation;
+    private HLargeData _data;
+    private int _lineNo;
+    private int _activityId;
+
+    /**
+     * @hibernate.property column="FAULTNAME"
+     */
+    public String getName() {
+        return _name;
+    }
+
+    public void setName(String name) {
+        _name = name;
+    }
+
+    /**
+     * @hibernate.many-to-one column="LDATA_ID" cascade="delete" foreign-key="none"
+     */
+    public HLargeData getData() {
+        return _data;
+    }
+
+    public void setData(HLargeData data) {
+        _data = data;
+    }
+
+    /**
+     * @hibernate.property column="EXPLANATION" length="4000"
+     */
+    public String getExplanation() {
+        return _explanation;
+    }
+
+    public void setExplanation(String explanation) {
+        // Don't want to make this a blob, truncating to avoid errors
+        if (explanation != null && explanation.length() > 4000)
+            explanation = explanation.substring(0, 3999);
+        _explanation = explanation;
+    }
+
+    /**
+     * @hibernate.property column="LINE_NUM"
+     */
+    public int getLineNo() {
+        return _lineNo;
+    }
+
+    public void setLineNo(int lineNo) {
+        _lineNo = lineNo;
+    }
+
+    /**
+     * @hibernate.property column="AID"
+     */
+    public int getActivityId() {
+        return _activityId;
+    }
+
+    public void setActivityId(int activityId) {
+        _activityId = activityId;
+    }
 }

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HLargeData.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HLargeData.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HLargeData.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HLargeData.java Mon Apr 20 06:44:37 2009
@@ -24,73 +24,62 @@
  * instance needs to store as part of its state large binary or text
  * data, a reference to an instance of this class must be created.
  * @hibernate.class table="LARGE_DATA"
- * @hibernate.query name="DELETE_EVENT_LDATA_BY_PROCESS" query="delete from HLargeData as d where d in(select e.data from HBpelEvent as e where e.process = :process)"
- * @hibernate.query name="DELETE_XMLDATA_LDATA_BY_PROCESS" query="delete from HLargeData as d where d in(select x.data from HXmlData as x where x.instance.process = :process)"
- * @hibernate.query name="DELETE_ACTIVITY_RECOVERY_LDATA_BY_PROCESS" query="delete from HLargeData as d where d in(select a.details from HActivityRecovery as a where a.instance.process = :process)"
- * @hibernate.query name="DELETE_FAULT_LDATA_BY_PROCESS" query="delete from HLargeData as d where d in(select f.data from HFaultData as f, HProcessInstance as i where f.id = i.fault and i.process = :process)"
- * @hibernate.query name="DELETE_JACOB_LDATA_BY_PROCESS" query="delete from HLargeData as d where d in(select i.jacobState from HProcessInstance as i where i.process = :process)"
- * @hibernate.query name="DELETE_PARTNER_LINK_LDATA_BY_PROCESS" query="delete from HLargeData as d where d in(select l.myEPR from HPartnerLink as l where l.scope.instance.process = :process) or d IN(select l.partnerEPR from HPartnerLink as l where l.scope.instance.process = :process2)"
- * @hibernate.query name="DELETE_MESSAGE_LDATA_BY_PROCESS" query="delete from HLargeData as d where d in(select m.messageData from HMessage m where m.messageExchange.process = :process) or d IN(select m.header from HMessage m where m.messageExchange.process = :process2)"
- * @hibernate.query name="DELETE_MEX_LDATA_BY_PROCESS" query="delete from HLargeData as d where d in(select e.endpoint from HMessageExchange as e where e.process = :process) or d IN(select e.callbackEndpoint from HMessageExchange as e where e.process = :process2)"
- * 
- * @hibernate.query name="DELETE_EVENT_LDATA_BY_INSTANCE" query="delete from HLargeData as d where d in(select e.data from HBpelEvent as e where e.instance = :instance)"
- * @hibernate.query name="DELETE_MESSAGE_LDATA_BY_MEX" query="delete from HLargeData as d where d in(select m.messageData from HMessage m where m.messageExchange = :mex) or d IN(select m.header from HMessage m where m.messageExchange = :mex2)"
- * @hibernate.query name="DELETE_UNMATCHED_MESSAGE_LDATA_BY_INSTANCE" query="delete from HLargeData as d where d in(select m.messageData from HMessage m, HCorrelatorMessage cm where m.messageExchange = cm.messageExchange and m.messageExchange.instance = :instance) or d IN(select m.header from HMessage m, HCorrelatorMessage cm where m.messageExchange = cm.messageExchange and m.messageExchange.instance = :instance2)"
- * @hibernate.query name="DELETE_XMLDATA_LDATA_BY_INSTANCE" query="delete from HLargeData as d where d in(select x.data from HXmlData as x where x.instance = :instance)"
- * @hibernate.query name="DELETE_PARTNER_LINK_LDATA_BY_INSTANCE" query="delete from HLargeData as d where d in(select l.myEPR from HPartnerLink as l where l.scope.instance = :instance) or d IN(select l.partnerEPR from HPartnerLink as l where l.scope.instance = :instance2)"
- * @hibernate.query name="DELETE_FAULT_LDATA_BY_INSTANCE_ID" query="delete from HLargeData as d where d in(select f.data from HFaultData as f, HProcessInstance as i where f.id = i.fault and i.id = :instanceId)"
+ * @hibernate.query name="DELETE_ACTIVITY_RECOVERY_LDATA_BY_INSTANCES" query="delete from HLargeData as d where d in(select a.details from HActivityRecovery as a where a.instance in (:instances))"
+ * @hibernate.query name="DELETE_JACOB_LDATA_BY_INSTANCES" query="delete from HLargeData as d where d in(select i.jacobState from HProcessInstance as i where i in (:instances))"
+ * @hibernate.query name="DELETE_MESSAGE_LDATA_BY_INSTANCES" query="delete from HLargeData as d where d in(select m.messageData from HMessage m where m.messageExchange.instance in (:instances)) or d IN(select m.header from HMessage m where m.messageExchange.instance in (:instances))"
+ * @hibernate.query name="DELETE_MEX_LDATA_BY_INSTANCES" query="delete from HLargeData as d where d in(select e.endpoint from HMessageExchange as e where e.instance in (:instances)) or d IN(select e.callbackEndpoint from HMessageExchange as e where e.instance in (:instances))"
+ *
+ * @hibernate.query name="DELETE_EVENT_LDATA_BY_INSTANCES" query="delete from HLargeData as d where d in(select e.data from HBpelEvent as e where e.instance in (:instances))"
+ * @hibernate.query name="DELETE_UNMATCHED_MESSAGE_LDATA_BY_INSTANCES" query="delete from HLargeData as d where d in(select m.messageData from HMessage m, HCorrelatorMessage cm where m.messageExchange = cm.messageExchange and m.messageExchange.instance in (:instances)) or d in(select m.header from HMessage m, HCorrelatorMessage cm where m.messageExchange = cm.messageExchange and m.messageExchange.instance in (:instances))"
+ * @hibernate.query name="DELETE_XMLDATA_LDATA_BY_INSTANCES" query="delete from HLargeData as d where d in(select x.data from HXmlData as x where x.instance in (:instances))"
+ * @hibernate.query name="DELETE_PARTNER_LINK_LDATA_BY_INSTANCES" query="delete from HLargeData as d where d in(select l.myEPR from HPartnerLink as l where l.scope.instance in (:instances)) or d IN(select l.partnerEPR from HPartnerLink as l where l.scope.instance in (:instances))"
+ * @hibernate.query name="DELETE_FAULT_LDATA_BY_INSTANCE_IDS" query="delete from HLargeData as d where d in(select f.data from HFaultData as f, HProcessInstance as i where f.id = i.fault and i.id in (:instanceIds))"
+
+ * @hibernate.query name="DELETE_MESSAGE_LDATA_BY_MEX" query="delete from HLargeData as d where d in(select m.messageData from HMessage m where m.messageExchange = :mex) or d in(select m.header from HMessage m where m.messageExchange = :mex)"
  */
 public class HLargeData extends HObject {
-	public final static String DELETE_EVENT_LDATA_BY_PROCESS = "DELETE_EVENT_LDATA_BY_PROCESS";
-	public final static String DELETE_XMLDATA_LDATA_BY_PROCESS = "DELETE_XMLDATA_LDATA_BY_PROCESS";
-	public final static String DELETE_ACTIVITY_RECOVERY_LDATA_BY_PROCESS = "DELETE_ACTIVITY_RECOVERY_LDATA_BY_PROCESS";
-	public final static String DELETE_FAULT_LDATA_BY_PROCESS = "DELETE_FAULT_LDATA_BY_PROCESS";
-	public final static String DELETE_JACOB_LDATA_BY_PROCESS = "DELETE_JACOB_LDATA_BY_PROCESS";
-	public final static String DELETE_PARTNER_LINK_LDATA_BY_PROCESS = "DELETE_PARTNER_LINK_LDATA_BY_PROCESS";
-	public final static String DELETE_MESSAGE_LDATA_BY_PROCESS = "DELETE_MESSAGE_LDATA_BY_PROCESS";
-	public final static String DELETE_MEX_LDATA_BY_PROCESS = "DELETE_MEX_LDATA_BY_PROCESS";
-
-	public final static String DELETE_EVENT_LDATA_BY_INSTANCE = "DELETE_EVENT_LDATA_BY_INSTANCE";
-	public final static String DELETE_MESSAGE_LDATA_BY_MEX = "DELETE_MESSAGE_LDATA_BY_MEX";
-	public final static String DELETE_UNMATCHED_MESSAGE_LDATA_BY_INSTANCE = "DELETE_UNMATCHED_MESSAGE_LDATA_BY_INSTANCE";
-	public final static String DELETE_XMLDATA_LDATA_BY_INSTANCE = "DELETE_XMLDATA_LDATA_BY_INSTANCE";
-	public final static String DELETE_PARTNER_LINK_LDATA_BY_INSTANCE = "DELETE_PARTNER_LINK_LDATA_BY_INSTANCE";
-	public final static String DELETE_FAULT_LDATA_BY_INSTANCE_ID = "DELETE_FAULT_LDATA_BY_INSTANCE_ID";
+    public final static String DELETE_ACTIVITY_RECOVERY_LDATA_BY_INSTANCES = "DELETE_ACTIVITY_RECOVERY_LDATA_BY_INSTANCES";
+    public final static String DELETE_JACOB_LDATA_BY_INSTANCES = "DELETE_JACOB_LDATA_BY_INSTANCES";
+    public final static String DELETE_MESSAGE_LDATA_BY_INSTANCES = "DELETE_MESSAGE_LDATA_BY_INSTANCES";
+    public final static String DELETE_MEX_LDATA_BY_INSTANCES = "DELETE_MEX_LDATA_BY_INSTANCES";
+
+    public final static String DELETE_EVENT_LDATA_BY_INSTANCES = "DELETE_EVENT_LDATA_BY_INSTANCES";
+    public final static String DELETE_MESSAGE_LDATA_BY_MEX = "DELETE_MESSAGE_LDATA_BY_MEX";
+    public final static String DELETE_UNMATCHED_MESSAGE_LDATA_BY_INSTANCES = "DELETE_UNMATCHED_MESSAGE_LDATA_BY_INSTANCES";
+    public final static String DELETE_XMLDATA_LDATA_BY_INSTANCES = "DELETE_XMLDATA_LDATA_BY_INSTANCES";
+    public final static String DELETE_PARTNER_LINK_LDATA_BY_INSTANCES = "DELETE_PARTNER_LINK_LDATA_BY_INSTANCES";
+    public final static String DELETE_FAULT_LDATA_BY_INSTANCE_IDS = "DELETE_FAULT_LDATA_BY_INSTANCE_IDS";
 	
-  private byte[] binary = null;
+    private byte[] binary = null;
 
-  public HLargeData() {
-    super();
-  }
-
-  public HLargeData(byte[] binary) {
-    super();
-    this.binary = binary;
-  }
-
-  public HLargeData(String text) {
-    super();
-    this.binary = text.getBytes();
-  }
-
-  /**
-   * @hibernate.property
-   *    type="binary"
-   *     length="2G"
-   *
-   * @hibernate.column
-   *    name="BIN_DATA"
-   *    sql-type="blob(2G)"
-   */
-  public byte[] getBinary() {
-    return binary;
-  }
-                                  
-  public void setBinary(byte[] binary) {
-    this.binary = binary;
-  }
-
-  public String getText() {
-    return new String(binary);
-  }
+    public HLargeData() {
+        super();
+    }
+
+    public HLargeData(byte[] binary) {
+        super();
+        this.binary = binary;
+    }
+
+    public HLargeData(String text) {
+        super();
+        this.binary = text.getBytes();
+    }
+
+    /**
+     * @hibernate.property type="binary" length="2G"
+     *
+     * @hibernate.column name="BIN_DATA" sql-type="blob(2G)"
+     */
+    public byte[] getBinary() {
+        return binary;
+    }
+                                                                    
+    public void setBinary(byte[] binary) {
+        this.binary = binary;
+    }
+
+    public String getText() {
+        return new String(binary);
+    }
 }

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessage.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessage.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessage.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessage.java Mon Apr 20 06:44:37 2009
@@ -23,53 +23,53 @@
  *
  * @hibernate.class table="BPEL_MESSAGE"
  * @hibernate.query name="DELETE_MESSAGES_BY_MEX" query="delete from HMessage as m WHERE m.messageExchange = :messageExchange"
- * @hibernate.query name="DELETE_MESSAGES_BY_PROCESS" query="delete from HMessage as m WHERE m.messageExchange IN(select e from HMessageExchange e where e.process = :process)"
+ * @hibernate.query name="DELETE_MESSAGES_BY_INSTANCES" query="delete from HMessage as m WHERE m.messageExchange IN(select e from HMessageExchange e where e.instance in (:instances))"
  */
 public class HMessage extends HObject {
-	public final static String DELETE_MESSAGES_BY_MEX = "DELETE_MESSAGES_BY_MEX";
-	public final static String DELETE_MESSAGES_BY_PROCESS = "DELETE_MESSAGES_BY_PROCESS";
+    public final static String DELETE_MESSAGES_BY_MEX = "DELETE_MESSAGES_BY_MEX";
+    public final static String DELETE_MESSAGES_BY_INSTANCES = "DELETE_MESSAGES_BY_INSTANCES";
 
-  private HMessageExchange _mex;
-  private String _type;
-  private HLargeData _data;
-  private HLargeData _header;
-  
-  public void setMessageExchange(HMessageExchange mex) {
-    _mex = mex;
-  }
-  
-  /** @hibernate.many-to-one column="MEX" foreign-key="none"*/
-  public HMessageExchange getMessageExchange() {
-    return _mex;
-  }
-
-  public void setType(String type) {
-    _type = type;
-  }
-
-  /** @hibernate.property column="TYPE" */
-  public String getType() {
-    return _type;
-  }
-
-  /**
-   * @hibernate.many-to-one column="DATA" lazy="false" outer-join="true" foreign-key="none"
-   * */
-  public HLargeData getMessageData() {
-    return _data;
-  }
-
-  public void setMessageData(HLargeData data) {
-    _data = data;
-  }
-
-  /** @hibernate.many-to-one column="HEADER"  lazy="false" outer-join="true" foreign-key="none" */
-  public HLargeData getHeader() {
-    return _header;
-  }
-
-  public void setHeader(HLargeData header) {
-    _header = header;
-  }
+    private HMessageExchange _mex;
+    private String _type;
+    private HLargeData _data;
+    private HLargeData _header;
+    
+    public void setMessageExchange(HMessageExchange mex) {
+        _mex = mex;
+    }
+    
+    /** @hibernate.many-to-one column="MEX" foreign-key="none"*/
+    public HMessageExchange getMessageExchange() {
+        return _mex;
+    }
+
+    public void setType(String type) {
+        _type = type;
+    }
+
+    /** @hibernate.property column="TYPE" */
+    public String getType() {
+        return _type;
+    }
+
+    /**
+     * @hibernate.many-to-one column="DATA" lazy="false" outer-join="true" foreign-key="none"
+     * */
+    public HLargeData getMessageData() {
+        return _data;
+    }
+
+    public void setMessageData(HLargeData data) {
+        _data = data;
+    }
+
+    /** @hibernate.many-to-one column="HEADER"    lazy="false" outer-join="true" foreign-key="none" */
+    public HLargeData getHeader() {
+        return _header;
+    }
+
+    public void setHeader(HLargeData header) {
+        _header = header;
+    }
 
 }

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchange.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchange.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchange.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchange.java Mon Apr 20 06:44:37 2009
@@ -27,16 +27,12 @@
  * Hibernate-managed table for keeping track of message exchanges.
  * 
  * @hibernate.class table="BPEL_MESSAGE_EXCHANGE" dynamic-update="true"
- * @hibernate.query name="DELETE_MEX_BY_INSTANCE" query="delete from HMessageExchange as m where m.instance = :instance"
- * @hibernate.query name="SELECT_UNMATCHED_MEX_BY_INSTANCE" query="from HMessageExchange as m where m in(select cm.messageExchange from HCorrelatorMessage as cm where cm.messageExchange.instance = :instance)"
- * @hibernate.query name="DELETE_UNMATCHED_MEX" query="delete from HMessageExchange as m where m in(:mex)"
- * @hibernate.query name="DELETE_MEX_BY_PROCESS" query="delete from HMessageExchange as m where m.process = :process"
+ * @hibernate.query name="DELETE_MEX_BY_INSTANCES" query="delete from HMessageExchange as m where m.instance in (:instances)"
+ * @hibernate.query name="SELECT_UNMATCHED_MEX_BY_INSTANCES" query="from HMessageExchange as m where m in(select cm.messageExchange from HCorrelatorMessage as cm where cm.messageExchange.instance in (:instances))"
  */
 public class HMessageExchange extends HObject {
-	public final static String DELETE_MEX_BY_INSTANCE = "DELETE_MEX_BY_INSTANCE";
-	public final static String SELECT_UNMATCHED_MEX_BY_INSTANCE = "SELECT_UNMATCHED_MEX_BY_INSTANCE";
-	public final static String DELETE_UNMATCHED_MEX = "DELETE_UNMATCHED_MEX";
-	public final static String DELETE_MEX_BY_PROCESS = "DELETE_MEX_BY_PROCESS";
+    public final static String DELETE_MEX_BY_INSTANCES = "DELETE_MEX_BY_INSTANCES";
+    public final static String SELECT_UNMATCHED_MEX_BY_INSTANCES = "SELECT_UNMATCHED_MEX_BY_INSTANCES";
 
     private String _channelName;
 

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchangeProperty.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchangeProperty.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchangeProperty.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HMessageExchangeProperty.java Mon Apr 20 06:44:37 2009
@@ -25,72 +25,72 @@
  * is excluded from schema export.
  * 
  * @hibernate.class table="BPEL_MEX_PROPS" lazy="true"
- * @hibernate.query name="DELETE_MEX_PROPS_BY_PROCESS" query="delete from HMessageExchangeProperty as p where p.mex in(select e from HMessageExchange e where e.process = :process)"
+ * @hibernate.query name="DELETE_MEX_PROPS_BY_INSTANCES" query="delete from HMessageExchangeProperty as p where p.mex in(select e from HMessageExchange e where e.instance in (:instances))"
  */
 @SuppressWarnings("serial")
 public class HMessageExchangeProperty implements Serializable {
-	public final static String DELETE_MEX_PROPS_BY_PROCESS = "DELETE_MEX_PROPS_BY_PROCESS";
+    public final static String DELETE_MEX_PROPS_BY_INSTANCES = "DELETE_MEX_PROPS_BY_INSTANCES";
+
+    private HMessageExchange _mex;
+    private String _name;
+    private String _value;
+
+    public HMessageExchangeProperty() {
+    }
 
-	private HMessageExchange _mex;
-	private String _name;
-	private String _value;
-
-	public HMessageExchangeProperty() {
-	}
-
-	/**
-	 * @hibernate.id
-	 * @return
-	 */
-	public HMessageExchangeProperty getKey() {
-		return null;
-	}
-
-	public void setKey(HMessageExchangeProperty property) {
-	}
-	
+    /**
+     * @hibernate.id
+     * @return
+     */
+    public HMessageExchangeProperty getKey() {
+        return null;
+    }
+
+    public void setKey(HMessageExchangeProperty property) {
+    }
+    
     /**
      * @hibernate.many-to-one column="MEX" insert="false" update="false"
      */
-	public HMessageExchange getMex() {
-		return _mex;
-	}
-
-	public void setMex(HMessageExchange mex) {
-		_mex = mex;
-	}
-
-	/**
-	 * @hibernate.property column="NAME" type="string" length="8000" insert="false" update="false"
-	 */
-	public String getName() {
-		return _name;
-	}
-	
-	public void setName(String name) {
-		_name = name;
-	}
-
-	/**
-	 * @hibernate.property column="VALUE" type="string"  insert="false" update="false"
-	 */
-	public String getValue() {
-		return _value;
-	}
-
-	public void setValue(String value) {
-		_value = value;
-	}
-
-	public boolean equals(Object another) {
-		// fake implementation to suppress hibernate warning on key not hash-searchable; 
-		// actually HMessageExchangePropery is never retrieved by the id 
-		return super.equals(another);
-	}
-	
-	public int hashCode() {
-		// fake implementation to suppress hibernate warning on key not hash-searchable
-		// actually HMessageExchangePropery is never retrieved by the id 
-		return _mex.hashCode() * 29 + _name.hashCode() * 13;
-	}
+    public HMessageExchange getMex() {
+        return _mex;
+    }
+
+    public void setMex(HMessageExchange mex) {
+        _mex = mex;
+    }
+
+    /**
+     * @hibernate.property column="NAME" type="string" length="8000" insert="false" update="false"
+     */
+    public String getName() {
+        return _name;
+    }
+    
+    public void setName(String name) {
+        _name = name;
+    }
+
+    /**
+     * @hibernate.property column="VALUE" type="string"  insert="false" update="false"
+     */
+    public String getValue() {
+        return _value;
+    }
+
+    public void setValue(String value) {
+        _value = value;
+    }
+
+    public boolean equals(Object another) {
+        // fake implementation to suppress hibernate warning on key not hash-searchable; 
+        // actually HMessageExchangePropery is never retrieved by the id 
+        return super.equals(another);
+    }
+    
+    public int hashCode() {
+        // fake implementation to suppress hibernate warning on key not hash-searchable
+        // actually HMessageExchangePropery is never retrieved by the id 
+        return _mex.hashCode() * 29 + _name.hashCode() * 13;
+    }
 }
\ No newline at end of file

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HObject.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HObject.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HObject.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HObject.java Mon Apr 20 06:44:37 2009
@@ -18,6 +18,7 @@
  */
 package org.apache.ode.daohib.bpel.hobj;
 
+import java.util.Collection;
 import java.util.Date;
 
 /**
@@ -25,7 +26,6 @@
  * timestamp and lock fields.
  */
 public class HObject {
-
     private Long _id;
 
     private Date _created;
@@ -75,6 +75,28 @@
         _lock = lock;
     }
 
+    public static <T extends HObject> Object[] toIdArray(T[] objects) {
+        Object[] ids = new Object[objects.length];
+
+        int index = 0;
+        for( HObject object : objects ) {
+            ids[index++] = object.getId();
+        }
+
+        return ids;
+    }
+
+    public static Object[] toIdArray(Collection<? extends HObject> objects) {
+        Object[] ids = new Object[objects.size()];
+
+        int index = 0;
+        for( HObject object : objects ) {
+            ids[index++] = object.getId();
+        }
+
+        return ids;
+    }
+
     public String toString() {
         return this.getClass()+"{id="+_id+"}";
     }

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HPartnerLink.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HPartnerLink.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HPartnerLink.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HPartnerLink.java Mon Apr 20 06:44:37 2009
@@ -28,12 +28,10 @@
  * configuration).
  * 
  * @hibernate.class table="BPEL_PLINK_VAL"
- * @hibernate.query name="DELETE_PARTNER_LINKS_BY_INSTANCE" query="delete from HPartnerLink as l where l.scope in (select s from HScope as s where s.instance = :instance)"
- * @hibernate.query name="DELETE_PARTNER_LINKS_BY_PROCESS" query="delete from HPartnerLink as l where l.scope in (select s.id from HScope as s where s.instance.process = :process)"
+ * @hibernate.query name="DELETE_PARTNER_LINKS_BY_INSTANCES" query="delete from HPartnerLink as l where l.scope in (select s from HScope as s where s.instance in (:instances))"
  */
 public class HPartnerLink extends HObject {
-	public final static String DELETE_PARTNER_LINKS_BY_INSTANCE = "DELETE_PARTNER_LINKS_BY_INSTANCE";
-	public final static String DELETE_PARTNER_LINKS_BY_PROCESS = "DELETE_PARTNER_LINKS_BY_PROCESS";
+    public final static String DELETE_PARTNER_LINKS_BY_INSTANCES = "DELETE_PARTNER_LINKS_BY_INSTANCES";
 
     private String _linkName;
 
@@ -201,5 +199,4 @@
     public void setMessageExchanges(Set<HMessageExchange> mex) {
       _mex = mex;
     }
-
 }

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java?rev=766592&r1=766591&r2=766592&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate/src/main/java/org/apache/ode/daohib/bpel/hobj/HProcessInstance.java Mon Apr 20 06:44:37 2009
@@ -28,18 +28,21 @@
  * Hibernate table representing a BPEL process instance.
  * 
  * @hibernate.class table="BPEL_INSTANCE" dynamic-update="true" lazy="true"
- * @hibernate.query name="DELETE_INSTANCES_BY_PROCESS" query="delete from HProcessInstance as p where p.process = :process"
- * @hibernate.query name="COUNT_INSTANCES_BY_STATUS_AND_PROCESS_ID" query="select count(i.id) as cnt, max(i.activityFailureDateTime) as lastFailureDt from HProcessInstance as i where i.process.processId = :processId and i.state in(:states) and i.activityFailureCount > 0"
- * @hibernate.query name="COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID" query="select count(i.id) as cnt, max(i.activityFailureDateTime) as lastFailureDt from HProcessInstance as i where i.process.processId = :processId and i.state in(:states) and i.activityFailureCount > 0"
- * @hibernate.query name="SELECT_ACTIVE_INSTANCES" query="from HProcessInstance as i where i.process.id = :processId and i.state = :state"
+ * @hibernate.query name="COUNT_FAILED_INSTANCES_BY_PROCESS_IDS_AND_STATES" query="select count(i.id) as cnt, max(i.activityFailureDateTime) as lastFailureDt from HProcessInstance as i where i.process.processId in (:processIds) and i.state in(:states) and i.activityFailureCount > 0"
+ * @hibernate.query name="SELECT_INSTANCES_BY_PROCESS" query="from HProcessInstance as i where i.process = :process)"
+ * @hibernate.query name="SELECT_INSTANCES_BY_PROCESSES_AND_STATES" query="from HProcessInstance as i where i.process in (:processes) and i.state in (:states)"
+ * @hibernate.query name="DELETE_INSTANCES" query="delete from HProcessInstance as i where i in (:instances)"
  */
 public class HProcessInstance extends HObject {
-	public static final String SELECT_ACTIVE_INSTANCES="SELECT_ACTIVE_INSTANCES";
-	public static final String DELETE_INSTANCES_BY_PROCESS="DELETE_INSTANCES_BY_PROCESS";
-	public static final String COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID="COUNT_FAILED_INSTANCES_BY_STATUS_AND_PROCESS_ID";
+    public static final String COUNT_FAILED_INSTANCES_BY_PROCESS_IDS_AND_STATES="COUNT_FAILED_INSTANCES_BY_PROCESS_IDS_AND_STATES";
+    public static final String SELECT_INSTANCES_BY_PROCESS="SELECT_INSTANCES_BY_PROCESS";
+    public static final String SELECT_INSTANCES_BY_PROCESSES_AND_STATES="SELECT_INSTANCES_BY_PROCESSES_AND_STATES";
+    public static final String DELETE_INSTANCES="DELETE_INSTANCES";
 
 	/** Foreign key to owner {@link HProcess}. */
     private HProcess _process;
+    
+    private Long _processId;
 
     /** Foreign key to the instantiating {@link HCorrelator}. */
     private HCorrelator _instantiatingCorrelator;
@@ -170,7 +173,7 @@
 
     /**
      * 
-     * @hibernate.many-to-one column="PROCESS_ID" lazy="false" outer-join="true" foreign-key="none"
+     * @hibernate.many-to-one column="PROCESS_ID" lazy="true" outer-join="true" not-found="ignore" foreign-key="none"
      */
     public HProcess getProcess() {
         return _process;
@@ -181,6 +184,17 @@
     }
 
     /**
+     * @hibernate.property column="PROCESS_ID" insert="false" update="false"
+     */
+    public Long getProcessId() {
+        return _processId;
+    }
+
+    public void setProcessId(Long processId) {
+    	_processId = processId;
+    }
+    
+    /**
      * @hibernate.bag lazy="true" inverse="true"
      * @hibernate.collection-key column="PIID" foreign-key="none"
      * @hibernate.collection-one-to-many class="org.apache.ode.daohib.bpel.hobj.HScope"
@@ -273,5 +287,4 @@
     public void setActivityFailureDateTime(Date dateTime) {
         _activityFailureDateTime = dateTime;
     }
-
 }