package com.mossle.bpm.scheduler;
import java.util.List;
import javax.annotation.Resource;
import com.mossle.bpm.cmd.SendNoticeCmd;
import com.mossle.bpm.persistence.manager.BpmProcessManager;
import com.mossle.bpm.persistence.manager.BpmTaskDefNoticeManager;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.task.Task;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
public class TaskTimeoutJob {
private static Logger logger = LoggerFactory
.getLogger(TaskTimeoutJob.class);
public static final int TYPE_ARRIVAL = 0;
public static final int TYPE_COMPLETE = 1;
public static final int TYPE_TIMEOUT = 2;
private ProcessEngine processEngine;
private BpmProcessManager bpmProcessManager;
private BpmTaskDefNoticeManager bpmTaskDefNoticeManager;
@Scheduled(cron = "0/10 * * * * ?")
public void execute() throws Exception {
logger.info("start");
List<Task> tasks = processEngine.getTaskService().createTaskQuery()
.list();
for (Task task : tasks) {
if (task.getDueDate() != null) {
SendNoticeCmd sendNoticeCmd = new SendNoticeCmd(task.getId());
processEngine.getManagementService().executeCommand(
sendNoticeCmd);
}
}
logger.info("end");
}
@Resource
public void setProcessEngine(ProcessEngine processEngine) {
this.processEngine = processEngine;
}
@Resource
public void setBpmProcessManager(BpmProcessManager bpmProcessManager) {
this.bpmProcessManager = bpmProcessManager;
}
@Resource
public void setBpmTaskDefNoticeManager(
BpmTaskDefNoticeManager bpmTaskDefNoticeManager) {
this.bpmTaskDefNoticeManager = bpmTaskDefNoticeManager;
}
}