package org.jbpm.persistence; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.FlushModeType; import javax.persistence.Query; import org.drools.persistence.jpa.JpaPersistenceContext; import org.jbpm.persistence.processinstance.ProcessInstanceInfo; public class JpaProcessPersistenceContext extends JpaPersistenceContext implements ProcessPersistenceContext { public JpaProcessPersistenceContext(EntityManager em) { super( em ); } public void persist(ProcessInstanceInfo processInstanceInfo) { getEntityManager().persist( processInstanceInfo ); } public ProcessInstanceInfo findProcessInstanceInfo(Long processId) { return getEntityManager().find( ProcessInstanceInfo.class, processId ); } public void remove(ProcessInstanceInfo processInstanceInfo) { getEntityManager().remove( processInstanceInfo ); } @SuppressWarnings("unchecked") public List<Long> getProcessInstancesWaitingForEvent(String type) { Query processInstancesForEvent = getEntityManager().createNamedQuery( "ProcessInstancesWaitingForEvent" ); processInstancesForEvent.setFlushMode(FlushModeType.COMMIT); processInstancesForEvent.setParameter( "type", type ); return (List<Long>) processInstancesForEvent.getResultList(); } }