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.

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 rmxfluig integracao datasets datasets-customizado fluig-rm ou faça a sua própria pergunta.