EAS扩展脚本编写指南.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定制平台系列扩展脚本编写指南

简介

扩展脚本运行引擎为Rhino,基于javascript语法,运行期解释执行。jvm中的类的方法和属性均可应用于脚本中,调用方式类似于java代码编写。

其处在with(easNames){ …}中,所以不需要指定其全路径,即可调用getRemoteInstance()方法。如果没使用with指定作用域,则必须使用全名称(包名+类名)。

变量的定义声明遵循javascript语法,接口实现使用function声明。比如给一些控件增加监听器:

上下文

扩展脚本中封装了两种上下文,插件上下文(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调用即可,比如pluginCtx.getUI即可获取当前界面实例。

界面的控件可以通过get + 控件类型+ ( + 控件名+)的方式获得,比如获取单据分录的表格可以这样pluginCtx.getKDTable("kdtEntries")。

方法上下文:

方法上下文存放了方法的相关信息,包括方法参数和方法返回值。方法上下文提供了如下常

过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)

com.kingdee.bos.framework.BOProxy.getProxy(ctx,pk).callCmethod(methodSignature,args)

自定义异常

业务异常定义后,可以通过工具类抛出异常。

服务器端调用方式:

com.kingdee.eas.ep.plugin.ExceptionUtil.throwOnServer(pluginCtx.getContext(),name,subName, args)

其中参数为:

Context ctx-服务器上下文

String name-异常名称

String subName-子异常名称

Object[] args-参数对象数组,可删去

args[i]中的内容将会替代对应的{i}中的内容,如果没有参数,可以省略该参数。

客户端调用方式:

com.kingdee.eas.ep.plugin.ExceptionUtil.throwOnClient(name,subName,args)

参数含义如上。

自定义基础资料或单据

定制平台支持自定义基础资料和单据的实现原理是先通过内置的模板拷贝生成新的动态元数据,然后通过模板这个壳来运行。新生成的元数据可进行业务调整。所有对动态内容的操作,最终都转换为对模板的操作,模板根据具体元数据的信息,进行相应的转换后,再执行操作。

模板通过EAS系统内置产生,目前只内置了基础资料和单据两种模板。其他模板请到【定

制模板】功能中查看。

业务单据的模板信息为:

下面通过对基础资料的相关操作来展示如何在脚本中应用动态内容。

客户端调用新增、修改、查询等动作首先需要一个远程接口,可通过如下方式获得:

”com.kingdee.eas.custom.app.Diploma”。返回值为com.kingdee.eas.ep.IDataBaseCustom类型,这是由于其从该模板生成所致。这样IDataBaseCustom上的所有操作,动态基础资料都有,也均可以通过该实例执行。比如,新增操作

ORMMapping的。删除、更新、查看等动作由于值对象都存在id,所以其可以自动解析获得,不需要手工设置。

调试

如果想调试某段脚本,请在扩展定义中勾选“调试模式执行”。这样,在脚本运行时会弹出脚本调试窗口。

注意:如果调试的脚本为服务器端脚本,即实体或façade中基于业务方法编写的脚本,则必须在定制平台中启动“脚本远程调试”,否则将会抛出BOS异常,提示启动远程调试服务器。

调试支持单步执行、断点设置、变量查看、脚本控制台等。

相关文档
最新文档