/** * */ package net.conselldemallorca.helium.jbpm3.handlers; import net.conselldemallorca.helium.jbpm3.integracio.Jbpm3HeliumBridge; import net.conselldemallorca.helium.v3.core.api.dto.TerminiIniciatDto; import org.jbpm.JbpmException; import org.jbpm.graph.exe.ExecutionContext; import org.jbpm.job.Timer; import org.jbpm.scheduler.def.CreateTimerAction; import org.jbpm.taskmgmt.exe.TaskInstance; /** * Handler per configurar una tasca o un timer donat un termini iniciat. * * @author Limit Tecnologies <limit@limit.es> */ @SuppressWarnings("serial") public class ConfigurarAmbTerminiHandler extends CreateTimerAction implements ConfigurarAmbTerminiHandlerInterface { private String terminiCodi; private String varTerminiCodi; public void execute(ExecutionContext executionContext) throws Exception { String tc = (String)getValorOVariable( executionContext, terminiCodi, varTerminiCodi); TerminiIniciatDto terminiIniciat = Jbpm3HeliumBridge.getInstanceService().getTerminiIniciatAmbProcessInstanceITerminiCodi( getProcessInstanceId(executionContext), tc); if (terminiIniciat != null) { Timer timer = executionContext.getTimer(); if (timer != null) timer.setDueDate(terminiIniciat.getDataFiAmbAturadaActual()); TaskInstance taskInstance = executionContext.getTaskInstance(); if (taskInstance != null) taskInstance.setDueDate(terminiIniciat.getDataFiAmbAturadaActual()); Jbpm3HeliumBridge.getInstanceService().configurarTerminiIniciatAmbDadesJbpm( terminiIniciat.getId(), (taskInstance != null) ? new Long(taskInstance.getId()).toString() : null, (timer != null) ? new Long(timer.getId()) : null); } else { throw new JbpmException("No s'ha trobat cap termini iniciat (codi=" + tc + ")"); } } public void setTerminiCodi(String terminiCodi) { this.terminiCodi = terminiCodi; } public void setVarTerminiCodi(String varTerminiCodi) { this.varTerminiCodi = varTerminiCodi; } protected Object getValorOVariable(ExecutionContext executionContext, Object value, String var) { if (value != null) return value; if (var != null) return executionContext.getVariable(var); return null; } protected String getProcessInstanceId(ExecutionContext executionContext) { return new Long(executionContext.getProcessInstance().getId()).toString(); } }