关闭

worklight,建立适配器

标签: parametersfunctionoraclesqlbutton工具
5595人阅读 评论(2) 收藏 举报
分类:

adapter是worklight的交换层,是连接终端应用于远端数据源的工具,那么重要作用就是执行逻辑,返回信息

adapter主要有三种类型,SQL Adapter,http Adapter,Cast Iron® adapter。

本篇仅以SQLAdapter为实例介绍。

1、建立适配器,project中右键新建或者在工具栏中,new worklight Adapter,选择对应的project Name,选择adapter type,输入适配器名称

2、编辑内容,系统自动生成{Adapter Name}.xml和{AdapterName-imp}.js文件,默认连接mysql,我机器只有oracle,所以,更改为连接oracle的驱动串

<dataSourceDefinition>
	<driverClass>oracle.jdbc.driver.OracleDriver </driverClass>
	<url>jdbc:oracle:thin:@10.66.0.17:1521:testdb</url>
	<user>qmystest</user>
    	<password>qmystest</password> 
</dataSourceDefinition>

此外,配置文件中还有个参数:

<procedure name="procedure1"/>
<procedure name="proceRename"/>

是Adapter执行方法的名称,具体内容在{AdapterName-imp}.js中定义,二者名称保持一致即可,如下:

var procedure1Statement = WL.Server.
createSQLStatement("select dept_code,dept_name from a03");
function procedure1(param) {
	return WL.Server.invokeSQLStatement({
		preparedStatement : procedure1Statement,
		parameters : [param]
	});
}

 
function proceRename(param) {
	return WL.Server.invokeSQLStoredProcedure({
		procedure : "ap2",
		parameters : [param]
	});
}

3、修改执行内容:SQL Adapter可以执行一条sql语句,也可以调用数据库对应的过程,执行sql语句时,定义一个相应的语法变量,即

var procedure1Statement = WL.Server.
createSQLStatement("select dept_code,dept_name from a03");

4、测试Adapter:保存上述内容后,对创建的的Adpater,右键,先部署,deploy worklight,再测试:invoke worklight procedure,无参数情况下,直接run,返回结果,成功。

{
   "isSuccessful": true,
   "resultSet": [
      {
         "DEPT_CODE": "1",
         "DEPT_NAME": "销售部"
      },
      {
         "DEPT_CODE": "2",
         "DEPT_NAME": "供应部"
      },
      {
         "DEPT_CODE": "3",
         "DEPT_NAME": "市场部"
      }
   ]
}

5、客户端调用:以上,在服务端的SQL Adapter创建完成,需要在客户端调用了。在客户端的hello.html中,增加一个按钮,增加一个下拉框来存储从服务端接收来的信息:

<div>
	<input type="button" value="SQLAdapter" onclick="getFromA03()" /><br />
</div>
		
<div id="wrapper">
	<label for="citiesList">请选择部门: </label>
	<select id="deptsList"></select>
	<div id="info"></div>
</div>
在hello.js中,定义相关脚本,主方法及相关回调方法:

function getFromA03(){
	var invocationData = {
			adapter : 'ORA17Adapter',
			procedure : 'procedure1',
			parameters  : []
	};
	
	WL.Client.invokeProcedure(invocationData, {
		onSuccess : loadSuccess,
		onFailure : loadFailure,
		});
}

function loadSuccess(result){
	WL.Logger.debug("Feed retrieve success");
	if (result.invocationResult.resultSet.length>0)
		{
			deptsList = result.invocationResult.resultSet;
			fillDeptName();
		}	
}

function loadFailure(result){
	WL.Logger.error("Feed retrieve failure");
}

getFromA03是主方法,里面通过worklight提供的内置方法,调用适配器内容invocation,然后是成功回调的方法loadSuccess,失败回调的方法loadFailure,我在这里曾经犯了个错,失败回调参数onFailure中的on我弄了个大写的On,找了近一个小时才发现

成功后,调用fillDeptName,把部门信息添加到页面的下拉列表中,还要注意返回结果集result中的数据格式及调用方式:

result.invocationResult.resultSet

function fillDeptName(){
	$('#deptsList').empty();
	for (var i = 0; i < deptsList.length; i++) {
		var elem = $("<option/>").html(deptsList[i].DEPT_NAME);		
		$('#deptsList').append(elem);
	}
//	deptSelectChanged();
}
6、查看结果:最终运行效果:





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:76504次
    • 积分:1082
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:0篇
    • 译文:0篇
    • 评论:20条
    最新评论