移动bos服务端脚本运行引擎为Rhino,基于javascript语法,运行期解释执行。jvm中的类的方法和属性均可应用于脚本中。脚本运行在EAS服务器上,提供了类似函数的功能,web前端通过ajax调用服务端脚本,可以传递参数,得到返回值。
脚本运行在EAS服务器上,提供了类似函数的功能,web前端通过ajax调用服务端脚本,可以传递参数,得到返回值。
1)选择服务端函数页签
2)服务端脚本(getPersonGendar),功能为获取某个职员的性别:
var param=[]; param[0]=mbos.$model("entity").data.person.id; var success=function(data){ mbos.msgBox.showInfo(data); }; var error=function(data){ mbos.msgBox.showError(data); } //调用服务端脚本,param为参数,success,fail分别为回调函数 mbos.eas.invokeScript({ name:"getPersonGender", param:param, success:success, error:error })
和java中import类似,这里使用JavaImporter()的importPackage引入包com.kingdee.eas.base.codingrule,CodingRuleManagerFactory 属于该包中的内容,但其处在with(easNames){ … }中,所以不需要指定其全路径,即可调用getRemoteInstance()方法,如果需要引入其它包,则增加easNames.importPackage(Packages.包路径);即可。如果没使用with指定作用域,则必须使用全名称(包名+类名)。
注意:当引入的不同包路径下有重复的类名称时,在with( easNames){}作用域中,该类名在引用时也需要指定其全路径。
var easNames =JavaImporter(); easNames.importPackage(Packages.com.kingdee.eas.base.codingrule);
服务端脚本中封装了上下文context,上下文为系统内置,无需额外声明或获取。上下文中主要提供3种功能: 获取bos context,获取参数,设置返回值。
如: var ctx = context.getBosContext(); var sql="...."; var rowset =com.kingdee.eas.util.app.DbUtil.executeQuery(ctx,sql); if(rowset.next()){ var flongnumber = rowset.getString("flongnumber"); } context.setResult(flongnumber);
其他上下文方法
获取参数相关方法
在服务端函数中,throw语句可以将服务端的变量传输到web前端
服务端: var sql="select * from t_user;" throw sql; web端: mbos.eas.invokeScript({ name:"server", success:function(data){ mbos.msgBox.showInfo(data);//将打印服务端的sql语句 } })