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.