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");
}
});
}