Eu tenho um servidor em PHP que realizo integrações via JSON em scripts do formulário/processo (lado do servidor)
Faço assim:
// verificar orçamento, envia os dados para o PHP 14 -> primeira vez, 36 -> segunda vez
if ( (sequenceId == 14) || (sequenceId == 36) ){
log.warn("Iniciando a verificação de orçamento. ");
var objeto = {};
objeto.solicitacao = "" + getValue("WKNumProces");
var dados = JSON.stringify(objeto);
log.info("######################### ENVIO JSON ##################################");
log.info("######################### ENVIO JSON => ENVIO ##################################");
log.warn("ENVIADO AO REST +====> " + dados );
log.info("######################### ENVIO JSON => ENVIO ##################################");
/**
*
* Busca e realiza os calculos dos orçamentos no portal PHP
*
*/
var urlAPI = "http://MEU-SERVIDOR-PHP/DIRETORIO/fluig/services/rest/requisicao_compra/verifica_orcamento/";
var url = new java.net.URL(urlAPI);
var connection = url.openConnection();
// POST para enviar os dados
connection.setRequestMethod("POST");
// Tipo de dado a ser enviado
connection.setRequestProperty("Accept", "text/json");
// Send post request
connection.setDoOutput(true);
//realiza o envio do json para o servidor
var wr = new java.io.DataOutputStream(connection.getOutputStream());
wr.writeBytes(dados);
wr.flush();
wr.close();
// caso dê erro na requisição, exibirá mensagem ao usuário.
if (connection.getResponseCode() != 200) {
throw connection.getResponseCode();
}
// trata o retorno do php
var br = new java.io.BufferedReader(new java.io.InputStreamReader(connection.getInputStream()));
var result = "";
var orcamentoJsonResponse = "";
while ((output = br.readLine()) != null) {
orcamentoJsonResponse += output;
}
// Inicia a construção da tabela pai x filho para solicitar o aporte de orçamento
var childData = new java.util.HashMap();
log.info("######################### TRATATIVA JSON ##################################");
log.info("######################### TRATATIVA JSON => RETORNO ##################################");
log.warn("RETORNO DO REST +====> " + orcamentoJsonResponse );
log.info("######################### TRATATIVA JSON => RETORNO ##################################");
log.info(JSON.parse(orcamentoJsonResponse));
var orcamentosArray = JSON.parse(orcamentoJsonResponse);
if ( orcamentosArray.length > 0 ){
for ( var i = 0; i < orcamentosArray.length; i++ ){
// verifica flag de orcamento disponível, se for diferente e true, cria uma nova linha para estes itens.
if ( orcamentosArray[i].possuiOrcamento != "true" ) {
var msg = " Centro de custo ==> " + orcamentosArray[i].centroCusto;
msg += " Conta Contábil ==> " + orcamentosArray[i].contaContabil;
msg += " Data de referencia ==> " + orcamentosArray[i].dataReferencia;
msg += " Valor Disponivel ==> " + orcamentosArray[i].valorDisponivel;
log.info(msg);
// centro de custo do calculo
childData.put("aprCentroCusto", orcamentosArray[i].centroCusto );
// conta contabil do calculo
childData.put("aprContaContabil", orcamentosArray[i].contaContabil );
// Valor total para este centro de custo / conta contabil para esta requisicao
childData.put("valorTotalCC", orcamentosArray[i].valorNecessario );
childData.put("valorTotalCCRaw", orcamentosArray[i].valorNecessario );
// Orçamento disponível para este centro de custo / conta contabil
childData.put("orcTotalDisponivel", orcamentosArray[i].valorDisponivel );
childData.put("orcTotalDisponivelRaw", orcamentosArray[i].valorDisponivel );
// valor que será solicitado aporte
childData.put("valorAporte", orcamentosArray[i].valorDiferenca*-1 );
childData.put("valorAporteRaw", orcamentosArray[i].valorDiferenca*-1 );
childData.put("obsAporte", msg );
hAPI.addCardChild("tableAporte", childData);
}
}
hAPI.setCardValue("rcPossuiOrcamento", "Não");
}else{
hAPI.setCardValue("rcPossuiOrcamento", "Sim");
}
log.info("######################### TRATATIVA JSON ##################################");
log.info( 'conectou ====> ' + orcamentoJsonResponse );
log.info("##################### dados do form ######################");
//log.info(JSON.stringify(dadosForm));
log.info("##################### dados do form ######################");
}
uma solução encontrada foi declarar uma function beforeSendValidate = function(){} no javascript do formulário, que roda antes do validateForm
— Lucas Martins Romão 05 de Jul de 2018O validateForm ou qualquer outro evento de formulário executado no lado do server não tem suporte a xmlhttprequest. Nesses eventos creio que uma opção seria cadastrar um serviço rest no painel de controle e chamar ele via fluigAPI.getAuthorizeClientService(). Conforme a documentação http://tdn.totvs.com/x/0Xo-Dg
— Diogo Boegershausen 05 de Jul de 2018@Diogo Boergershausen, eu utilizei o servico no dataset, mas retorna o erro de toJSON como não definido
— Arthur 16 de Aug de 2018