Portal Publico iniciando varios processos no Fluig via webservice

Criei um Portal Público onde o cliente Agenda uma Montagem. Tem situações onde ele agendará duas ou mais montagens e pode escolher uma data ou várias datas.

Então eu separo essas montagens por datas e através do Webservice eu inicio os processos no Fluig. Porém, o Fluig só está iniciando o primeiro processo do laço, os outros não são iniciados.

Por exemplo, tenho um array com as Datas [29/08/2019, 30/08/2019, 31/08/2019].

Minha situação atual, ele só inicia o processo para a Data 29/08/2019, as outras não acontece nada.

Primeiro percebi que ele executava todo o laço das Datas antes de ter a resposta de inicio de processo do Widget. Depois tentei forçar um callback para o laço esperar a resposta do webservice antes de iterar para a próxima Data. Ele executa o laço todo e só depois que dá a resposta de processo iniciado, porém, só inicia da primeira data.

Gostaria de uma ajuda para tentar solucionar esse problema e iniciar o processo para todas as datas do laço.

// Laço das Datas
for(var t=0; t < temp.length; t++) {
   console.log("Processo sendo criado. Data: " + temp[t].dt_mont + ", Turno: " + temp[t].tr_mont + ", Itens: " + itens_para_montar);
   this.callbackTester(function() {
      that.criarProcessoMontagem(temp[t].dt_mont, temp[t].tr_mont, itens_para_montar);
   });
   console.log("[PROCESSO INICIADO VIA WIDGET COM SUCESSO] Hora " + new Date());
}

// Funçao de chamada do callback
callbackTester: function(callback) {
   callback();
}

// Funçao que monta os dados para enviar para o Webservice
criarProcessoMontagem: function(datamontagem, turnomontagem, itensmontagem) {
   var xml_processo = null;
   var that = this;
   // Template Envelope XML
   $.ajax({
      url : '/montagem_agendamento/resources/js/xmls/ECMWFEngineService_startProcess.xml',
      async : false,
      type : "get",
      datatype : "xml",
      success : function(xml) {
         xml_processo = $(xml);
      }
   });
   // Alterar os valores recuperados na variavel xml_processo
   xml_processo.find("companyId").text("1");
   xml_processo.find("comments").text('Processo iniciado via WIDGET pelo Portal Agendamento de Montagem de Moveis!');
   xml_processo.find("choosedState").text("6");
   xml_processo.find("colleagueIds").text("admin");
   xml_processo.find("userId").text("admin");
   xml_processo.find("completeTask").text(true);
   xml_processo.find("managerMode").text(false);
   // Preenchendo valores dos campos do formulario Montagem de Moveis 
   xml_processo.find("[name='cpfCliente']").text($("#cpf_" + this.instanceId).val());
   xml_processo.find("[name='idPedido']").text($("#pedido_" + this.instanceId).val());
   xml_processo.find("[name='nomeContato']").text($("#nomecliente_" + this.instanceId).val());
   xml_processo.find("[name='celularContato']").text($("#celularcliente_" + this.instanceId).val());
   xml_processo.find("[name='dataAgendamento']").text(datamontagem);

   var cardData = $("cardData", xml_processo);
   for(var p = 0; p < itensmontagem.length; p++) {
      var index = p + 1;
      this.addItemXML(cardData, 'idItem___' + index, itensmontagem[p].idItem); 
      this.addItemXML(cardData, 'descricaoItem___' + index, itensmontagem[p].descricaoItem);
      this.addItemXML(cardData, 'qtdeItem___' + index, itensmontagem[p].qtdeItem);
      this.addItemXML(cardData, 'valorItem___' + index, itensmontagem[p].valorItem);
      this.addItemXML(cardData, 'valorTotal___' + index, itensmontagem[p].valorTotal);
   }

   this.callbackTester(function() {
      that.enviarProcesso(xml_processo[0]);
   });
}

// Envia o Processo via webservice
enviarProcesso: function(processo) {
   console.log("Enviando Processo para Servidor!");
   // Usar o metodo WCMAPI.Create para chamar o webservice e Iniciar o Processo de Montagem de Moveis
   WCMAPI.Create({
      url : "/webdesk/ECMWorkflowEngineService?wsdl",
      contentType : "text/xml",
      dataType : "xml",
      data : processo,
      success : function(data) {
         console.log("Montagem de Moveis Agendada com Sucesso");
      }
   });
}
compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags widget portal publico startprocess callback wcmapi webservice ou faça a sua própria pergunta.