function afterTaskComplete(colleagueId,nextSequenceId,userList) {
	
	
	var nrAtividade  = getValue("WKNumState");
	var nrSolic      = getValue("WKNumProces");
	
	log.info("=========================");
	log.info("evento: afterTaskComplete");
	log.info("=========================");
	log.info("WKDef: " + getValue("WKDef"));
	log.info("colleagueId: "    + colleagueId);
	log.info("nextSequenceId: " + nextSequenceId.toString());
	log.info("userList: "       + userList);
	log.info("nrAtividade: "    + nrAtividade.toString());
	log.info("nrSolic: "        + nrSolic);

	try{
		loading.setMessage("Completando atividade...");
	} catch(e) {
		log.info("========= Erro ao executar LOADING ===========");
	}
	
	//listaAux = ['4','5','14','19','23','27','33','47','52','83','92']; 

	//===========================================================================
	// Guardar o login do usuario, data e hora que finalizou a atividade
	//===========================================================================
	if(nrAtividade == 4)  { fnGuardaUsuario(nrAtividade); }
	if(nrAtividade == 5)  { fnGuardaUsuario(nrAtividade); }
	if(nrAtividade == 14) { fnGuardaUsuario(nrAtividade); }
	if(nrAtividade == 19) { fnGuardaUsuario(nrAtividade); }
	if(nrAtividade == 23) { fnGuardaUsuario(nrAtividade); }
	if(nrAtividade == 27) { fnGuardaUsuario(nrAtividade); }
	if(nrAtividade == 33) { fnGuardaUsuario(nrAtividade); }
	if(nrAtividade == 47) { fnGuardaUsuario(nrAtividade); }
	if(nrAtividade == 52) { fnGuardaUsuario(nrAtividade); }
	if(nrAtividade == 83) { fnGuardaUsuario(nrAtividade); }
	if(nrAtividade == 92) { fnGuardaUsuario(nrAtividade); }

	//=====================================================================================
	// Calcular os dias da atividade e guardar nos campos ocultos - exceto inicio e Em Nome
	//=====================================================================================
	if(nrAtividade == 5)   { calculaDiasAtividade(nrAtividade); }
	if(nrAtividade == 14)  { calculaDiasAtividade(nrAtividade); }
	if(nrAtividade == 19)  { calculaDiasAtividade(nrAtividade); }
	if(nrAtividade == 23)  { calculaDiasAtividade(nrAtividade); }
	if(nrAtividade == 27)  { calculaDiasAtividade(nrAtividade); }
	if(nrAtividade == 33)  { calculaDiasAtividade(nrAtividade); }
	if(nrAtividade == 47)  { calculaDiasAtividade(nrAtividade); }
	if(nrAtividade == 52)  { calculaDiasAtividade(nrAtividade); }
	if(nrAtividade == 83)  { calculaDiasAtividade(nrAtividade); }

	if (nextSequenceId == 78) { //Após o planejamento
		var index = parseInt(hAPI.getCardValue('indicetabAtividades'));	
		log.info("=== WF-0035 afterTaskComplete index: " + index);
		
		for (var i = 1; i <= index; i++) {
			
			log.info("=== WF-0035 afterTaskComplete i: " + i);
			
			var statusEnvio      = hAPI.getCardValue("statusEnvio___"+i);
			var chkEnviarValue   = hAPI.getCardValue("chkEnviarValue___"+i);
			var chkCancelarValue = hAPI.getCardValue("chkCancelarValue___"+i);
			
			if (chkEnviarValue == "S" && statusEnvio == 'N') { 
			
				if (hAPI.getCardValue("cmbTarefa___"+i) ==  1 ||
					hAPI.getCardValue("cmbTarefa___"+i) ==  2 ||
					hAPI.getCardValue("cmbTarefa___"+i) ==  3 ||
					hAPI.getCardValue("cmbTarefa___"+i) ==  4 ||
					hAPI.getCardValue("cmbTarefa___"+i) ==  5 ||
					hAPI.getCardValue("cmbTarefa___"+i) ==  6 ||
					hAPI.getCardValue("cmbTarefa___"+i) ==  7 ||
					hAPI.getCardValue("cmbTarefa___"+i) ==  8 ||
					hAPI.getCardValue("cmbTarefa___"+i) == 10 ||
					hAPI.getCardValue("cmbTarefa___"+i) == 11 ||
					hAPI.getCardValue("cmbTarefa___"+i) == 12 ||
					hAPI.getCardValue("cmbTarefa___"+i) == 13 ||
					hAPI.getCardValue("cmbTarefa___"+i) == 14 ||
					hAPI.getCardValue("cmbTarefa___"+i) == 16 ||
					hAPI.getCardValue("cmbTarefa___"+i) == 17 ||
					hAPI.getCardValue("cmbTarefa___"+i) == 18) {
					var processId    = "WF-0036";
				} else if (hAPI.getCardValue("cmbTarefa___"+i) ==  9) {
					var processId    = "WF-0037";
				} else if (hAPI.getCardValue("cmbTarefa___"+i) ==  15) {
					var processId    = "WF-0038";
				}
			
				//processId = hAPI.getCardValue("cmbTarefa___"+i);

				var completeTask = true;
				var choosedState = 0;
				var managerMode  = false;
				var empresa		 = getValue("WKCompany");
				var comentario   = "Criado automaticamente pela solicitação: " + nrSolic;
				var colleagues   = new java.util.ArrayList();
				var cardData     = new java.util.HashMap();    
				var retornoSol   = new java.util.HashMap();
			    var dtSolic      = hAPI.getCardValue("dtAberturaSolic");
				var userId       = hAPI.getCardValue("idResponsavelValue___"+i);
				
			    colleagues.add(userId);
				
			    cardData.put("idTarefa", 					hAPI.getCardValue("cmbTarefa___"+i));
			    cardData.put("loginResponsavel", 			hAPI.getCardValue("idResponsavelValue___"+i));
				cardData.put("loginSolicitante", 			hAPI.getCardValue("loginEmNome"));
				cardData.put("txtNumSolicitacaoPai", 		hAPI.getCardValue("nrSolic"));
			    cardData.put("nmUserAberturaSolic", 		hAPI.getCardValue("nmUserAberturaSolic"));
			    cardData.put("loginUserAberturaSolic", 		hAPI.getCardValue("loginUserAberturaSolic"));
			    cardData.put("loginUserAberturaSolic", 		hAPI.getCardValue("loginUserAberturaSolic"));
				cardData.put("txtEmNome", 					hAPI.getCardValue("txtEmNome"));
				cardData.put("loginEmNome", 				hAPI.getCardValue("loginEmNome"));
				cardData.put("txtEmpUserAberturaSolic", 	hAPI.getCardValue("txtEmpUserAberturaSolic"));
				cardData.put("codEmpUserAberturaSolic", 	hAPI.getCardValue("codEmpUserAberturaSolic"));
				cardData.put("nmEmpUserAberturaSolic", 		hAPI.getCardValue("nmEmpUserAberturaSolic"));
				cardData.put("txtEstUserAberturaSolic", 	hAPI.getCardValue("txtEstUserAberturaSolic"));
				cardData.put("codEstUserAberturaSolic", 	hAPI.getCardValue("codEstUserAberturaSolic"));
				cardData.put("nmEstUserAberturaSolic", 		hAPI.getCardValue("nmEstUserAberturaSolic"));
				cardData.put("txtCustoUserAberturaSolic", 	hAPI.getCardValue("txtCustoUserAberturaSolic"));
				cardData.put("codCustoUserAberturaSolic", 	hAPI.getCardValue("codCustoUserAberturaSolic"));
				cardData.put("nmCustoUserAberturaSolic", 	hAPI.getCardValue("nmCustoUserAberturaSolic"));
				cardData.put("ramalUserAberturaSolic", 		hAPI.getCardValue("ramalUserAberturaSolic"));
				cardData.put("foneUserAberturaSolic", 		hAPI.getCardValue("foneUserAberturaSolic"));
				cardData.put("nmChefeUserAberturaSolic", 	hAPI.getCardValue("nmChefeUserAberturaSolic"));
				cardData.put("loginChefeUserAberturaSolic", hAPI.getCardValue("loginChefeUserAberturaSolic"));
				cardData.put("situacaoUserAberturaSolic", 	hAPI.getCardValue("situacaoUserAberturaSolic"));
				cardData.put("tipoUserAberturaSolic", 		hAPI.getCardValue("tipoUserAberturaSolic"));
				cardData.put("txtEmpUserEmNome", 			hAPI.getCardValue("txtEmpUserEmNome"));
				cardData.put("codEmpUserEmNome", 			hAPI.getCardValue("codEmpUserEmNome"));
				cardData.put("nmEmpUserEmNome", 			hAPI.getCardValue("nmEmpUserEmNome"));
				cardData.put("txtEstUserEmNome", 			hAPI.getCardValue("txtEstUserEmNome"));
				cardData.put("codEstUserEmNome", 			hAPI.getCardValue("codEstUserEmNome"));
				cardData.put("nmEstUserEmNome", 			hAPI.getCardValue("nmEstUserEmNome"));
				cardData.put("txtCustoUserEmNome", 			hAPI.getCardValue("txtCustoUserEmNome"));
				cardData.put("codCustoUserEmNome", 			hAPI.getCardValue("codCustoUserEmNome"));
				cardData.put("nmCustoUserEmNome", 			hAPI.getCardValue("nmCustoUserEmNome"));
				cardData.put("ramalUserEmNome", 			hAPI.getCardValue("ramalUserEmNome"));
				cardData.put("foneUserEmNome", 				hAPI.getCardValue("foneUserEmNome"));
				cardData.put("nmChefeUserEmNome", 			hAPI.getCardValue("nmChefeUserEmNome"));
				cardData.put("loginChefeUserEmNome", 		hAPI.getCardValue("loginChefeUserEmNome"));
				cardData.put("situacaoUserEmNome", 			hAPI.getCardValue("situacaoUserEmNome"));
				cardData.put("avaliacaoPreliminar", 		hAPI.getCardValue("avaliacaoPreliminar")); 		//h_avaliacaoPreliminar
				cardData.put("idDeptoOrigemValue", 			hAPI.getCardValue("idDeptoOrigemValue"));
				cardData.put("idDeptoOrigemValue", 			hAPI.getCardValue("idDeptoOrigemValue"));
				cardData.put("idDeptoOrigem", 				hAPI.getCardValue("idDeptoOrigem"));
				cardData.put("txtDescrSolicit", 			hAPI.getCardValue("txtDescrSolicit"));
				cardData.put("txtDadosTecnicos", 			hAPI.getCardValue("txtDadosTecnicos"));
				cardData.put("legislacaoEnvolvida", 		hAPI.getCardValue("legislacaoEnvolvida")); 		//h_legislacaoEnvolvida
				cardData.put("txtlegislacaoEnvolvida", 		hAPI.getCardValue("txtlegislacaoEnvolvida"));
				cardData.put("existemPeculiariedades", 		hAPI.getCardValue("existemPeculiariedades")); 	//h_existemPeculiariedades
				cardData.put("txtPeculiariedades", 			hAPI.getCardValue("txtPeculiariedades"));
				cardData.put("existeSimilar", 				hAPI.getCardValue("existeSimilar"));			//h_existeSimilar
				cardData.put("txtProdutoSimilar", 			hAPI.getCardValue("txtProdutoSimilar"));
				cardData.put("chkMercadoConsumidorInt", 	hAPI.getCardValue("chkMercadoConsumidorInt"));
				cardData.put("chkMercadoConsumidorExt", 	hAPI.getCardValue("chkMercadoConsumidorExt"));
				cardData.put("txtMercadoConsumidor", 		hAPI.getCardValue("txtMercadoConsumidor"));
				cardData.put("expectativaVenda", 			hAPI.getCardValue("expectativaVenda"));			//h_expectativaVenda
				cardData.put("txtexpectativaVendaInt", 		hAPI.getCardValue("txtexpectativaVendaInt"));
				cardData.put("UnExpectativaVendaInt", 		hAPI.getCardValue("UnExpectativaVendaInt"));
				cardData.put("txtexpectativaVendaExt", 		hAPI.getCardValue("txtexpectativaVendaExt"));
				cardData.put("UnExpectativaVendaExt", 		hAPI.getCardValue("UnExpectativaVendaExt"));
				cardData.put("txtExpectativaVenda",		 	hAPI.getCardValue("txtExpectativaVenda"));
				cardData.put("precoDesejado", 				hAPI.getCardValue("precoDesejado"));			//h_precoDesejado
				cardData.put("txtPrecoDesejadoInt", 		hAPI.getCardValue("txtPrecoDesejadoInt"));
				cardData.put("UnPrecoDesejadoInt", 			hAPI.getCardValue("UnPrecoDesejadoInt"));
				cardData.put("txtPrecoDesejadoExt", 		hAPI.getCardValue("txtPrecoDesejadoExt"));
				cardData.put("UnPrecoDesejadoExt",		 	hAPI.getCardValue("UnPrecoDesejadoExt"));
				cardData.put("txtPrecoDesejado", 			hAPI.getCardValue("txtPrecoDesejado"));
				cardData.put("txtInformAdd", 				hAPI.getCardValue("txtInformAdd"));
				cardData.put("txtJustificativa", 			hAPI.getCardValue("txtJustificativa"));
				// cardData.put("txtDescrSolicitacao", 		hAPI.getCardValue("txtDescrSolicit"));
				cardData.put("txtDescrSolicitacao", 		hAPI.getCardValue("txtDescricaoSol___"+i));

				cardData.put("loginPlanejador", 			hAPI.getCardValue("loginRespAtiv_47"));

				cardData.put("h_prazoDataAtiv_5",           hAPI.getCardValue('dtPrazo___'+i));
				
				retornoSol = hAPI.startProcess(processId, choosedState, colleagues, comentario, completeTask, cardData, managerMode);
		
				var nrSolicitacaoFilha = retornoSol.get("iProcess").toString()
				
				hAPI.setCardValue("nrSolicitacaoFilha___"+i, nrSolicitacaoFilha);
				hAPI.setCardValue("txtSituacao___"+i, 'A Solicitação ' + hAPI.getCardValue("nrSolicitacaoFilha___"+i) + ' esta em andamento');
				hAPI.setCardValue("statusEnvio___"+i, "E");
				
				var prazo = hAPI.getCardValue('dtPrazo___'+i);
				log.info("=== WF-0035 afterTaskComplete prazo: " + prazo);
				
		        if (prazo != undefined && prazo != '') {

		        	/* Extrai os dados da data do formulário para um array, para posteriormente transformar em data do Javascript */
		            var arrayPrazoConclusao = prazo.split("/");
		            var dia = arrayPrazoConclusao[0]; // Posição 0 do array é o dia
		            var mes = arrayPrazoConclusao[1] - 1; // Posição 1 do array é o mês (Subtraímos 1 porque na data do Javascript o mês vai de 0 a 11)
		            var ano = arrayPrazoConclusao[2]; // Posição 2 do array é o ano
		            
		            log.info("=== WF-0035 afterTaskComplete dia: " + dia);
		            log.info("=== WF-0035 afterTaskComplete mes: " + mes);
		            log.info("=== WF-0035 afterTaskComplete ano: " + ano);
		            
		            var horaDoPrazo = (24*60*60) - 1; /* A hora é em milisegundos, e esse cálculo tem resultado de 23:59:59, ou seja, 
		            o prazo de conclusão vai ser até o último segundo do dia informado no formulário */
		             
		            log.info("=== WF-0035 afterTaskComplete horaDoPrazo: " + horaDoPrazo);

		            // Cria a data no Javascript
		            var dataDoPrazo = new Date();
		            dataDoPrazo.setDate(dia);
		            dataDoPrazo.setMonth(mes);
		            dataDoPrazo.setFullYear(ano);

		            log.info("=== WF-0035 afterTaskComplete dataDoPrazo: " + dataDoPrazo);

		            // Altera o prazo de conclusão
		            hAPI.setDueDate(nrSolicitacaoFilha, 0, userId, dataDoPrazo, horaDoPrazo);
		            
		            log.info("=== WF-0035 afterTaskComplete setDueDate: Feito");
		        }
			}
			
			if (chkCancelarValue == "S" && statusEnvio == 'E') { 
				var nrSolicitacaoFilha = hAPI.getCardValue("nrSolicitacaoFilha___"+i);
				var replacedId = colleagueId;
				var respostaCancel;
				
				var id = new com.fluig.sdk.api.workflow.CancelInstanceVO();
				id.setProcessInstanceId(nrSolicitacaoFilha);
				id.setCancelText("Cancelado");
				var resultado = fluigAPI.getWorkflowService().cancelInstance(id);
				var mensagemResultado = resultado.getMessage();
				
				if (mensagemResultado == 'SUCCESS') {
					hAPI.setCardValue("txtSituacao___"+i, 'A Solicitação ' + hAPI.getCardValue("nrSolicitacaoFilha___"+i) + ' foi Cancelada - TESTE');
					hAPI.setCardValue("statusEnvio___"+i, 'C');
				}

				/*
				$.ajax({ 
					async : false,
			        type : "POST",
			        contentType: "application/json",
					url: '/api/public/2.0/workflows/cancelInstance',
			        data: JSON.stringify({
			            "processInstanceId": nrSolicitacaoFilha,
			            "cancelText": "Cancelado",
			            "replacedId": replacedId
			        }),
			        error: function(response) {
			        	respostaCancel = response;
			        	info.log("Falha ao cancelar"+response.message.message);
			        },
					success: function (response) { 
			        	respostaCancel = response;
			        	info.log("Cancelador com sucesso" + response.message.message);
					} 
				});
				*/
				/*
				WCMAPI.Create({
					type : "POST",
					url: '/api/public/2.0/workflows/cancelInstance',
					contentType: "application/json",
					dataType: "json",
				    data: JSON.stringify({
				    	"processInstanceId": nrSolicitacaoFilha,
				        "cancelText": "Cancelado",
				        "replacedId": replacedId
				    }),
				    error: function(response) {
				    	respostaCancel = response;
				    	info.log("Falha ao cancelar"+response.message.message);
				    },
					success: function (response) { 
				    	respostaCancel = response;
				    	info.log("Cancelador com sucesso" + response.message.message);
					} 
				});
				*/
			}
		}
		
		if (index > 0){
			log.info("=== WF-0035 afterTaskComplete Entrei: ");
			hAPI.setCardValue('travaConclOriginal', 'S');  
		}
	}

	
	function fnGuardaUsuario(nrAtividade) {
		//===========================================================================
		// Guardar o login do usuario, data e hora que finalizou a atividade
		//===========================================================================
		aux = fnBuscarDataHora('data'); //retornar dd/mm/aaaa
		aux = aux.split('/');
		aux = aux[2] + "-" + aux[1] + "-" + aux[0] + " " + fnBuscarDataHora('hora');
		hAPI.setCardValue('vUserSpan_' + nrAtividade.toString(), colleagueId);  
		hAPI.setCardValue('vDateSpan_' + nrAtividade.toString(), aux);  //guarda no formato aaaa-mm-dd:hh:mm		
	}

	loading.setMessage("");
	
}