package net.conselldemallorca.helium.jbpm3.handlers; import java.util.ArrayList; import java.util.Date; import java.util.List; import net.conselldemallorca.helium.jbpm3.integracio.Jbpm3HeliumBridge; import net.conselldemallorca.helium.v3.core.api.dto.PersonaDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jbpm.JbpmException; import org.jbpm.graph.exe.ExecutionContext; /** * Handler per fer la integració amb portasignatures. * * @author Limit Tecnologies <limit@limit.es> */ @SuppressWarnings("serial") public class PortasignaturesHandler extends AbstractHeliumActionHandler implements PortasignaturesHandlerInterface { private String varResponsableCodi; private String responsableCodi; private String pas1Responsables; private String varPas1Responsables; private String pas1MinSignataris; private String varPas1MinSignataris; private String pas2Responsables; private String varPas2Responsables; private String pas2MinSignataris; private String varPas2MinSignataris; private String pas3Responsables; private String varPas3Responsables; private String pas3MinSignataris; private String varPas3MinSignataris; private String varDocument; private String document; private String varAnnexos; private String annexos; private String varImportancia; private String importancia; private String varDataLimit; private String dataLimit; private String varTransicioOK; private String transicioOK; private String varTransicioKO; private String transicioKO; public void execute(ExecutionContext executionContext) throws Exception { try { String personaCodi = (String)getValorOVariable(executionContext, responsableCodi, varResponsableCodi); PersonaDto persona = null; if (personaCodi != null) persona = Jbpm3HeliumBridge.getInstanceService().getPersonaAmbCodi(personaCodi); String documentCodi = (String)getValorOVariable(executionContext, document, varDocument); Long documentStoreId = null; if (documentCodi != null) { documentStoreId = (Long)executionContext.getVariable( Jbpm3HeliumBridge.getInstanceService().getCodiVariablePerDocumentCodi(documentCodi)); } else { throw new JbpmException("No s'ha especificat el codi del document per enviar al portasignatures"); } if (documentStoreId == null) throw new JbpmException("No s'ha pogut trobar el document amb el codi '" + documentCodi + "'"); List<Long> anxs = null; String anxsCodis = (String)getValorOVariable(executionContext, annexos, varAnnexos); if (anxsCodis != null) { anxs = new ArrayList<Long>(); String[] codis = anxsCodis.split(","); for (String codi: codis) { Long anxId = (Long)executionContext.getVariable( Jbpm3HeliumBridge.getInstanceService().getCodiVariablePerDocumentCodi(codi.trim())); if (anxId != null) anxs.add(anxId); } } Jbpm3HeliumBridge.getInstanceService().portasignaturesEnviar( documentStoreId, anxs, persona, getPersonesPas(executionContext, 1), getMinSignatarisPas(executionContext, 1), getPersonesPas(executionContext, 2), getMinSignatarisPas(executionContext, 2), getPersonesPas(executionContext, 3), getMinSignatarisPas(executionContext, 3), getExpedientActual(executionContext).getId(), (String)getValorOVariable(executionContext, importancia, varImportancia), (Date)getValorOVariable(executionContext, dataLimit, varDataLimit), executionContext.getToken().getId(), executionContext.getProcessInstance().getId(), (String)getValorOVariable(executionContext, transicioOK, varTransicioOK), (String)getValorOVariable(executionContext, transicioKO, varTransicioKO)); } catch (Exception e) { logger.error("Error PortasignaturesHandler. ", e); throw new JbpmException("No s'ha pogut enviar el document al portasignatures", e); } } public void setVarResponsableCodi(String varResponsableCodi) { this.varResponsableCodi = varResponsableCodi; } public void setResponsableCodi(String responsableCodi) { this.responsableCodi = responsableCodi; } public void setPas1Responsables(String pas1Responsables) { this.pas1Responsables = pas1Responsables; } public void setVarPas1Responsables(String varPas1Responsables) { this.varPas1Responsables = varPas1Responsables; } public void setPas1MinSignataris(String pas1MinSignataris) { this.pas1MinSignataris = pas1MinSignataris; } public void setVarPas1MinSignataris(String varPas1MinSignataris) { this.varPas1MinSignataris = varPas1MinSignataris; } public void setPas2Responsables(String pas2Responsables) { this.pas2Responsables = pas2Responsables; } public void setVarPas2Responsables(String varPas2Responsables) { this.varPas2Responsables = varPas2Responsables; } public void setPas2MinSignataris(String pas2MinSignataris) { this.pas2MinSignataris = pas2MinSignataris; } public void setVarPas2MinSignataris(String varPas2MinSignataris) { this.varPas2MinSignataris = varPas2MinSignataris; } public void setPas3Responsables(String pas3Responsables) { this.pas3Responsables = pas3Responsables; } public void setVarPas3Responsables(String varPas3Responsables) { this.varPas3Responsables = varPas3Responsables; } public void setPas3MinSignataris(String pas3MinSignataris) { this.pas3MinSignataris = pas3MinSignataris; } public void setVarPas3MinSignataris(String varPas3MinSignataris) { this.varPas3MinSignataris = varPas3MinSignataris; } public void setVarDocument(String varDocument) { this.varDocument = varDocument; } public void setVarAnnexos(String varAnnexos) { this.varAnnexos = varAnnexos; } public void setAnnexos(String annexos) { this.annexos = annexos; } public void setDocument(String document) { this.document = document; } public void setVarImportancia(String varImportancia) { this.varImportancia = varImportancia; } public void setImportancia(String importancia) { this.importancia = importancia; } public void setVarDataLimit(String varDataLimit) { this.varDataLimit = varDataLimit; } public void setDataLimit(String dataLimit) { this.dataLimit = dataLimit; } public void setVarTransicioOK(String varTransicioOK) { this.varTransicioOK = varTransicioOK; } public void setTransicioOK(String transicioOK) { this.transicioOK = transicioOK; } public void setVarTransicioKO(String varTransicioKO) { this.varTransicioKO = varTransicioKO; } public void setTransicioKO(String transicioKO) { this.transicioKO = transicioKO; } private List<PersonaDto> getPersonesPas(ExecutionContext executionContext, int pas) { List<PersonaDto> resposta = null; String responsables = null; if (pas == 1) { responsables = (String)getValorOVariable(executionContext, pas1Responsables, varPas1Responsables); } else if (pas == 2) { responsables = (String)getValorOVariable(executionContext, pas2Responsables, varPas2Responsables); } else if (pas == 3) { responsables = (String)getValorOVariable(executionContext, pas3Responsables, varPas3Responsables); } if (responsables != null) { resposta = new ArrayList<PersonaDto>(); String[] codis = responsables.split(","); for (String personaCodi: codis) { PersonaDto persona = Jbpm3HeliumBridge.getInstanceService().getPersonaAmbCodi(personaCodi.trim()); if (persona != null) resposta.add(persona); } } return resposta; } private int getMinSignatarisPas(ExecutionContext executionContext, int pas) { Integer min = null; if (pas == 1) { min = getValorOVariableInteger(executionContext, pas1MinSignataris, varPas1MinSignataris); } else if (pas == 2) { min = getValorOVariableInteger(executionContext, pas2MinSignataris, varPas2MinSignataris); } else if (pas == 3) { min = getValorOVariableInteger(executionContext, pas3MinSignataris, varPas3MinSignataris); } if (min != null) return min.intValue(); else return 0; } private static final Log logger = LogFactory.getLog(PortasignaturesHandler.class); }