下面以Java环境为例,介绍如何在应用系统中调用Smartbi SDK BusinessViewService API。
1、新建Java工程SmartbiSDKDemo,并添加以下依赖的jar:1、新建Java工程SmartbiSDKDemo,并添加以下依赖的jar,相关jar需要从smartbi.war中获取:
2、核心示例代码如下:
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
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:
2、核心示例代码如下:
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
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、示例运行效果: