[jboss-user] [JBoss jBPM] - Re: Variables == Bottleneck ?

gchanteb do-not-reply at jboss.com
Fri Mar 27 11:29:31 EDT 2009


Hi all, here is the solution for my problem, based on the other post:

I can now delete properly all ended processes, it works. This should exists by default.

package ****;
  | 
  | import java.util.Date;
  | import java.util.List;
  | 
  | import org.hibernate.Query;
  | import org.hibernate.Session;
  | import org.jboss.ejb3.annotation.Management;
  | import org.jboss.ejb3.annotation.Service;
  | import org.jbpm.JbpmConfiguration;
  | import org.jbpm.JbpmContext;
  | import org.jbpm.graph.exe.ProcessInstance;
  | 
  | @Service
  | @Management(JbpmManagementMBean.class)
  | public class JbpmManagement implements JbpmManagementMBean 
  | {
  | 	JbpmConfiguration jBPMConfiguration = null;
  | 	
  | 	@SuppressWarnings("unchecked")
  | 	@Override
  | 	public void removeAllEndedProcesses()
  | 	{
  | 		if(jBPMConfiguration==null)
  | 		{
  | 			jBPMConfiguration = JbpmConfiguration.getInstance();
  | 		}
  | 		JbpmContext context = jBPMConfiguration.createJbpmContext();
  | 		
  | 		try
  | 		{
  | 			Session hibernateSession = context.getSession();
  | 			
  | 			Query processQuery = hibernateSession.createQuery(
  | 					"from org.jbpm.graph.exe.ProcessInstance pi " +
  | 					"where pi.end is not null");
  | 			
  | 			List<ProcessInstance> instances = processQuery.list();
  | 			
  | 			if(instances!=null&&instances.size()>0)
  | 			{
  | 				for(ProcessInstance instance : instances)
  | 				{
  | 					context.getGraphSession().deleteProcessInstance(instance);
  | 				}
  | 			}
  | 		}
  | 		finally 
  | 		{
  | 			context.close();
  | 		}
  | 	}
  | 
  | 	@SuppressWarnings("unchecked")
  | 	@Override
  | 	public void removeAllEndedProcessesBefore(Date date) 
  | 	{
  | 		if(jBPMConfiguration==null)
  | 		{
  | 			jBPMConfiguration = JbpmConfiguration.getInstance();
  | 		}
  | 		JbpmContext context = jBPMConfiguration.createJbpmContext();
  | 		
  | 		try
  | 		{
  | 			Session hibernateSession = context.getSession();
  | 			
  | 			Query processQuery = hibernateSession.createQuery(
  | 					"from org.jbpm.graph.exe.ProcessInstance pi " +
  | 					"where pi.end is not null" +
  | 					"and pi.start < :removalDate");
  | 			
  | 			processQuery.setParameter("removalDate", date);
  | 			
  | 			List<ProcessInstance> instances = processQuery.list();
  | 			
  | 			if(instances!=null&&instances.size()>0)
  | 			{
  | 				for(ProcessInstance instance : instances)
  | 				{
  | 					context.getGraphSession().deleteProcessInstance(instance);
  | 				}
  | 			}
  | 		}
  | 		finally 
  | 		{
  | 			context.close();
  | 		}
  | 	}
  | }

package ****;
  | 
  | import java.util.Date;
  | 
  | public interface JbpmManagementMBean
  | {
  | 	public abstract void removeAllEndedProcesses();
  | 	public abstract void removeAllEndedProcessesBefore(Date date);
  | }

Make a jar and put it in your deploy folder.

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

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



More information about the jboss-user mailing list