package br.com.centralit.bpm.negocio;
import java.util.HashMap;
import java.util.Map;
import br.com.centralit.bpm.dto.EventoFluxoDTO;
import br.com.centralit.bpm.dto.FluxoDTO;
import br.com.centralit.bpm.dto.ObjetoNegocioFluxoDTO;
public interface IExecucaoFluxo {
public InstanciaFluxo inicia() throws Exception;
public InstanciaFluxo inicia(String nomeFluxo, Integer idFase) throws Exception;
public InstanciaFluxo inicia(FluxoDTO fluxoDto, Integer idFase) throws Exception;
public void executa(String loginUsuario, ObjetoNegocioFluxoDTO objetoNegocioDto, Integer idItemTrabalho, String acao, HashMap<String, Object> map) throws Exception;
public void mapObjetoNegocio(Map<String, Object> map) throws Exception;
public void encerra() throws Exception;
public void reabre(String loginUsuario) throws Exception;
public void suspende(String loginUsuario) throws Exception;
public void reativa(String loginUsuario) throws Exception;
public void enviaEmail(Integer idModeloEmail) throws Exception;
public void enviaEmail(String identificador) throws Exception;
public void enviaEmail(String identificador, String[] destinatarios) throws Exception;
public void delega(String loginUsuario, ObjetoNegocioFluxoDTO objetoNegocioDto, Integer idItemTrabalho, String usuarioDestino, String grupoDestino) throws Exception;
public void direcionaAtendimento(String loginUsuario, ObjetoNegocioFluxoDTO objetoNegocioDto, String grupoAtendimento) throws Exception;
public void executaEvento(EventoFluxoDTO eventoFluxoDto) throws Exception;
public void validaEncerramento() throws Exception;
public void atribuiAcompanhamento(ItemTrabalho itemTrabalho, String usuario, String grupo) throws Exception;
public void verificaSLA(ItemTrabalho itemTrabalho) throws Exception;
}