EAS扩展脚本编写指南
更新时间:2023-12-03 04:22:01 阅读量: 教育文库 文档下载
定制平台系列
扩展脚本编写指南
简介
扩展脚本运行引擎为Rhino,基于javascript语法,运行期解释执行。jvm中的类的方法和属性均可应用于脚本中,调用方式类似于java代码编写。 比如下面一段脚本: //客户端设置编码规则脚本 var easNames = JavaImporter(); easNames.importPackage(Packages.com.kingdee.eas.base.codingrule); with(easNames){ var editData = pluginCtx.getDataObject(); var bizOrgUnit= pluginCtx.getKDBizPromptBox(\var number = CodingRuleManagerFactory.getRemoteInstance().getNumber(editData, bizOrgUnit.getId()); pluginCtx.getKDTextField(\} 其中 var easNames = JavaImporter(); easNames.importPackage(Packages.com.kingdee.eas.base.codingrule); 引入包com.kingdee.eas.base.codingrule,CodingRuleManagerFactory 属于该包中的内容,但其处在with(easNames){ … }中,所以不需要指定其全路径,即可调用getRemoteInstance()方法。如果没使用with指定作用域,则必须使用全名称(包名+类名)。
变量的定义声明遵循javascript语法,接口实现使用function声明。比如给一些控件增加监听器:
//F7控件增加值改变监听 pluginCtx.getKDBizPromptBox(\{ java.lang.System.out.println(\CHANGED:\+event.getOldValue() + \+ event.getNewValue()); }); //KDTable增加表格编辑事件监听 pluginCtx.getKDTable(\ if(methodName == \ { com.kingdee.eas.util.client.MsgBox.showInfo(\
} }); 上下文
扩展脚本中封装了两种上下文,插件上下文(pluginCtx)和方法上下文(methodCtx)。这两种上下文为系统内置,无需额外的声明或获取。
pluginCtx主要存放当前执行环境的相关信息,比如服务端的Context,客户端的界面控件、界面状态、编辑对象等。methodCtx存放当前操作的相关信息,包含方法参数和方法返回值。
插件上下文:
客户端和服务端的插件上下文存储的内容不一样,实现方式上,其分别对应于两个java类,com.kingdee.eas.ep.app.BeanParam和com.kingdee.eas.ep.client.UIParam。这两个类中的方法均可以在脚本中直接使用。
上下文都存在get和put方法。脚本中直接使用get(key)获取值,put(key,value)设置值。
服务端通过pluginCtx.getContext()获取服务端上下文,比如: //服务端更新单据状态 var imp = JavaImporter(); imp.importPackage(Packages.com.kingdee.eas.util.app); with(imp){ var ctx = pluginCtx.getContext(); var billId = methodCtx.getParamValue(0); var sql = \T_SD_SALEORDER SET FBASESTATUS = \+ status + \WHERE FID = '\DbUtil.execute(ctx, sql); }
客户端插件上下文封装了部分常用的内容,具体如下: //获取界面上下文 java.util.Map getUIContext() //获取组织上下文 com.kingdee.bos.Context getMainOrgContext() //获取界面状态,比如新增、编辑 java.lang.String getOprtState() //获取当前编辑对象,编辑界面的editData com.kingdee.bos.dao.IObjectValue getDataObject() //获取界面绑定 com.kingdee.bos.appframework.databinding.DataBinder getDataBinder() //获取规则处理 com.kingdee.eas.framework.client.UILifeCycleHander getLifeCycleHander() //获取当前界面实例 com.kingdee.bos.ui.face.IUIObject getUI() 直接通过pluginCtx调用即可,比如pluginCtx.getUI即可获取当前界面实例。
界面的控件可以通过get + 控件类型 + ( + 控件名 +)的方式获得,比如获取单据分录的表格可以这样pluginCtx.getKDTable(\。
方法上下文:
方法上下文存放了方法的相关信息,包括方法参数和方法返回值。方法上下文提供了如下常用方法: //获取方法名 String getName() //获取方法别名 String getAlias() //获取方法参数类型 String[] getParamTypes() //获取方法某个参数的类型 String getParamType(int index) //获取方法参数值 Object[] getParamValues() //获取方法某个参数值 Object getParamValue(int index) //获取方法返回值类型 String getResultType() //获取方法返回值 Object getResultValue() //设置方法返回值 void setResultValue(Object value) 如果想获得方法的某个参数,比如IObjectPK addnew(CoreBaseInfo model)的参数,这可以通过methodCtx.getParamValue(0)来获得model。同时可以通过methodCtx.getResultValue()来获
得方法的返回值。
注意:设置方法的返回值必须通过methodCtx.setResultValue(value)来设置,不可以用类似方法返回值的方式写(return value)。
可以通过定制平台的扩展定义中的上下文来快速编写一些常用脚本。
自定义业务方法
在实体或Fa?ade中新增一个业务方法后,如何调用该业务方法?
自定义业务方法的调用是通过工具类来实现的。工具类主要需要三个参数:元数据PK(IMetaDataPK pk),方法名称(String methodSignature),参数对象数组(Object[] args)。其中方法名称请从该业务方法的扩展点的描述信息中拷贝获得,否则容易出错,如果方法没有返回值,注意名称前有空格,不要删除。
客户端调用业务方法方式:
com.kingdee.bos.framework.BOClientTool.callCmethod(pk,methodSignature,args) 比如: //客户端调用服务端方法 var easNames = JavaImporter(); easNames.importPackage(Packages.com.kingdee.bos.ctrl.extendcontrols); easNames.importPackage(Packages.com.kingdee.bos); easNames.importPackage(Packages.com.kingdee.bos.util); easNames.importPackage(Packages.com.kingdee.bos.metadata); easNames.importPackage(Packages.com.kingdee.eas.util.client); easNames.importPackage(Packages.com.kingdee.bos.framework); with(easNames){ var pk = new MetaDataPK(\ var name = \ var params = [BOSUuid.read(\ var result = BOClientTool.callCmethod(pk,name,params); MsgBox.showInfo(\ com.kingdee.eas.util.SysUtil.abort(); } 服务器端调用业务方法方式:
com.kingdee.bos.framework.BOProxy.getProxy(ctx,pk).callCmethod(methodSignature,args)
正在阅读:
EAS扩展脚本编写指南12-03
病理学题库11-06
中小学科普知识竞赛试题(145)10-23
王崧舟《长相思》课堂实录03-17
农村青年学习需求调查03-20
小学生必背古诗75首(学生打印背诵版)05-16
JTP矿用提升绞车司机操作规程通用版04-14
2.上湾煤矿生产安全事故应急预案01-15
《试用期员工转正考核表》10-21
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 脚本
- 编写
- 扩展
- 指南
- EAS
- 航海英语听力与会话第三版问答题参考答案
- 化学教学测育与评价 第十章作业
- 2012年潍坊市初中学业水平考试
- 八年级英语第6周周清试题
- 洪家渡水电站面板堆石坝垫层料生产及质量控制
- 陕西省商务厅关于做好“五·一”节日市场供应的通知
- 福建省工商行政管理系统适用商标法行政处罚裁量意 - 图文
- 关于公布宜兴市普通中小学
- 13化学制工程(本科)班:有机化学实验 - 图文
- 氢氧化铝内控标准
- 安全生产措施方案
- 2014年全国各地中考语文试题分类整理:古诗词鉴赏
- 2011年恩育中学大课间活动方案
- Android6.0 亮屏灭屏流程(DisplayPowerControler、WMS)(二)亮度设置
- 2J-X计量泵厂家产品介绍及特点 - 图文
- 大理市第二人民医院护理质量持续改进检查反馈表(三月份)
- 高炉煤气干法布袋除尘技术在大型高炉上的应用 doc
- 主题班会团结友爱
- 2014年春季三年级科学下册教学计划下 2
- 杨培志 构建和谐校园之我见