package ExemplosWorkflowEngineService; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.ws.BindingProvider; import net.java.dev.jaxb.array.IntArray; import net.java.dev.jaxb.array.StringArray; import net.java.dev.jaxb.array.StringArrayArray; import com.datasul.technology.webdesk.dm.model.Attachment; import com.datasul.technology.webdesk.workflow.ws.AttachmentArray; import com.datasul.technology.webdesk.workflow.dtos.DeadLineDto; import com.datasul.technology.webdesk.dm.dtos.DocumentDto; import com.datasul.technology.webdesk.foundation.dtos.ColleagueDto; import com.datasul.technology.webdesk.workflow.dtos.AvailableUsersDto; import com.datasul.technology.webdesk.workflow.ws.DocumentDtoArray; import com.datasul.technology.webdesk.workflow.ws.Exception_Exception; import com.datasul.technology.webdesk.workflow.dtos.ProcessAttachmentDto; import com.datasul.technology.webdesk.workflow.ws.ProcessAttachmentDtoArray; import com.datasul.technology.webdesk.workflow.dtos.ProcessDefinitionDto; import com.datasul.technology.webdesk.workflow.ws.ProcessDefinitionDtoArray; import com.datasul.technology.webdesk.workflow.dtos.ProcessDefinitionVersionDto; import com.datasul.technology.webdesk.workflow.dtos.ProcessHistoryDto; import com.datasul.technology.webdesk.workflow.ws.ProcessDefinitionVersionDtoArray; import com.datasul.technology.webdesk.workflow.dtos.ProcessTaskAppointmentDto; import com.datasul.technology.webdesk.workflow.ws.ProcessTaskAppointmentDtoArray; import com.datasul.technology.webdesk.workflow.ws.WorkflowEngineService; import com.datasul.technology.webdesk.workflow.ws.WorkflowEngineServiceService; /** * Classe que utiliza todos os métodos da WorkflowEngineService. * Com essa classe pode-se movimentar solicitações Workflow e realizar outras atividades relacionadas a essa funcionalidade. * No método setParameters, pode-se setar algumas das variáveis que são mais utilizadas como parâmetros nos métodos desta classe. * No método changeMethod, pode-se escolher qual método será executado. */ public class WorkflowEngineServiceClient { // Variáveis. String descricaoDocumento, loginColaborador, senhaColaborador, matriculaColaborador, codigoProcesso, comentariosProcesso, arquivo, comentariosTarefa, comentariosCancelamento, colaboradorDestino, dataPrazoTarefa, matriculaColaboradorSubstituto, campoFicha, processId, periodId, textoBusca; int processInstanceId, codigoEmpresa, numeroDocumento, versaoDocumento, sequenciaMovimento, numeroAtividade, segundosAtividade, numeroSolicitacao, sequenciaThread, sequenciaEstado, prazoEmHoras, prazoEmMinutos, limite, ultimoRegistro; boolean colaboradorGestorProcesso, completaTarefa, publicaViaFTP, newProcess, overWrite; byte[] arrayBytes = null; Attachment attachment = new Attachment(); // Variáveis de data. XMLGregorianCalendar dataApontamento; // Dto's DocumentDto documentDto = new DocumentDto(); ProcessAttachmentDto processAttachmentDto = new ProcessAttachmentDto(); ProcessTaskAppointmentDto processTaskAppointmentDto = new ProcessTaskAppointmentDto(); ProcessHistoryDto processHistoryDto = new ProcessHistoryDto(); AvailableUsersDto availableUsersDto = new AvailableUsersDto(); // Array's DocumentDtoArray documentDtoArray = new DocumentDtoArray(); AttachmentArray attachmentArray = new AttachmentArray(); ProcessAttachmentDtoArray processAttachmentDtoArray = new ProcessAttachmentDtoArray(); ProcessDefinitionVersionDtoArray processDefinitionVersionDtoArray = new ProcessDefinitionVersionDtoArray(); ProcessTaskAppointmentDtoArray processTaskAppointmentDtoArray = new ProcessTaskAppointmentDtoArray(); StringArrayArray stringArrayArray = new StringArrayArray(); IntArray intArray = new IntArray(); StringArray stringArray = new StringArray(); ProcessHistoryDto[] processHistoryDtoArray = null; // Instancia WorkflowEngineServiceService. WorkflowEngineServiceService workflowEngineServiceService = new WorkflowEngineServiceService(); WorkflowEngineService service = workflowEngineServiceService.getWorkflowEngineServicePort(); // Inicia execução da classe. public static void main (String args[]) { System.out.println("\nClasse WorkflowEngineService"); // Instancia classe WorkflowEngineServiceClient. WorkflowEngineServiceClient wesc = new WorkflowEngineServiceClient(); // Configura acesso ao WebServices. BindingProvider bp = (BindingProvider) wesc.service; bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://10.80.74.87:8080/webdesk/WorkflowEngineService"); try { // Chama método que configura os valores das variáveis. wesc.setParameters(); // Chama método que é responsável por executar os métodos da classe. wesc.changeMethod(); } catch (Exception e) { e.printStackTrace(); } } /** * Configura parâmetros. * Nesse método, pode-se setar algumas das variáveis que são mais utilizadas como parâmetros nos métodos desta classe. */ public void setParameters() throws Exception { this.loginColaborador = "adm"; this.senhaColaborador = "adm"; this.matriculaColaborador = "adm"; this.matriculaColaboradorSubstituto = "adm"; this.codigoEmpresa = 1; this.codigoProcesso = "PWS"; this.processId = "myTrash"; this.comentariosProcesso = "Comentários do processo ECM utilizando Webservices"; this.comentariosTarefa = "Comentários da tarefa ECM utilizando Webservices"; this.comentariosCancelamento = "Comentários de cancelamento de solicitação do ECM utilizando Webservices"; this.numeroDocumento = 43531; this.versaoDocumento = 1000; this.sequenciaMovimento = 1; this.colaboradorDestino = "adm"; this.numeroAtividade = 2; this.colaboradorGestorProcesso = false; this.completaTarefa = true; this.segundosAtividade = 7200; this.numeroSolicitacao = 62; this.dataPrazoTarefa = "2010-10-19"; this.arquivo = "C:\\DOC.doc"; this.campoFicha = "Titulo"; this.sequenciaThread = 0; this.sequenciaEstado = 0; this.prazoEmHoras = 1; this.prazoEmMinutos = 60; this.periodId = "Default"; this.limite = 5; this.ultimoRegistro = 0; this.textoBusca = "adm"; // Cria data de apontamento. this.dataApontamento = DatatypeFactory.newInstance().newXMLGregorianCalendar(); this.dataApontamento.setYear(2010); this.dataApontamento.setMonth(10); this.dataApontamento.setDay(10); this.dataApontamento.setHour(0); this.dataApontamento.setMinute(0); this.dataApontamento.setSecond(0); } /** * Escolhe método. * Nesse método, pode-se escolher qual método da classe será executado. */ public void changeMethod() throws Exception { // Chama método simpleStartProcess. //this.simpleStartProcess(); // Chama método startProcess. //this.startProcess(); // Chama método setDueDateInHours. //this.setDueDateInHours(); // Chama método setDueDateInMinute. //this.setDueDateInMinute(); // Chama método setTasksComments. //this.setTasksComments(); // Chama método cancelInstance. //this.cancelInstance(); // Chama método cancelInstanceByReplacement. //this.cancelInstanceByReplacement(); // Chama método getCardValue. //this.getCardValue(); // Chama método saveAndSendTask. //this.saveAndSendTask(); // Chama método saveAndSendTaskByReplacement. //this.saveAndSendTaskByReplacement(); // Chama método takeProcessTask. //this.takeProcessTask(); // Chama método getAttachments. //this.getAttachments(); // Chama método getAllActiveStates. //this.getAllActiveStates(); // Chama método getActualThread. //this.getActualThread(); // Chama método getAvailableStates. //this.getAvailableStates(); // Chama método getAvailableUsers. //this.getAvailableUsers(); // Chama método getAvailableUsersOnDemand. //this.getAvailableUsersOnDemand(); // Chama método getInstanceCardData. //this.getInstanceCardData(); // Chama método getAvailableProcess. //this.getAvailableProcess(); // Chama método getAvailableProcessOnDemand. //this.getAvailableProcessOnDemand(); // Chama método updateDocument. //this.updateDocument(); // Chama método importProcess. //this.importProcess(); // Chama método exportProcessinZipFormat. //this.exportProcessinZipFormat(); // Chama método getHistories. //this.getHistories(); } /** * Retorna o arquivo que será anexado no documento. */ public File getArchive() { // Cria arquivo. File file = new File(this.arquivo); if(file.exists()){ try{ byte[] buffer = new byte[8192]; FileInputStream fis = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(fis, 8192); ByteArrayOutputStream baos = new ByteArrayOutputStream((int) file.length()); int len = 0; while ((len = bis.read(buffer, 0, buffer.length)) != -1) { baos.write(buffer, 0, len); } this.arrayBytes = baos.toByteArray(); }catch(Exception e){ e.printStackTrace(); } }else{ System.out.println("Arquivo " + this.arquivo + " não encontrado."); return null; } return file; } /** * Inicia uma solicitação simples. * * Método: simpleStartProcess. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Código do processo; * - Comentários; * - Anexos da solicitação; * - Dados da ficha. * * ****************************************************************************************************************** * OBSERVAÇÃO * * ****************************************************************************************************************** * * Para executar esse método é necessário que a segunda atividade do processo esteja configurada para ter somente * um colaborador para receber a tarefa. Para que isso seja possível, deve-se: * - Criar um mecanismo de atribuição e associar um colaborador a este mecanismo. Para isto, deve-se acessar a * funcionlidade mecanismo de atribuição do GED e criar o mecanismo. No campo "Descrição da Configuração", deve-se * inserir: * * function resolve(process,colleague,configXML){ * var userList = new java.util.ArrayList(); * * userList.add('matrícula do colaborador'); * * return userList; * } * * - Associar o mecanismo criado a segunda atividades do processo; * - Ainda na segunda atividade do processo, deve-se selecionar a opção: "Quando houver mais de uma opção". Com isso, essa * atividade terá somente um colaborador para receber a tarefa. * Depois de ter feito essas configurações, execute esse método. */ public void simpleStartProcess() throws Exception { System.out.println("\nMétodo simpleStartProcess\n"); // Verifica se colaborador tem permissão para executar algum processo. this.processDefinitionVersionDtoArray = (ProcessDefinitionVersionDtoArray) service.getAvailableProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador); // Se possui permissão... if (this.processDefinitionVersionDtoArray != null) { // Cria anexos do processo. this.processAttachmentDto.setCompanyId(this.codigoEmpresa); this.processAttachmentDto.setDocumentId(this.numeroDocumento); this.processAttachmentDto.setVersion(this.versaoDocumento); this.processAttachmentDto.setOriginalMovementSequence(this.sequenciaMovimento); this.processAttachmentDto.setColleagueId(this.matriculaColaborador); this.processAttachmentDto.setDescription("Attachment"); this.processAttachmentDto.setFileName(this.getArchive().getName()); this.processAttachmentDto.setDeleted(false); this.processAttachmentDto.setPermission("1"); this.processAttachmentDto.setNewAttach(true); // Cria anexos do processo. this.attachment.setAttach(true); this.attachment.setFileName(this.getArchive().getName()); this.attachment.setPrincipal(false); this.attachment.setFilecontent(this.arrayBytes); // Adiciona anexos no array de anexos do processo. this.processAttachmentDto.getAttachments().add(this.attachment); this.processAttachmentDtoArray.getItem().add(this.processAttachmentDto); // Cria campos. // Deve-se criar a quantidade de campos do fichário. StringArray field1 = new StringArray(); StringArray field2 = new StringArray(); StringArray field3 = new StringArray(); StringArray field4 = new StringArray(); StringArray field5 = new StringArray(); // Cria dados da ficha. field1.getItem().add("Titulo"); // Campo. field1.getItem().add("Teste de ficha WS"); // Valor. this.stringArrayArray.getItem().add(field1); // Adiciona valor do campo na ficha. field2.getItem().add("Data"); field2.getItem().add("12/05/2011"); this.stringArrayArray.getItem().add(field2); field3.getItem().add("Escopo"); field3.getItem().add("Teste escopo"); this.stringArrayArray.getItem().add(field3); field4.getItem().add("Objetivo"); field4.getItem().add("Teste objetivo"); this.stringArrayArray.getItem().add(field4); field5.getItem().add("Responsavel"); field5.getItem().add("Teste responsável"); this.stringArrayArray.getItem().add(field5); for (int i = 0; i < this.processDefinitionVersionDtoArray.getItem().size(); i++) { // Verifica processo para iniciar. if (this.processDefinitionVersionDtoArray.getItem().get(i).getProcessId().equals(this.codigoProcesso)){ // Inicia processo. StringArray result = service.simpleStartProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.codigoProcesso, this.comentariosProcesso, this.processAttachmentDtoArray, this.stringArrayArray); // Mostra resultado. if (!result.getItem().isEmpty()){ System.out.println("Processo " + this.codigoProcesso + " foi inicializado!"); } else { System.out.println("Processo " + this.codigoProcesso + " não foi inicializado!"); } } } } else { System.out.println("Colaborador " + this.matriculaColaborador + " não possui permissão para iniciar nenhum processo!"); } } /** * Inicia uma solicitação. * * Método: startProcess. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Código do processo; * - Número da atividade; * - Colaborador destino; * - Comentários; * - Matrícula do colaborador; * - Indica se deve completar a tarefa (true) ou apenas salvar (false); * - Anexos da solicitação; * - Dados da ficha; * - Apontamentos da tarefa; * - Indica se o colaborador esta acessando a tarefa como gestor do processo. */ public void startProcess() throws Exception { System.out.println("\nMétodo startProcess\n"); // Verifica se colaborador tem permissão para executar algum processo. this.processDefinitionVersionDtoArray = (ProcessDefinitionVersionDtoArray) service.getAvailableProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador); // Se possui permissão... if (this.processDefinitionVersionDtoArray != null) { // Seta colaborador destino do processo. this.stringArray.getItem().add(this.colaboradorDestino); // Cria anexos do processo. this.processAttachmentDto.setDocumentId(this.numeroDocumento); this.processAttachmentDto.setVersion(this.versaoDocumento); this.processAttachmentDto.setOriginalMovementSequence(this.sequenciaMovimento); this.processAttachmentDto.setCompanyId(this.codigoEmpresa); this.processAttachmentDto.setColleagueId(this.matriculaColaborador); this.processAttachmentDto.setDescription("Attachment"); this.processAttachmentDto.setFileName(this.getArchive().getName()); this.processAttachmentDto.setDeleted(false); this.processAttachmentDto.setPermission("1"); this.processAttachmentDto.setNewAttach(true); // Cria anexos do processo. this.attachment.setAttach(true); this.attachment.setFileName(this.getArchive().getName()); this.attachment.setPrincipal(false); this.attachment.setFilecontent(this.arrayBytes); // Adiciona anexos no array de anexos do processo. this.processAttachmentDto.getAttachments().add(this.attachment); this.processAttachmentDtoArray.getItem().add(this.processAttachmentDto); // Cria campos. // Deve-se criar a quantidade de campos do fichário. StringArray field1 = new StringArray(); StringArray field2 = new StringArray(); StringArray field3 = new StringArray(); StringArray field4 = new StringArray(); StringArray field5 = new StringArray(); // Cria dados da ficha. field1.getItem().add("Titulo"); // Campo. field1.getItem().add("Teste de ficha WS"); // Valor. this.stringArrayArray.getItem().add(field1); // Adiciona valor do campo na ficha. field2.getItem().add("Data"); field2.getItem().add("12/05/2011"); this.stringArrayArray.getItem().add(field2); field3.getItem().add("Escopo"); field3.getItem().add("Teste escopo"); this.stringArrayArray.getItem().add(field3); field4.getItem().add("Objetivo"); field4.getItem().add("Teste objetivo"); this.stringArrayArray.getItem().add(field4); field5.getItem().add("Responsavel"); field5.getItem().add("Teste responsável"); this.stringArrayArray.getItem().add(field5); // Cria apontamentos do processo. // Comentar as duas linhas abaixo caso a atividade não esteja configurada para receber apontamentos. this.processTaskAppointmentDto.setAppointmentDate(this.dataApontamento); this.processTaskAppointmentDto.setAppointmentSeconds(this.segundosAtividade); // Adiciona apontamentos no array de apontamentos do processo. this.processTaskAppointmentDtoArray.getItem().add(this.processTaskAppointmentDto); // Inicia solicitação. this.stringArrayArray = service.startProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.codigoProcesso, this.numeroAtividade, this.stringArray, this.comentariosProcesso, this.matriculaColaborador, this.completaTarefa, this.processAttachmentDtoArray, this.stringArrayArray, this.processTaskAppointmentDtoArray, this.colaboradorGestorProcesso); // Mostra resultado. System.out.println(this.stringArrayArray.getItem().get(0).getItem()); } else { System.out.println("Colaborador " + this.matriculaColaborador + " não possui permissão para iniciar nenhum processo!"); } } /** * Altera a data de prazo da tarefa passando o prazo em horas. * * Método: setDueDate. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Matrícula do colaborador; * - Sequência da Thread; * - Nova data do prazo da tarefa em horas; * - Quantidade de segundos após a meia noite. */ public void setDueDateInHours() throws Exception { System.out.println("\nMétodo setDueDate\n"); //Descobre um prazo a partir de uma data com base nos expedientes e feriados cadastrados no Produto DeadLineDto deadLine = null; deadLine = service.calculateDeadLineHours(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador, this.dataPrazoTarefa, this.segundosAtividade, this.prazoEmHoras, this.periodId); String result; if(deadLine.getDate()!=null && deadLine.getDate()!=""){ // Altera data de prazo da tarefa. result = service.setDueDate(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.matriculaColaborador, this.numeroAtividade, deadLine.getDate(), deadLine.getHora()); }else{ //Não foi possivel definir um prazo utilizando o método calculeDeadLineHours result = service.setDueDate(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.matriculaColaborador, this.numeroAtividade, this.dataPrazoTarefa, this.segundosAtividade); } // Mostra resultado. System.out.println(result); } /** * Altera a data de prazo da tarefa passando o prazo em minutos. * * Método: setDueDate. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Matrícula do colaborador; * - Sequência da Thread; * - Nova data do prazo da tarefa em minutos; * - Quantidade de segundos após a meia noite. */ public void setDueDateInMinute() throws Exception { System.out.println("\nMétodo setDueDate\n"); //Descobre um prazo a partir de uma data com base nos expedientes e feriados cadastrados no Produto DeadLineDto deadLine = null; deadLine = service.calculateDeadLineTime(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador, this.dataPrazoTarefa, this.segundosAtividade, this.prazoEmMinutos, this.periodId); String result; if(deadLine.getDate()!=null && deadLine.getDate()!=""){ // Altera data de prazo da tarefa. result = service.setDueDate(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.matriculaColaborador, this.numeroAtividade, deadLine.getDate(), deadLine.getHora()); }else{ //Não foi possivel definir um prazo utilizando o método calculeDeadLineHours result = service.setDueDate(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.matriculaColaborador, this.numeroAtividade, this.dataPrazoTarefa, this.segundosAtividade); } // Mostra resultado. System.out.println(result); } /** * Altera os comentários da tarefa. * * Método: setTasksComments. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Matrícula do colaborador; * - Número da atividade; * - Comentários da tarefa; */ public void setTasksComments() throws Exception { System.out.println("\nMétodo setTasksComments\n"); // Altera comentários da tarefa. String result = service.setTasksComments(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.matriculaColaborador, this.numeroAtividade, this.comentariosTarefa); // Mostra resultado. if (result.equals("OK")) { System.out.println("Alterado comentários da tarefa!"); } else { System.out.println("Não foi possível alterar os comentários da tarefa!"); } } /** * Cancela uma solicitação. * * Método: cancelInstance. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Matrícula do colaborador; * - Comentários do cancelamento. */ public void cancelInstance() throws Exception { System.out.println("\nMétodo cancelInstance\n"); // Cancela uma solicitação workflow. String result = service.cancelInstance(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.matriculaColaborador, this.comentariosCancelamento); // Mostra resultado. if(result.equals("OK")) { System.out.println("Solicitação " + this.numeroSolicitacao + " foi cancelada!"); } else { System.out.println("Solicitação " + this.numeroSolicitacao + " não foi cancelada!"); } } /** * Cancela uma solicitação utilizando colaborador substituto. * * Método: cancelInstanceByReplacement. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Matrícula do colaborador; * - Comentários do cancelamento; * - Matrícula do colaborador substituto. */ public void cancelInstanceByReplacement() throws Exception { System.out.println("\nMétodo cancelInstanceByReplacement\n"); // Cancela uma solicitação workflow utilizando colaborador substituto. String result = service.cancelInstanceByReplacement(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.matriculaColaborador, this.comentariosCancelamento, this.matriculaColaboradorSubstituto); // Mostra resultado. if(result.equals("OK")) { System.out.println("Colaborador " + this.matriculaColaboradorSubstituto + " não é mais o substituto da solicitação " + this.numeroSolicitacao + "!"); } else { System.out.println("Solicitação para o substituto " + this.matriculaColaboradorSubstituto + " não foi cancelada!"); } } /** * Retorna o valor de um campo da ficha. * * Método: getCardValue. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Matrícula do colaborador; * - Nome do campo da ficha. */ public void getCardValue() throws Exception { System.out.println("\nMétodo getCardValue\n"); // Retorna valor de um campo da ficha. String result = service.getCardValue(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.matriculaColaborador, this.campoFicha); // Mostra resultado. if(result != null) { System.out.println("Valor do campo " + this.campoFicha + ": " + result); } else { System.out.println("Campo " + this.campoFicha + " não encontrado!"); } } /** * Movimenta solicitação para próxima atividade. * * Método: saveAndSendTask. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Número da atividade; * - Colaborador destino; * - Comentários; * - Matrícula do colaborador; * - Indica se deve completar a tarefa (true) ou apenas salvar (false); * - Anexos do processo; * - Dados da ficha; * - Apontamentos do processo; * - Indica se o colaborador esta acessando a tarefa como gestor do processo; * - Número da sequência da thread. */ public void saveAndSendTask() throws Exception { System.out.println("\nMétodo saveAndSendTask\n"); // Verifica se colaborador tem permissão para executar algum processo. this.processDefinitionVersionDtoArray = (ProcessDefinitionVersionDtoArray) service.getAvailableProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador); // Se possui permissão... if (this.processDefinitionVersionDtoArray != null) { // Seta colaborador destino do processo. this.stringArray.getItem().add(this.colaboradorDestino); // Cria anexos do processo. this.processAttachmentDto.setDocumentId(this.numeroDocumento); this.processAttachmentDto.setVersion(this.versaoDocumento); this.processAttachmentDto.setOriginalMovementSequence(this.sequenciaMovimento); this.processAttachmentDto.setColleagueId(this.matriculaColaborador); this.processAttachmentDto.setCompanyId(this.codigoEmpresa); this.processAttachmentDto.setDescription("Attachment"); this.processAttachmentDto.setFileName(this.getArchive().getName()); this.processAttachmentDto.setDeleted(false); this.processAttachmentDto.setPermission("1"); this.processAttachmentDto.setNewAttach(true); // Cria anexos do processo. this.attachment.setAttach(true); this.attachment.setFileName(this.getArchive().getName()); this.attachment.setPrincipal(false); this.attachment.setFilecontent(this.arrayBytes); // Adiciona anexos no array de anexos do processo. this.processAttachmentDto.getAttachments().add(this.attachment); this.processAttachmentDtoArray.getItem().add(this.processAttachmentDto); // Cria campos. // Deve-se criar a quantidade de campos do fichário. StringArray field1 = new StringArray(); StringArray field2 = new StringArray(); StringArray field3 = new StringArray(); StringArray field4 = new StringArray(); StringArray field5 = new StringArray(); // Cria dados da ficha. field1.getItem().add("Titulo"); // Campo. field1.getItem().add("Teste de ficha WS"); // Valor. this.stringArrayArray.getItem().add(field1); // Adiciona valor do campo na ficha. field2.getItem().add("Data"); field2.getItem().add("12/05/2011"); this.stringArrayArray.getItem().add(field2); field3.getItem().add("Escopo"); field3.getItem().add("Teste escopo"); this.stringArrayArray.getItem().add(field3); field4.getItem().add("Objetivo"); field4.getItem().add("Teste objetivo"); this.stringArrayArray.getItem().add(field4); field5.getItem().add("Responsavel"); field5.getItem().add("Teste responsável"); this.stringArrayArray.getItem().add(field5); // Cria apontamentos do processo. // Comentar as duas linhas abaixo caso a atividade não esteja configurada para receber apontamentos. this.processTaskAppointmentDto.setAppointmentDate(this.dataApontamento); this.processTaskAppointmentDto.setAppointmentSeconds(this.segundosAtividade); // Adiciona apontamentos no array de apontamentos do processo. this.processTaskAppointmentDtoArray.getItem().add(this.processTaskAppointmentDto); for (int i = 0; i < this.processDefinitionVersionDtoArray.getItem().size(); i++) { // Verifica processo para iniciar. if (this.processDefinitionVersionDtoArray.getItem().get(i).getProcessId().equals(this.codigoProcesso)){ // Movimenta solicitação para próxima atividade. this.stringArrayArray = service.saveAndSendTask(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.numeroAtividade, this.stringArray, this.comentariosProcesso, this.matriculaColaborador, this.completaTarefa, this.processAttachmentDtoArray, this.stringArrayArray, this.processTaskAppointmentDtoArray, this.colaboradorGestorProcesso, this.sequenciaThread); // Mostra resultado. System.out.println(this.stringArrayArray.getItem().get(0).getItem()); } } } else { System.out.println("Colaborador " + this.matriculaColaborador + " não possui permissão para executar nenhum processo!"); } } /** * Movimenta solicitação para próxima atividade utilizando colaborador substituto. * * Método: saveAndSendTaskByReplacement. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Número da atividade; * - Colaborador destino; * - Comentários; * - Matrícula do colaborador; * - Indica se deve completar a tarefa (true) ou apenas salvar (false); * - Anexos do processo; * - Dados da ficha; * - Apontamentos do processo; * - Indica se o colaborador esta acessando a tarefa como gestor do processo; * - Número da sequência da thread; * - Matrícula do colaborador substituto. */ public void saveAndSendTaskByReplacement() throws Exception { System.out.println("\nMétodo saveAndSendTaskByReplacement\n"); // Verifica se colaborador tem permissão para executar algum processo. this.processDefinitionVersionDtoArray = (ProcessDefinitionVersionDtoArray) service.getAvailableProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador); // Se possui permissão... if (this.processDefinitionVersionDtoArray != null) { // Seta colaborador destino do processo. this.stringArray.getItem().add(this.colaboradorDestino); // Cria anexos do processo. this.processAttachmentDto.setDocumentId(this.numeroDocumento); this.processAttachmentDto.setVersion(this.versaoDocumento); this.processAttachmentDto.setOriginalMovementSequence(this.sequenciaMovimento); this.processAttachmentDto.setColleagueId(this.matriculaColaborador); this.processAttachmentDto.setCompanyId(this.codigoEmpresa); this.processAttachmentDto.setDescription("Attachment"); this.processAttachmentDto.setFileName(this.getArchive().getName()); this.processAttachmentDto.setDeleted(false); this.processAttachmentDto.setPermission("1"); this.processAttachmentDto.setNewAttach(true); // Cria anexos do processo. this.attachment.setAttach(true); this.attachment.setFileName(this.getArchive().getName()); this.attachment.setPrincipal(false); this.attachment.setFilecontent(this.arrayBytes); // Adiciona anexos no array de anexos do processo. this.processAttachmentDto.getAttachments().add(this.attachment); this.processAttachmentDtoArray.getItem().add(this.processAttachmentDto); // Cria campos. // Deve-se criar a quantidade de campos do fichário. StringArray field1 = new StringArray(); StringArray field2 = new StringArray(); StringArray field3 = new StringArray(); StringArray field4 = new StringArray(); StringArray field5 = new StringArray(); // Cria dados da ficha. field1.getItem().add("Titulo"); // Campo. field1.getItem().add("Teste de ficha WS"); // Valor. this.stringArrayArray.getItem().add(field1); // Adiciona valor do campo na ficha. field2.getItem().add("Data"); field2.getItem().add("12/05/2011"); this.stringArrayArray.getItem().add(field2); field3.getItem().add("Escopo"); field3.getItem().add("Teste escopo1"); this.stringArrayArray.getItem().add(field3); field4.getItem().add("Objetivo"); field4.getItem().add("Teste objetivo1"); this.stringArrayArray.getItem().add(field4); field5.getItem().add("Responsavel"); field5.getItem().add("Teste responsável1"); this.stringArrayArray.getItem().add(field5); // Cria apontamentos do processo. // Comentar as duas linhas abaixo caso a atividade não esteja configurada para receber apontamentos. this.processTaskAppointmentDto.setAppointmentDate(this.dataApontamento); this.processTaskAppointmentDto.setAppointmentSeconds(this.segundosAtividade); // Adiciona apontamentos no array de apontamentos do processo. this.processTaskAppointmentDtoArray.getItem().add(this.processTaskAppointmentDto); for (int i = 0; i < this.processDefinitionVersionDtoArray.getItem().size(); i++) { // Verifica processo para iniciar. if (this.processDefinitionVersionDtoArray.getItem().get(i).getProcessId().equals(this.codigoProcesso)){ // Movimenta solicitação para próxima atividade utilizando colaborador substituto. this.stringArrayArray = service.saveAndSendTaskByReplacement(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.numeroAtividade, this.stringArray, this.comentariosProcesso, this.matriculaColaborador, this.completaTarefa, this.processAttachmentDtoArray, this.stringArrayArray, this.processTaskAppointmentDtoArray, this.colaboradorGestorProcesso, this.sequenciaThread, this.matriculaColaboradorSubstituto); // Mostra resultado. System.out.println(this.stringArrayArray.getItem().get(0).getItem()); } } } else { System.out.println("Colaborador " + this.matriculaColaborador + " não possui permissão para executar nenhum processo!"); } } /** * Assume uma tarefa. * * Método: takeProcessTask. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Matrícula do colaborador; * - Número da solicitação; * - Número da sequência da thread. */ public void takeProcessTask() throws Exception { System.out.println("\nMétodo takeProcessTask\n"); // Verifica se colaborador tem permissão para executar algum processo. this.processDefinitionVersionDtoArray = (ProcessDefinitionVersionDtoArray) service.getAvailableProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador); // Se possui permissão... if (this.processDefinitionVersionDtoArray != null) { for (int i = 0; i < this.processDefinitionVersionDtoArray.getItem().size(); i++) { // Verifica processo para iniciar. if (this.processDefinitionVersionDtoArray.getItem().get(i).getProcessId().equals(this.codigoProcesso)){ // Assume uma tarefa workflow. String result = service.takeProcessTask(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador, this.numeroSolicitacao, this.sequenciaThread); // Mostra resultado. if (result.equals("OK")) { System.out.println("Tarefa assumida pelo colaborador " + this.matriculaColaborador); } else { System.out.println(result); } } } } else { System.out.println("Colaborador " + this.matriculaColaborador + " não possui permissão para executar nenhum processo!"); } } /** * Assume uma tarefa utilizando colaborador substituto. * * Método: takeProcessTaskByReplacement. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Matrícula do colaborador; * - Número da solicitação; * - Número da sequência da thread; * - Matrícula do colaborador substituto. */ public void takeProcessTaskByReplacement() throws Exception { System.out.println("\nMétodo takeProcessTaskByReplacement\n"); // Verifica se colaborador tem permissão para executar algum processo. this.processDefinitionVersionDtoArray = (ProcessDefinitionVersionDtoArray) service.getAvailableProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador); // Se possui permissão... if (this.processDefinitionVersionDtoArray != null) { for (int i = 0; i < this.processDefinitionVersionDtoArray.getItem().size(); i++) { // Verifica processo para iniciar. if (this.processDefinitionVersionDtoArray.getItem().get(i).getProcessId().equals(this.codigoProcesso)){ // Passa para próxima atividade da solicitação utilizando colaborador substituto. String result = service.takeProcessTaskByReplacement(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador, this.numeroSolicitacao, this.sequenciaThread, this.matriculaColaboradorSubstituto); // Mostra resultado. if (result.equals("OK")) { System.out.println("Tarefa assumida pelo colaborador " + this.matriculaColaboradorSubstituto); } else { System.out.println(result); } } } } else { System.out.println("Colaborador " + this.matriculaColaborador + " não possui permissão para executar nenhum processo!"); } } /** * Retorna os anexos de uma solicitação. * * Método: getAttachments. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Matrícula do colaborador; * - Número da solicitação. */ public void getAttachments() throws Exception { System.out.println("\nMétodo getAttachments\n"); // Retorna anexos da solicitação workflow. this.processAttachmentDtoArray = service.getAttachments(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador, this.numeroSolicitacao); // Mostra resultado. if (this.processAttachmentDtoArray.getItem().size() > 0) { for (int i = 0; i < this.processAttachmentDtoArray.getItem().size(); i++) { int c = i + 1; System.out.println("Número do documento anexo " + c + ": " + this.processAttachmentDtoArray.getItem().get(i).getDocumentId()); } } else { System.out.println("Nenhum anexo encontrado na solicitação " + this.numeroSolicitacao); } } /** * Retorna o número da atividade em que uma solicitação esta. * * Método: getAllActiveStates. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Matrícula do colaborador; * - Número da solicitação. */ public void getAllActiveStates() throws Exception { System.out.println("\nMétodo getAllActiveStates\n"); // Retorna número da atividade em que a solicitação workflow esta. this.intArray = service.getAllActiveStates(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador, this.numeroSolicitacao); // Mostra resultado. if (!this.intArray.getItem().isEmpty()) { System.out.println("Solicitação esta na atividade " + this.intArray.getItem().get(0)); } else { System.out.println("Nenhuma atividade encontrada para a solicitação " + this.numeroSolicitacao); } } /** * Retorna a sequência da thread de uma solicitação. * * Método: getActualThread. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Sequência do estado. */ public void getActualThread() throws Exception { System.out.println("\nMétodo getActualThread\n"); // Retorna sequência da thread de uma solicitação workflow. int result = service.getActualThread(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.sequenciaEstado); // Mostra resultado. System.out.println("Sequência da thread: " + result); } /** * Retorna o número da próxima atividade de uma solicitação. * * Método: getAvailableStates. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Código do processo; * - Número da solicitação; * - Número da sequência da thread. */ public void getAvailableStates() throws Exception { System.out.println("\nMétodo getAvailableStates\n"); // Retorna número da próxima atividade da solicitação workflow. this.intArray = service.getAvailableStates(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.codigoProcesso, this.numeroSolicitacao, this.sequenciaThread); // Mostra resultado. if (!this.intArray.getItem().isEmpty()) { System.out.println("Próxima atividade: " + this.intArray.getItem().get(0)); } } /** * Retorna os colaboradores que podem receber uma tarefa. * * Método: getAvailableUsers. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Código do processo; * - Número da atividade; * - Número da sequência da thread. * * * **************************************************************************************************************** * OBSERVAÇÕES * * ****************************************************************************************************************** * * Para retornar os colaboradores disponíveis na abertura da solicitação, deve-se: * - Informar 0 no número da solicitação; * - Informar o código do processo; * - Informar o número da segunda atividade do processo. * Para retornar os colaborares que podem receber uma tarefa de um processo já iniciado, deve-se: * - Informar o número da solicitação. */ public void getAvailableUsers() throws Exception { System.out.println("\nMétodo getAvailableUsers\n"); // Se número da solicitação for diferente de zero, retorna os usuários disponíveis de uma solicitação já iniciada. if (this.numeroSolicitacao != 0) { this.stringArray = service.getAvailableUsers(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.numeroAtividade, this.sequenciaThread); // Senão retorna usuários disponíveis na abertura de uma solicitação. } else { this.stringArray = service.getAvailableUsersStart(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.codigoProcesso, this.numeroAtividade, this.sequenciaThread); } // Mostra resultado. if (this.stringArray != null) { if (this.stringArray.getItem().isEmpty()) { System.out.println("Atividade " + this.numeroAtividade + " destinada para " + this.loginColaborador); } else { for (int i = 0; i < this.stringArray.getItem().size(); i++) { System.out.println("Atividade " + this.numeroAtividade + " destinada para " + this.stringArray.getItem().get(i)); } } } else { System.out.println("Nenhum destinatário encontrado para receber a tarefa da atividade " + this.numeroAtividade + " ou ela não existe ou foi finalizada!"); } } /** * Retorna os colaboradores que podem receber uma tarefa, paginados e com busca. * * Método: getAvailableUsers. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Número da solicitação; * - Código do processo; * - Número da atividade; * - Número da sequência da thread; * - Quantidade de registros a serem retornados; * - Última linha retornada; * - Texto da busca. * * * **************************************************************************************************************** * OBSERVAÇÕES * * ****************************************************************************************************************** * * Para retornar os colaboradores disponíveis na abertura da solicitação, deve-se: * - Informar 0 no número da solicitação; * - Informar o código do processo; * - Informar o número da segunda atividade do processo. * Para retornar os colaborares que podem receber uma tarefa de um processo já iniciado, deve-se: * - Informar o número da solicitação. */ public void getAvailableUsersOnDemand() throws Exception { System.out.println("\nMétodo getAvailableUsersOnDemand\n"); // Se número da solicitação for diferente de zero, retorna os usuários disponíveis de uma solicitação já iniciada. if (this.numeroSolicitacao != 0) { this.availableUsersDto = service.getAvailableUsersOnDemand(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.numeroSolicitacao, this.numeroAtividade, this.sequenciaThread, limite, ultimoRegistro, textoBusca); // Senão retorna usuários disponíveis na abertura de uma solicitação. } else { this.availableUsersDto = service.getAvailableUsersStartOnDemand(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.codigoProcesso, this.numeroAtividade, this.sequenciaThread, limite, ultimoRegistro, textoBusca); } // Mostra resultado. if (this.availableUsersDto != null) { if (this.availableUsersDto.getUsers() != null && this.availableUsersDto.getUsers().size() > 0) { for (ColleagueDto col : this.availableUsersDto.getUsers()) { System.out.println("Colaborador: " + col.getColleagueId() + " - " + col.getColleagueName()); } } else { System.out.println("Nenhum destinatário encontrado para receber a tarefa da atividade " + this.numeroAtividade + " ou ela não existe ou foi finalizada!"); } } else { System.out.println("Nenhum destinatário encontrado para receber a tarefa da atividade " + this.numeroAtividade + " ou ela não existe ou foi finalizada!"); } } /** * Retorna o valor dos campos da ficha de uma solicitação. * * Método: getInstanceCardData. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Matrícula do colaborador; * - Número da solicitação. */ public void getInstanceCardData() throws Exception { System.out.println("\nMétodo getInstanceCardData\n"); // Retorna valor dos campos da ficha de uma solicitação workflow. this.stringArrayArray = service.getInstanceCardData(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador, this.numeroSolicitacao); // Mostra resultado. if (this.stringArrayArray != null) { for (int i = 0; i < this.stringArrayArray.getItem().size(); i++) { System.out.println("Valor do campo " + i + ": " + this.stringArrayArray.getItem().get(i).getItem()); } } } /** * Retorna os processos que o colaborador pode iniciar uma solicitação. * * Método: getAvailableProcess. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Matrícula do colaborador. */ public void getAvailableProcess() throws Exception { System.out.println("\nMétodo getAvailableProcess\n"); // Retorna os processos que o colaborador pode iniciar uma solicitação workflow. this.processDefinitionVersionDtoArray = service.getAvailableProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador); // Mostra resultado. if (this.processDefinitionVersionDtoArray.getItem().size() > 0) { for (ProcessDefinitionVersionDto processDefinitionVersionDto : this.processDefinitionVersionDtoArray.getItem()) { System.out.println("Processo: " + processDefinitionVersionDto.getProcessDescription()); } } else { System.out.println("Colaborador " + this.matriculaColaborador + " não pode iniciar nenhum processo!"); } } /** * Retorna os processos que o colaborador pode iniciar uma solicitação, paginados. * * Método: getAvailableProcess. * * Parâmetros: * - Login do colaborador; * - Senha do colaborador; * - Código da empresa; * - Matrícula do colaborador; * - Quantidade de registros a serem retornados; * - Última linha retornada. */ public void getAvailableProcessOnDemand() throws Exception { System.out.println("\nMétodo getAvailableProcessOnDemand\n"); // Retorna os processos que o colaborador pode iniciar uma solicitação workflow. this.processDefinitionVersionDtoArray = service.getAvailableProcessOnDemand(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.matriculaColaborador, this.limite, this.ultimoRegistro); // Mostra resultado. if (this.processDefinitionVersionDtoArray.getItem().size() > 0) { for (ProcessDefinitionVersionDto processDefinitionVersionDto : this.processDefinitionVersionDtoArray.getItem()) { System.out.println("Processo: " + processDefinitionVersionDto.getProcessDescription()); } } else { System.out.println("Colaborador " + this.matriculaColaborador + " não pode iniciar nenhum processo!"); } } public void updateDocument() throws Exception { System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXX\nMétodo updateDocument\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); this.loginColaborador = "adm"; this.senhaColaborador = "adm"; this.matriculaColaborador = "adm"; this.numeroDocumento = 24; this.descricaoDocumento = "ADM 2"; this.arquivo = "C:\\EDITADO.txt"; this.codigoEmpresa = 1; this.processInstanceId = 13; this.documentDto.setDocumentId(this.numeroDocumento); this.documentDto.setDocumentDescription(this.descricaoDocumento + "update ws"); this.documentDto.setPhisicalFile("EDITADO.txt"); this.documentDto.setDocumentType("7"); // Adiciona documento no array de documentos. this.documentDtoArray.getItem().add(this.documentDto); // Cria anexo do documento. this.attachment.setFileName(this.getArchive().getName()); this.attachment.setPrincipal(false); this.attachment.setFilecontent(this.arrayBytes); // Adiciona anexo no array de anexos. this.attachmentArray.getItem().add(this.attachment); // Atualiza documento. String result = service.updateWorkflowAttachment(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, processInstanceId, this.matriculaColaborador, documentDtoArray, attachmentArray); // Mostra resultado. System.out.println("RESULTADO "+result); } public void importProcess() throws Exception { System.out.println("\nMétodo importProcess\n"); this.loginColaborador = "adm"; this.senhaColaborador = "adm"; this.matriculaColaborador = "adm"; this.codigoEmpresa = 1; this.processId = "TESTE222"; //caminho onde encontra-se o arquivo xml a ser importado ou somente o nome do arq. que esta na pasta uploade do user this.arquivo = "C:\\ws\\arq\\dtswd3089.xml"; this.publicaViaFTP = false; if(this.publicaViaFTP){ /* Anexa um arquivo do diretório de upload. Para isso, o arquivo deve estar no diretório de upload do colaborador que vai publicar o documento. */ this.attachment.setFileName(this.arquivo); }else{ this.attachment.setFileName(this.getArchive().getName()); } this.attachment.setPrincipal(true); this.attachment.setFilecontent(this.arrayBytes); // Adiciona anexo no array de anexos. this.attachmentArray.getItem().add(this.attachment); this.newProcess = true; this.overWrite = true; String result = service.importProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.processId, this.attachmentArray, this.newProcess, this.overWrite, this.matriculaColaborador); System.out.println(result); } public void exportProcess() throws Exception { String result = service.exportProcess(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa, this.processId); System.out.println(result); } public ArrayList importAllProcess() throws Exception_Exception{ ProcessDefinitionDtoArray array = service.getAllProcessAvailableToImport(this.loginColaborador, this.senhaColaborador, this.codigoEmpresa); ArrayList ret = new ArrayList(); int size = array.getItem().size(); for(int i=0;i 0) { for (ProcessHistoryDto processHistoryDto : this.processHistoryDtoArray) { System.out.println("Solicitação: " + processHistoryDto.getProcessInstanceId()); } } else { System.out.println("Nenhum histórico encontrado"); } } }