@PostConstruct public void init() { // make sure it has tx manager as it runs as background thread - no request scope available if (!((JbpmServicesPersistenceManagerImpl) pm).hasTransactionManager()) { ((JbpmServicesPersistenceManagerImpl) pm) .setTransactionManager(new JbpmJTATransactionManager()); } long now = System.currentTimeMillis(); List<DeadlineSummaryImpl> resultList = (List<DeadlineSummaryImpl>) pm.queryInTransaction("UnescalatedStartDeadlines"); for (DeadlineSummaryImpl summary : resultList) { long delay = summary.getDate().getTime() - now; schedule(summary.getTaskId(), summary.getDeadlineId(), delay, DeadlineType.START); } resultList = (List<DeadlineSummaryImpl>) pm.queryInTransaction("UnescalatedEndDeadlines"); for (DeadlineSummaryImpl summary : resultList) { long delay = summary.getDate().getTime() - now; schedule(summary.getTaskId(), summary.getDeadlineId(), delay, DeadlineType.END); } }