页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。


目录

下面以Java环境为例,介绍如何在应用系统中调用Smartbi SDK BusinessViewService API。


1、新建Java工程SmartbiSDKDemo,并添加以下依赖的jar:1、新建Java工程SmartbiSDKDemo,并添加以下依赖的jar,相关jar需要从smartbi.war中获取:


2、核心示例代码如下:

代码块
languagejava
themeEclipse
linenumberstrue
package demo.sdk;
 
import java.util.List;
import smartbi.net.sf.json.JSONArray;
import smartbi.net.sf.json.JSONObject;
import smartbi.sdk.ClientConnector;
import smartbi.sdk.service.businessview.BusinessViewService;
import smartbi.sdk.service.businessview.ViewMetaData;


public class BusinessViewServiceSDKDemo {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		BusinessViewServiceSDKDemo demo = new BusinessViewServiceSDKDemo();
		demo.run();
	}
	/**
	 * 测试BusinessViewService SDK
	 */
	public void run() {
		String url = "http://localhost:8080/smartbi";
		String user = "admin";
		String password = "manager";
		ClientConnector conn = createClientConnector(url, user, password);
		if (conn == null) {
			System.out.println("创建应用连接器失败,请检查"连接url、用户名、密码"是否正确!");
			return;
		}
		try {
			BusinessViewService bizViewService = createBusinessViewService(conn);
			testBusinessViewService(bizViewService);
		} finally {
			closeClientConnector(conn);
		}
	}
	/**
	 * 创建应用连接器。<br>
	 * 在跟Smartbi服务器进行任何通信之前必须先创建一个ClientConnector对象,即应用链接器。<br>
	 * 客户代码仅需要创建一个ClientConnector实例。
	 * 
	 * @return 应用连接器
	 */
	private ClientConnector createClientConnector(String url, String user, String password) {
		ClientConnector conn = new ClientConnector(url);
		boolean loginOK = conn.open(user, password);
		if (loginOK) {
			return conn;
		} else {
			conn.close();
			return null;
		}
	}
	/**
	 * 创建服务对象。<br>
	 * 以ClientConnector为构造函数参数,创建时将之前的ClientConnector实例传入。
	 * 
	 * @param conn
	 *            应用连接器
	 * @return 服务对象
	 */
	private BusinessViewService createBusinessViewService(ClientConnector conn) {
		if (conn == null) {
			return null;
		} else {
			BusinessViewService bizViewService = new BusinessViewService(conn);
			return bizViewService;
		}
	}
	/**
	 * 使用服务对象。<br>
	 * 在获得服务对象后就可以进行所需的操作了,具体的方法请参考API文档。
	 * 
	 * @param bizViewService
	 *            服务对象
	 */
	private void testBusinessViewService(BusinessViewService bizViewService) {
		if (bizViewService == null) {
			return;
		}
		// 业务查询ID(对应示例库中的"根目录\功能演示\查询定义\原生SQL查询\带参数的原生SQL")
		String bizViewId = "I2c94907127855da201278df551b62602";
		// 参数ID(对应示例库中的"根目录\功能演示\查询定义\原生SQL查询\带参数的原生SQL"-输出参数-产品名称参数_列表对话框-标识对应的属性值)
		String paramId = "OutputParameter.I2c94907127855da201278df551b62602.产品名称参数_列表对话框";
		// 参数真实值
		String paramValue = "牛奶,花生,饼干,猪肉,汽水";
		// 参数显示值
		// String paramDisplayValue = paramValue;
		//
		JSONArray paramsArr = new JSONArray();
		JSONObject paramObj = new JSONObject();
		paramObj.put("id", paramId);
		paramObj.put("value", paramValue);
		// paramObj.put("displayValue", paramDisplayValue);
		paramsArr.put(paramObj);
		String paramsJsonArrStr = paramsArr.toString();
		// 每页行数
		int rowsPerPage = 2;
		// 是否获取总行数
		boolean getTotalRows = true;
		// 打开查询
		ViewMetaData ret = bizViewService.openLoadDataView(bizViewId, paramsJsonArrStr,
				rowsPerPage, getTotalRows);
		String loadDataClientId = ret.getClientId();
		int totalRows = ret.getTotalRowCount();
		List<String> fieldNames = ret.getFieldNames();
		// List<String> fieldTypes = ret.getFieldTypes();
		//
		int pages = totalRows / rowsPerPage + (totalRows % rowsPerPage == 0 ? 0 : 1);
		System.out.println("共" + totalRows + "行,每页" + rowsPerPage + "行,共" + pages + "页:");
		StringBuilder buf = new StringBuilder();
		buf.append("|\t");
		for (int i = 0; i < fieldNames.size(); i++) {
			buf.append(fieldNames.get(i)).append("\t");
		}
		buf.append("|");
		System.out.println("-----------------------------------------");
		System.out.println(buf.toString());
		// 按分页读取数据
		for (int pageNum = 0; pageNum < pages; pageNum++) {
			System.out.println("---第" + (pageNum + 1) + "页---------------------------------");
			List<List<String>> dataList = bizViewService.loadViewData(loadDataClientId, pageNum);
			if (dataList != null && dataList.size() > 0) {
				for (List<String> cellDatas : dataList) {
					buf.setLength(0);
					buf.append("|\t");
					for (String data : cellDatas) {
						buf.append(data).append("\t");
					}
					buf.append("|");
					System.out.println(buf.toString());
				}
			}
		}
		System.out.println("-----------------------------------------");
		// 关闭查询
		bizViewService.closeLoadDataView(loadDataClientId);
	}
	/**
	 * 关闭应用连接器
	 * 
	 * @param conn
	 *            应用连接器
	 */
	private void closeClientConnector(ClientConnector conn) {
		if (conn != null) {
			conn.close();
			conn = null;
		}
	}
}

