以数据集BusinessViewService的API作为示例,使用JS通过 HTTP JSON的方式,调用Smartbi服务器提供的所有方法。
其它Service的API的操作方式是类似的。
JS调用smartbi接口需要先解决跨域问题。
示例代码:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Test BusinessViewService</title> <script type="text/javascript" src="http://libs.baidu.com/jquery/1.7.2/jquery.js"></script> <script type="text/javascript" src="http://libs.baidu.com/json/json2/json2.js"></script> </head> <body> <textarea id="output" rows="10" cols="40"></textarea> <script type="text/javascript"> function execRMI(className, methodName, paramArray, callback, sync) { $.ajax('http://localhost:18080/smartbi/vision/RMIServlet', { type : 'POST', async : !sync, data : { 'className' : className, 'methodName' : methodName, 'params' : JSON.stringify(paramArray) }, dataType : 'json', success : callback, failure : callback, error : callback }); } $(function(){ var logined = false; var isSync = true; // 同步 execRMI('UserService', 'login', [ 'admin', 'manager' ], function(data) { if (data && data.retCode === 0) { logined = data.result; } }, isSync); $('#output').val('logined=' + logined + '\n'); if (logined) { testBusinessViewService(); } }); function println(msg) { var text = $('#output').val() + msg + '\n'; $('#output').val(text); } function testBusinessViewService() { // 数据集ID(对应示例库中的"根目录\功能演示\查询定义\原生SQL查询\带参数的原生SQL") var bizViewId = "I2c94907127855da201278df551b62602"; // 参数ID(对应"带参数的原生SQL"的输出参数标识) var paramId = "OutputParameter.I2c94907127855da201278df551b62602.产品名称参数_列表对话框"; // 参数真实值 var paramValue = "牛奶,花生,饼干,猪肉,汽水"; // var paramsJsonArrStr = JSON.stringify([{id: paramId, value:paramValue}]); // 每页行数 var rowsPerPage = 2; // 是否获取总行数 var getTotalRows = true; // var isSync = true; // 同步 execRMI('BusinessViewService', 'openLoadDataView', [ bizViewId, paramsJsonArrStr, rowsPerPage, getTotalRows ], function(data) { if (data && data.retCode === 0) { var ret = data.result; var loadDataClientId = ret.clientId; var totalRows = ret.totalRowCount; var fieldNames = ret.fieldNames; println('======================='); println(fieldNames.join(', ')); println('======================='); var pages = parseInt(totalRows / rowsPerPage) + (totalRows % rowsPerPage == 0 ? 0 : 1); for ( var pageNum = 0; pageNum < pages; pageNum++) { execRMI('BusinessViewService', 'loadViewData', [ loadDataClientId, pageNum ], function( pageData) { if (pageData && pageData.retCode === 0) { var dataList = pageData.result; for ( var i = 0, len = dataList.length; i < len; i++) { println(dataList[i].join(', ')); } } },isSync); //同步,执行loadViewData完成后才能closeLoadDataView } execRMI('BusinessViewService', 'closeLoadDataView', [ loadDataClientId ]); } }, isSync); } </script> </body> </html>
示例效果: