页面树结构
转至元数据结尾
转至元数据起始


以数据集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>


示例效果: