扩展脚本中封装了两种上下文,插件上下文(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)设置值。
1.1.1服务端上下文
服务端通过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 = "update T_SD_SALEORDER SET FBASESTATUS = " +
status + " WHERE FID = '"+billId+"'";
//执行sql,使用服务器端上下文
DbUtil.execute(ctx, sql);
}
服务器端上下文常见用法:
描述 | 服务器端上下文用法 |
---|---|
获取当前用户 | com.kingdee.eas.util.app.ContextUtil.getCurrentUserInfo(pluginCtx.getContext()); |
获取client端IP | com.kingdee.eas.util.app.ContextUtil.getClientIP(pluginCtx.getContext()); |
获取client端名称 | com.kingdee.eas.util.app.ContextUtil.getClientName(pluginCtx.getContext()); |
获取当前CU | com.kingdee.eas.util.app.ContextUtil.getCurrentCtrlUnit(pluginCtx.getContext()); |
获取当前财务组织(公司) | com.kingdee.eas.util.app.ContextUtil.getCurrentFIUnit(pluginCtx.getContext()); |
获取当前行政组织 | com.kingdee.eas.util.app.ContextUtil.getCurrentAdminUnit(pluginCtx.getContext()); |
获取当前HR组织 | com.kingdee.eas.util.app.ContextUtil.getCurrentHRUnit (pluginCtx.getContext()); |
获取当前数据库类型 | com.kingdee.eas.util.app.ContextUtil.getDbType (pluginCtx.getContext()); |
获取当前组织单元 | com.kingdee.eas.util.app.ContextUtil.getCurrentOrgUnit(pluginCtx.getContext()); |
1.1.2客户端上下文
客户端插件上下文封装了部分常用的内容,具体如下:
描述 | 获取客户端上下文 |
---|---|
获取界面上下文 | 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.getUIContext().get(“sysContext”).getCurrentFIUnit() |
获取界面状态 | pluginCtx.getUI().getOprtState(); |
获取界面Action | pluginCtx.getUI().getActionManager().getAction(“actionName”) |
直接通过pluginCtx调用即可,比如pluginCtx.getUI即可获取当前界面实例。