Versão atual:

Passar Parâmetro para Dataset Integração RM x Fluig

Olá,

Estou realizando uma integração entre o Fluig e o RM e nesta integração precisarei utilizar a view de consultasSQL (http://api.totvs.com.br/devrm/ConsultaSQL.html).

Esta view permite realizar uma consulta que já foi cadastrada no RM pelo dataset do Fluig. Porém, no meu caso em questão eu precisaria realizar esta consulta filtrando somente os registros com o RA que estiver em um processo.

Ex: na Solicitação 1050, é informado no formulário o RA 172000000 e somente quando eu tiver este valor deve ser feito a consulta. trazendo somente os dados do RA informado.

Pesquisei nas documentações e não encontrei nenhuma maneira de fazer isto. Alguem já passou por esta situação e saberia como me ajudar?

Dataset que faz a consulta no RM:

// Para executar o programa, seguir os passos abaixo:  
//     1) Cadastre no RM uma consulta SQL com o código ConsultaCliente e SQL exemplo:  
//         SELECT CODCOLIGADA, CODCFO, NOME FROM FCFO WHERE CODETD = :UF  
//     2) Inclua um serviço no Fluig com o nome WsConsultaSQL apontando para    
//       http://localhost:8051/wsConsultaSQL/MEX?wsdl (substituir localhost pelo IP e Porta do servidor RM)//.  
function createDataset(fields, constraints, sortFields)    
{    

    var NOME_SERVICO = "WsConsultaSQL"; // Nome do serviço criado no Fluig Studio  
    var CAMINHO_SERVICO = "com.totvs.WsConsultaSQL"; // Caminho do serviço  
    var dataset = DatasetBuilder.newDataset();  

    //campo do formulário iria no valor
    var RA = VALOR DO FORMULÁRIO AQUI;

    try {  
        // Obtem a instancia do serviço   
        var servico = ServiceManager.getServiceInstance(NOME_SERVICO);          
        // Inicializa o serviço  
        var instancia = servico.instantiate(CAMINHO_SERVICO);          
        // Obtem o WebService para consumo  
        var ws = instancia.getRMIwsConsultaSQL();            
        var serviceHelper = servico.getBean();  
        // Autenticação no serviço  
        var authService = serviceHelper.getBasicAuthenticatedClient(ws, "com.totvs.IwsConsultaSQL", 'totvs', 'totvs');  

        /** 
         * O método realizarConsultaSQL espera 4 parametros: 
         * 1º - Código da Consulta SQL cadastrada no sistema 
         * 2º - Código da Coligada 
         * 3º - Código do Sistema 
         * 4º - Parametros utilizados na consulta SQL. Ex.: "CODCOLIGADA=1;UF=MG" 
         * Retorno: Um XML de um DataTable do retorno da execução da consulta SQL 
         */  

        var result = authService.realizarConsultaSQL("SQL.FLUIG.001", 1, "S", "RA="+RA);  
            /*log.info("!!! INFO !!!");  
            log.info(result);  */
         if ((result != null) && (result.indexOf("===") != -1)) {  
            var msgErro = result.substring(0, result.indexOf("==="));  
            log.error("Erro: " + msgErro);  
            throw "Erro: " + msgErro;  
         }  

        // Insere o resultado em um objeto XML para melhor manipulação dos dados  
        var xmlResultados = new XML(result);    
        log.info(xmlResultados);  
        // Cria as colunas que serão retornadas pela consulta SQL e que serão utilizadas  
        dataset.addColumn("RA");  
        dataset.addColumn("IDPERLET");  
        dataset.addColumn("CODPERLET");
        dataset.addColumn("PERIODO");  
        dataset.addColumn("NOME");  
        dataset.addColumn("CURSO");  
        dataset.addColumn("CODSTATUS");  
        dataset.addColumn("CODFILIAL");  
        dataset.addColumn("CODCOLIGADA");  
        dataset.addColumn("CODTIPOMAT");  
        dataset.addColumn("DTMATRICULA");  
        dataset.addColumn("IDHABILITACAOFILIAL");  

        // Adiciona os dados no dataset  
        for(var i = 0; i < xmlResultados.Resultado.length(); i++){
            dataset.addRow(new Array(xmlResultados.Resultado.RA[i].toString(),  
                                        xmlResultados.Resultado.IDPERLET[i].toString(),  
                                        xmlResultados.Resultado.CODPERLET[i].toString(),
                                        xmlResultados.Resultado.PERIODO[i].toString(),  
                                        xmlResultados.Resultado.NOME[i].toString(),  
                                        xmlResultados.Resultado.CURSO[i].toString() ,
                                        xmlResultados.Resultado.CODSTATUS[i].toString(),  
                                        xmlResultados.Resultado.CODFILIAL[i].toString(),  
                                        xmlResultados.Resultado.CODCOLIGADA[i].toString() ,
                                        xmlResultados.Resultado.CODTIPOMAT[i].toString(),  
                                        xmlResultados.Resultado.DTMATRICULA[i].toString(),  
                                        xmlResultados.Resultado.IDHABILITACAOFILIAL[i].toString() 
                                    ));       
        }  

    } catch (e) {  
         if (e == null)  
             e = "Erro desconhecido; verifique o log do AppServer";  
         var mensagemErro = "Erro na comunicação com o app (linha: " + e.lineNumber + "): " + e;  
         log.error(mensagemErro);  
         log.info(mensagemErro);  
         dataset.addColumn("ERROR");  
         dataset.addColumn("MESSAGE_ERROR");  
         dataset.addRow(new Array(-1, mensagemErro));  
    }     

    return dataset;  
}

Se eu passar o valor fixo, ele funciona da maneira que preciso. Porém preciso passar dinamicamente conforme a solicitação.

Versão (1):

Ver a versão formatada

Passar Parâmetro para Dataset Integração RM x Fluig

Comentário

new question