package is.idega.idegaweb.egov.bpm.cases.actionhandlers; import java.util.List; import org.jbpm.graph.def.ActionHandler; import org.jbpm.graph.def.Node; import org.jbpm.graph.exe.ExecutionContext; import org.jbpm.graph.exe.Token; import org.jbpm.scheduler.SchedulerService; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service; /** * @author <a href="anton@idega.com">Anton Makarov</a> * @version Revision: 1.0 Last modified: Nov 28, 2008 by Author: Anton */ @Service("deleteNodeTimersHandler") @Scope("prototype") public class DeleteNodeTimersHandler implements ActionHandler { private static final long serialVersionUID = -8838368363278394618L; private String timersNodeName; @SuppressWarnings("unchecked") public void execute(ExecutionContext executionContext) throws Exception { SchedulerService schedulerService = executionContext.getJbpmContext().getServices().getSchedulerService(); Node timersNode = getTimersNodeName() == null ? executionContext.getNode() : executionContext.getProcessDefinition().getNode(getTimersNodeName()); String timersName = timersNode.getName(); List<Token> tokens = executionContext.getProcessInstance().getRootToken().getChildrenAtNode(timersNode); for (Token tok : tokens) { if (!tok.equals(executionContext.getToken())) { schedulerService.deleteTimersByName(timersName, tok); } } } public String getTimersNodeName() { return timersNodeName; } public void setTimersNodeName(String timersNodeName) { this.timersNodeName = timersNodeName; } }