Olá pessoal, estou realizando integração via REST com o Fluig e me deparei na necessidade de realizar a criação de alguns datasets com requisições GET/POST passando parametros no Headers, alguem já precisou fazer o mesmo e conseguiu se sim poderia comentar ou demonstrar o código?
Obrigado a todos!
Eu tenho aqui um dataset que faz um GET em um serviço que cadastrei nos serviços REST do fluig.
Seto a url do serviço no fluig e identifico ela com o serviceCode, mostrado abaixo.
O endpoint funciona como path param, utilizo para fazer login no serviço
function defineStructure() {
addColumn("nom_sims");
addColumn("nom_abreviado");
addColumn("nom_cliente");
setKey(["nom_sims"]);
addIndex([ "nom_sims", "nom_abreviado", "nom_cliente"]);
}
function onSync(lastSyncDate) {
var dataset = DatasetBuilder.newDataset();
try{
var clientService = fluigAPI.getAuthorizeClientService();
var data = {
companyId : getValue("WKCompany") + '',
serviceCode : 'getCliente',
endpoint : 'usr=super&pwd=trs@super',
method : 'get',
timeoutService: '100'
}
var vo = clientService.invoke(JSON.stringify(data));
log.info(vo.getResult())
if(vo.getResult()== null || vo.getResult().isEmpty()){
throw new Exception("Retorno está vazio");
}else{
var y = vo.getResult().split("\n");
for(var i=1;i<y.length;i++){
var x = y[i].substr(4).split(" ");
x = x.filter(function(entry) { return entry.trim() != ''; });
dataset.addOrUpdateRow([ x[1], x[0], x[2]]);
}
}
} catch(err) {
log.info(err);
}
return dataset;
}
Pedro, na versão 1.6.3 do Fluig através do AuthorizeClient (fluigAPI.getAuthorizeClientService()), ainda não é possível adicionar headers no client, isso será possível a partir da próxima versão a ser lançada (1.6.4).
Na 1.6.3, você terá que chamar o HttpClient direto no seu script do Dataset. Algo assim:
function createDataset(fields, constraints, sortFields) {
var request = new org.apache.http.client.methods.HttpGet("http://187.94.56.129:8051/rmsrestdataserver/rest/RhuEntidadesData");
request.addHeader("Authorization", "Basic bWVzdHJlOmludGVncmFjYW8=");
var client = org.apache.http.impl.client.HttpClientBuilder.create().build();
var response = client.execute(request);
var responseContent = org.apache.http.util.EntityUtils.toString(response.getEntity());
return buildDataset(responseContent);
}
function buildDataset(content) {
var dataset = DatasetBuilder.newDataset();
var json = JSON.parse(content).data;
var columns = new Array();
for (var j = 0; j < json.length; j++) {
var keys = Object.keys(json[j]);
for (var k = 0; k < keys.length; k++) {
if (columns.indexOf(keys[k]) == -1) {
columns.push(keys[k]);
dataset.addColumn(keys[k]);
}
}
}
for (var j = 0; j < json.length; j++) {
var row = new Array();
for (var i = 0; i < columns.length; i++) {
var value = json[j][columns[i]];
if (typeof value == 'object') {
row.push(JSON.stringify(value));
} else {
row.push(value);
}
}
dataset.addRow(row);
}
return dataset
}
Note que usei o header Authorization pra fazer a autenticação no REST, mas serve para qualquer header que você queira adicionar.