有时会出现这样的任务:在客户的工作场所获取报告,而无需使用浏览器形式的交互交互方式。
在Oracle Reports时代,通过使用rwclient实用程序解决了类似的任务。Oracle BIEE可以对此应用什么?-我们将提供的REST API用于Oracle BI Publisher:
- 让我们创建一个报告,使其在以下目录中可用:/~scott.tiger/Example;
- 通过curl实用程序进行请求,我们获得服务器响应,并将其保存到文件中:
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
- 由于report_out.xlsx文档中响应的内容不是Excel,而是多部分文档(请参阅RFC 7578),因此我们处理该文档,从而消除了不必要的细节:
perl -i -pe 'BEGIN{undef $/;} s/.*\r\n\r\n(.*?)\r\n--Boundary[^\n]*?--\r\n/$1/sm' report_out.xlsx
- 我们通过在客户端计算机上通过Excel打开报告来确保该报告有效。
- 我们通过管道将开发过程粘合在一起,并获得现成的解决方案:
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