package br.com.centralit.bpm.negocio; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import br.com.centralit.bpm.dto.ItemTrabalhoFluxoDTO; import br.com.centralit.bpm.dto.SequenciaFluxoDTO; import br.com.centralit.bpm.integracao.ItemTrabalhoFluxoDao; import br.com.centralit.bpm.integracao.SequenciaFluxoDao; import br.com.centralit.bpm.util.UtilScript; import br.com.citframework.util.UtilStrings; public class SequenciaFluxo extends NegocioBpm { private InstanciaFluxo instanciaFluxo; public SequenciaFluxo(InstanciaFluxo instanciaFluxo) { this.instanciaFluxo = instanciaFluxo; setTransacao(instanciaFluxo.getTransacao()); } public List<ItemTrabalho> getOrigens(ItemTrabalho itemTrabalho) throws Exception { setTransacaoDao(getSequenciaFluxoDAO()); List<ItemTrabalho> origens = new ArrayList<>(); Collection<SequenciaFluxoDTO> colSequencias = getSequenciaFluxoDAO().findByIdFluxoAndIdDestino(this.getInstanciaFluxo().getIdFluxo(), itemTrabalho.getIdElemento()); if (colSequencias != null) { ItemTrabalhoFluxoDao itemTrabalhoDao = new ItemTrabalhoFluxoDao(); setTransacaoDao(itemTrabalhoDao); for (SequenciaFluxoDTO sequenciaDto : colSequencias) { ItemTrabalhoFluxoDTO itemTrabalhoDto = itemTrabalhoDao .lastByIdInstanciaAndIdElemento(this.getInstanciaFluxo().getIdInstancia(), sequenciaDto.getIdElementoOrigem()); if (itemTrabalhoDto != null) origens.add(ItemTrabalho.getItemTrabalho(getInstanciaFluxo(), itemTrabalhoDto.getIdItemTrabalho())); } } return origens; } public List<ItemTrabalho> getDestinos(ItemTrabalho elementoOrigem) throws Exception { setTransacaoDao(getSequenciaFluxoDAO()); List<ItemTrabalho> destinos = new ArrayList<>(); Collection<SequenciaFluxoDTO> colSequencias = getSequenciaFluxoDAO().findByIdFluxoAndIdOrigem(this.getInstanciaFluxo().getIdFluxo(), elementoOrigem.getIdElemento()); if (colSequencias != null) { for (SequenciaFluxoDTO sequenciaDto : colSequencias) { if (condicaoAtendida(sequenciaDto)) destinos.add(ItemTrabalho.getItemTrabalhoDeElemento(getInstanciaFluxo(), sequenciaDto.getIdElementoDestino())); } } return destinos; } private boolean condicaoAtendida(SequenciaFluxoDTO sequenciaDto) throws Exception { String nome = UtilStrings.nullToNaoDisponivel(sequenciaDto.getNome()); if (nome.equals("")) nome = "Sequencia"; return new Condicao(instanciaFluxo, sequenciaDto.getCondicao(), nome).executa(); } public InstanciaFluxo getInstanciaFluxo() { return instanciaFluxo; } public static void main(String[] args) throws Exception { Map<String, Object> params = new HashMap<>(); params.put("solicitacaoservico.situacao", "RESOLVIDA"); boolean ret = (Boolean) UtilScript.executaScript("nome", "#{solicitacaoservico.situacao}.equalsIgnoreCase('Cancelada') || #{solicitacaoservico.situacao}.equalsIgnoreCase('Resolvida');", params); if (ret) System.out.println("####### true"); else System.out.println("####### false"); } private SequenciaFluxoDao sequenciaFluxoDAO; private SequenciaFluxoDao getSequenciaFluxoDAO() { if (sequenciaFluxoDAO == null) { sequenciaFluxoDAO = new SequenciaFluxoDao(); } return sequenciaFluxoDAO; } }