3、示例运行效果:

4、示例源码(Eclipse)工程

SmartbiSDKDemo_Eclipse_Project.zip



目录

下面以Java环境为例,介绍如何在应用系统中调用Smartbi SDK BusinessViewService API。


1、新建Java工程SmartbiSDKDemo,并添加以下依赖的jar:
Image Added

2、核心示例代码如下:

代码块
languagejava
themeEclipse
linenumberstrue
package demo.sdk;
 
import java.util.List;
import smartbi.net.sf.json.JSONArray;
import smartbi.net.sf.json.JSONObject;
import smartbi.sdk.ClientConnector;
import smartbi.sdk.service.businessview.BusinessViewService;
import smartbi.sdk.service.businessview.ViewMetaData;


public class BusinessViewServiceSDKDemo {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		BusinessViewServiceSDKDemo demo = new BusinessViewServiceSDKDemo();
		demo.run();
	}
	/**
	 * 测试BusinessViewService SDK
	 */
	public void run() {
		String url = "http://localhost:8080/smartbi";
		String user = "admin";
		String password = "manager";
		ClientConnector conn = createClientConnector(url, user, password);
		if (conn == null) {
			System.out.println("创建应用连接器失败,请检查"连接url、用户名、密码"是否正确!");
			return;
		}
		try {
			BusinessViewService bizViewService = createBusinessViewService(conn);
			testBusinessViewService(bizViewService);
		} finally {
			closeClientConnector(conn);
		}
	}
	/**
	 * 创建应用连接器。<br>
	 * 在跟Smartbi服务器进行任何通信之前必须先创建一个ClientConnector对象,即应用链接器。<br>
	 * 客户代码仅需要创建一个ClientConnector实例。
	 * 
	 * @return 应用连接器
	 */
	private ClientConnector createClientConnector(String url, String user, String password) {
		ClientConnector conn = new ClientConnector(url);
		boolean loginOK = conn.open(user, password);
		if (loginOK) {
			return conn;
		} else {
			conn.close();
			return null;
		}
	}
	/**
	 * 创建服务对象。<br>
	 * 以ClientConnector为构造函数参数,创建时将之前的ClientConnector实例传入。
	 * 
	 * @param conn
	 *            应用连接器
	 * @return 服务对象
	 */
	private BusinessViewService createBusinessViewService(ClientConnector conn) {
		if (conn == null) {
			return null;
		} else {
			BusinessViewService bizViewService = new BusinessViewService(conn);
			return bizViewService;
		}
	}
	/**
	 * 使用服务对象。<br>
	 * 在获得服务对象后就可以进行所需的操作了,具体的方法请参考API文档。
	 * 
	 * @param bizViewService
	 *            服务对象
	 */
	private void testBusinessViewService(BusinessViewService bizViewService) {
		if (bizViewService == null) {
			return;
		}
		// 业务查询ID(对应示例库中的"根目录\功能演示\查询定义\原生SQL查询\带参数的原生SQL")
		String bizViewId = "I2c94907127855da201278df551b62602";
		// 参数ID(对应示例库中的"根目录\功能演示\查询定义\原生SQL查询\带参数的原生SQL"-输出参数-产品名称参数_列表对话框-标识对应的属性值)
		String paramId = "OutputParameter.I2c94907127855da201278df551b62602.产品名称参数_列表对话框";
		// 参数真实值
		String paramValue = "牛奶,花生,饼干,猪肉,汽水";
		// 参数显示值
		// String paramDisplayValue = paramValue;
		//
		JSONArray paramsArr = new JSONArray();
		JSONObject paramObj = new JSONObject();
		paramObj.put("id", paramId);
		paramObj.put("value", paramValue);
		// paramObj.put("displayValue", paramDisplayValue);
		paramsArr.put(paramObj);
		String paramsJsonArrStr = paramsArr.toString();
		// 每页行数
		int rowsPerPage = 2;
		// 是否获取总行数
		boolean getTotalRows = true;
		// 打开查询
		ViewMetaData ret = bizViewService.openLoadDataView(bizViewId, paramsJsonArrStr,
				rowsPerPage, getTotalRows);
		String loadDataClientId = ret.getClientId();
		int totalRows = ret.getTotalRowCount();
		List<String> fieldNames = ret.getFieldNames();
		// List<String> fieldTypes = ret.getFieldTypes();
		//
		int pages = totalRows / rowsPerPage + (totalRows % rowsPerPage == 0 ? 0 : 1);
		System.out.println("共" + totalRows + "行,每页" + rowsPerPage + "行,共" + pages + "页:");
		StringBuilder buf = new StringBuilder();
		buf.append("|\t");
		for (int i = 0; i < fieldNames.size(); i++) {
			buf.append(fieldNames.get(i)).append("\t");
		}
		buf.append("|");
		System.out.println("-----------------------------------------");
		System.out.println(buf.toString());
		// 按分页读取数据
		for (int pageNum = 0; pageNum < pages; pageNum++) {
			System.out.println("---第" + (pageNum + 1) + "页---------------------------------");
			List<List<String>> dataList = bizViewService.loadViewData(loadDataClientId, pageNum);
			if (dataList != null && dataList.size() > 0) {
				for (List<String> cellDatas : dataList) {
					buf.setLength(0);
					buf.append("|\t");
					for (String data : cellDatas) {
						buf.append(data).append("\t");
					}
					buf.append("|");
					System.out.println(buf.toString());
				}
			}
		}
		System.out.println("-----------------------------------------");
		// 关闭查询
		bizViewService.closeLoadDataView(loadDataClientId);
	}
	/**
	 * 关闭应用连接器
	 * 
	 * @param conn
	 *            应用连接器
	 */
	private void closeClientConnector(ClientConnector conn) {
		if (conn != null) {
			conn.close();
			conn = null;
		}
	}
}

3、示例运行效果:

Image Added