Olá pessoal, existe a possibilidade de consultar um DATASET customizado ou interno do Fluig por um sistema externo via API REST ou Webservice SOAP?
Bom dia Romulo,
Tem sim, você vai precisar consumir a API “/api/public/ecm/dataset/datasets”.
Mas para consumir você vai precisar de uma autenticação oAuth, você pode pelo painel de controle gerar o usuário de autenticação e gerar a “key” e o “secret”.
Exemplo de consumo:
obs.: Precisa da biblioteca “cryptojs”.
//FUNÇÃO DE CHAMADA DE DATASET GENÊRICA
function getDatasetExterno(dataset, filtros, cb) {
var retorno;
var oauth = OAuth({
consumer: {
'key': '{consumerKey}', // nome do aplicativo que você criou
'secret': '{consumerSecret}' // nome do aplicativo que você criou
},
signature_method: 'HMAC-SHA1',
hash_function(base_string, key) {
return CryptoJS.HmacSHA1(base_string, key).toString(CryptoJS.enc.Base64);
},
nonce_length: 6
});
var request_data = {
url: WCMAPI.serverURL + '/api/public/ecm/dataset/datasets',
method: 'POST'
};
//type of the constraint(1 - MUST, 2 - SHOULD, 3 - MUST_NOT)
var data = {
"name": dataset,
"fields": [],
"constraints": filtros,
"order": []
}
var token = {
'key': '{sua key}',
'secret': '{seu secret}'
}
$.ajax({
url: request_data.url,
contentType: 'application/json',
crossDomain: true,
async: false,
type: request_data.method,
data: JSON.stringify(data),
headers: oauth.toHeader(oauth.authorize(request_data, token))
}).fail(function(e, f) {
console.log("deu ruim!");
}).success(function(f) {
if (f.content.values.length > 0) {
console.log(f.content.values);
cb(f.content);
} else {
console.log("Deu ruim tambem!");
}
});
};
//CONSUMO DA FUNÇÃO GENERICA
var filtro = [{
_field: "",
_initialValue: "",
_finalValue:"",
_type: 1, //type of the constraint(1 - MUST, 2 - SHOULD, 3 - MUST_NOT)
_likeSearch: false
}, {
_field: "",
_initialValue: "",
_finalValue: "",
_type: 1, //type of the constraint(1 - MUST, 2 - SHOULD, 3 - MUST_NOT)
_likeSearch: false
}];
getDatasetExterno("colleague", filtro, function(data){
console.log("EXECUTOU CALLBACK",data);
});
Excelente Willian, vou tentar dessa forma.
Obs: Gostei do console “deu ruim” kkkk
Boa tarde eu postei aqui fórum os arquivos e um passo a passo vou achar o link e te falo
Bom dia Daniel,
Se puder compartilhar o link lhe agradeço
Opa, isso funcionou pra você pessoal?
Eu não precisei utilizar porque fiz a consulta no Datasul com Progress.
Ah entendi, estou com a mesma necessidade que tu tinhas nesse tópico. Mas to tentando fazer funcionar e ta caindo no “deu ruim!” kkk @Willian_Laynes consegue salvar nós mestre?
Você já criou as chaves (token, app e etc) no fluig?
Opa, agora tá funcionando. Tive que mudar alguns parâmetros, mas funcionou!!
Desculpa, vi só agora…não estou conseguindo acompanhar muito essa semana. Que bom que deu certo.
Pessoal,
Alguém tem o arquivo CryptoJS.
Obrigado,
Romulo, boa tarde!
Você poderia mandar um exemplo de como consumir no progress um dataset do fluig por favor.
Willian,
Bom dia
Dúvida, por ser uma página publica, como fica a segurança ? Pois as informações pra acessar o OAuth fica tudo explicito no .js
Bom dia,
Não fica explicito no js no navegador porque o Dataset no Fluig roda no servidor. É um javascript server side.
Se usar direto na página pública vai expor as credenciais. Pior que já vi muitos indicarem dessa forma meio que sem se preocupar com as credenciais vazadas.
Outra recomendação é você ter outro serviço externo que receba a solicitação da sua página pública e esse serviço externo faça a comunicação com o Dataset do Fluig por back-end (servindo como um proxy entre os sistemas). E então você faz algum tipo de validação da origem da requisição e também algum controle pra só consultar datasets específicos né.
Esse sistema externo pode até ser uma widget, basta fazer ela ter uma API, em Java por exemplo, e então sua página pública consulta essa API. Inclusive é como a TOTVS recomenda.
É isso que estou vendo, vários exemplos que os dados estão expostos. Achei esse git, porém estou tendo algumas duvidas nele GitHub - marcommas/fluig
+1 para middleware - já implementei via middleware (Nest.JS no caso) para garantir a segurança - incluindo aderência à compliance de cliente.
Estou estudando as opções de fazer API Java com as Widgets pra ter isso integrado ao Fluig.
Mas é aquele estudo quase parando devido à falta de tempo.
Bruno a widget que usamos no pluign do fluig e uma middleware em java perfeita para isso.
Ela e bem simples e facil de usar ate para quem não manja de java.
Manda o link para ele