worklight,建立适配器

来源:互联网 发布:网络验证系统破解版 编辑:程序博客网 时间:2024/06/06 13:24

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、查看结果:最终运行效果:





原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我欠了很多钱我该怎么办 一个人欠我钱跑了我该怎么办 买房子时间长了成危楼了怎么办 别人欠我钱人找不到了怎么办 欠银行信用卡钱人失踪了怎么办 欧洲卡车模拟2没油了怎么办 蓝牙安装包里没有微信怎么办 腾讯手游模拟器玩全军出击卡怎么办 手游cf用模拟器画面很抖怎么办 腾讯手游助手模拟器游戏卡死怎么办 腾讯手游模拟器提示注册以满怎么办 手游绝地求生被检测成模拟器怎么办 腾讯手游助手模拟器内存不够怎么办 微信视频对方听不到我的声音怎么办 学生考试传纸条作弊老师应怎么办 苹果手机微信小游戏没有声音怎么办 红米手机游戏下好了安装不了怎么办 小米手机sd卡存储已满怎么办 英雄联盟峡谷之巅资格被收回怎么办 人进监狱之前信用卡没还怎么办 荒野行动资源文件下载卡住了怎么办 荒野行动绑定的手机号停机了怎么办 不小心误点了爱奇艺扣款了怎么办 和别人吵架别人先骂你怎么办 自己人被带到了缅甸黑社会了怎么办 绝地求生忘记复制钥匙激活码怎么办 绝地求生买的钥匙激活码丢了怎么办 蓝河奶粉宝宝吃了不长肉怎么办 苹果ios版本太低激活不了怎么办 脸上被油烫伤了 起了水泡怎么办 皮肤被油烫伤起来个水泡怎么办 去泰国旅游没来得及兑换泰铢怎么办 游戏和安卓 不和 出现黑屏怎么办 邻居把垃圾放在楼梯口不丢怎么办 58热敏小票打印机口松了怎么办 王鹏的眼睛今天起疙瘩了怎么办 背包带子老从肩膀滑下来怎么办 绝地求生用手机流量更新不成怎么办 手机拍的视频在电脑上放不了怎么办 炉石传说手机点登陆游戏闪退怎么办 车到信号屏蔽区一键启动不了怎么办