Às vezes, surge a tarefa de obter um relatório no local de trabalho do cliente sem o uso de uma ferramenta de comunicação interativa na forma de um navegador.
Na época do Oracle Reports, um problema semelhante era resolvido com o uso do utilitário rwclient. O que pode ser aplicado a isso no Oracle BIEE? - usamos a API REST fornecida para Oracle BI Publisher :
- Criamos um relatório, que fica disponível no diretório: /~scott.tiger/Example;
- Solicitando por meio do utilitário curl , obtemos a resposta do servidor, salvando-a em um arquivo:
curl -X POST -u login:password -o report_out.xlsx -H "Content-Type:multipart/form-data" -v -F 'ReportRequest={"attributeFormat":"xlsx","attributeTemplate":"Publisher Template"};type=application/json' http://hostname:port/xmlpserver/services/rest/v1/reports/~scott.tiger%2FExample/run
- Como o conteúdo da resposta no documento report_out.xlsx ainda não é Excel, mas um documento com várias partes (consulte RFC 7578 ), processamos o documento, eliminando detalhes desnecessários:
perl -i -pe 'BEGIN{undef $/;} s/.*\r\n\r\n(.*?)\r\n--Boundary[^\n]*?--\r\n/$1/sm' report_out.xlsx
- Garantimos que o relatório funciona abrindo-o através do Excel na máquina cliente.
- Nós colamos os desenvolvimentos através do tubo e obtemos uma solução pronta:
curl -X POST -u login:password -H "Content-Type:multipart/form-data" -v -F 'ReportRequest={"attributeFormat":"xlsx","attributeTemplate":"Publisher Template"};type=application/json' http://nameserv:port/xmlpserver/services/rest/v1/reports/~scott.tiger%2FExample/run | perl -pe 'BEGIN{undef $/;} s/.*\r\n\r\n(.*?)\r\n--Boundary[^\n]*?--\r\n/$1/sm' > report_output.xlsx