package org.jbpm.scheduler.ejbtimer; import javax.ejb.CreateException; import javax.ejb.RemoveException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jbpm.JbpmContext; import org.jbpm.JbpmException; import org.jbpm.graph.exe.ProcessInstance; import org.jbpm.graph.exe.Token; import org.jbpm.job.Timer; import org.jbpm.scheduler.SchedulerService; /** * @author Tom Baeyens * @deprecated replaced by {@link EntitySchedulerService} */ public class EjbSchedulerService implements SchedulerService { private static final long serialVersionUID = 2L; private JbpmContext jbpmContext; private LocalTimerService timerService; public EjbSchedulerService(LocalTimerServiceHome timerServiceHome) { jbpmContext = JbpmContext.getCurrentJbpmContext(); if (jbpmContext == null) throw new JbpmException("no active jbpm context"); try { timerService = timerServiceHome.create(); } catch (CreateException e) { throw new JbpmException("failed to create local timer service", e); } } public void createTimer(Timer timer) { log.debug("creating " + timer); jbpmContext.getJobSession().saveJob(timer); jbpmContext.getSession().flush(); timerService.createTimer(timer); } public void deleteTimer(Timer timer) { if (log.isDebugEnabled()) log.debug("deleting " + timer); timerService.cancelTimer(timer); jbpmContext.getJobSession().deleteJob(timer); } public void deleteTimersByName(String timerName, Token token) { if (log.isDebugEnabled()) { log.debug("deleting timers by name '" + timerName + "' for " + token); } timerService.cancelTimersByName(timerName, token); jbpmContext.getJobSession().deleteTimersByName(timerName, token); } public void deleteTimersByProcessInstance(ProcessInstance processInstance) { if (log.isDebugEnabled()) log.debug("deleting timers for " + processInstance); timerService.cancelTimersForProcessInstance(processInstance); jbpmContext.getJobSession().deleteJobsForProcessInstance(processInstance); } public void close() { try { timerService.remove(); } catch (RemoveException e) { throw new JbpmException("ejb local timer service close problem", e); } } private static final Log log = LogFactory.getLog(EjbSchedulerService.class); }