可获取的环境变量(参数)¶
脚本执行前,平台通过 IRunner.initBSFManager(currdoc, params, user, errors)(见 AbstractRunner)把上下文注入引擎,再由 baselib.js 暴露为可调用函数。不同挂载点传入的 currdoc / params / user 不同,因此**可用对象与是否为空**也不同。
下文「环境变量」指脚本里能拿到的上下文对象;「参数」指
ParamsTable中的请求/业务键(可用getParameter("键")读取)。
1. 上下文对象一览¶
| 名称(文档惯称) | 常用取法 | 底层来源 | 说明 |
|---|---|---|---|
| WebUser | getWebUser() / $WEB.getWebUser() |
initBSFManager 的 user |
当前登录用户;定时任务、部分公开 API 可能为 null |
| CurrentDocument | getCurrentDocument() / $CURRDOC.getCurrDoc() |
initBSFManager 的 currdoc |
当前文档;视图脚本多为**查询表单临时文档**;Widget 常为 null;定时任务/API 多为空 Document |
| ParentDocument | getParentDocument() |
由当前文档/parentid 参数解析(baselib.js) |
子表、包含元素等场景下的父文档;无父文档时可能为 null |
| RelateDocument | getRelateDocument() |
当前文档关联文档 | 关联打开等场景;无关联时可能为 null |
| Params | getParamsTable() / getParameter(name) / $WEB.getParamsTable() |
initBSFManager 的 params |
请求与业务参数表;几乎所有挂载点都会注入 |
常用全局 Bean(一般无需关心,但可直接使用):$WEB、$CURRDOC、$MESSAGE、$TOOLS、$PROCESSFACTORY 等(均在 AbstractRunner.initBSFManager 中 declareBean)。
2. 按挂载点:能拿到什么¶
依据各挂载点实际调用 initBSFManager(...) 的代码整理。标记含义:
- ● 通常可用且有业务含义
- ○ 会注入,但常为
null/ 空文档,使用前需判空 - — 该挂载点基本用不到或不注入
| 挂载域 | 典型位置 | WebUser | CurrentDocument | ParentDocument | RelateDocument | Params 要点 | 额外对象 |
|---|---|---|---|---|---|---|---|
| 表单 | 基本属性、控件值/选项/校验/显隐、按钮前后置 | ● | ● 当前业务文档 | ● 子表等 | ● 关联打开 | 含 formId、docId、_flowType 等 |
— |
| 视图·数据/列/水印 | DQL/SQL、列值、列隐藏、水印 | ● | ● **查询表单**临时文档 | ○ | ○ | 视图查询参数、_keyword 等 |
— |
| 视图·操作 | 名称脚本、动作前后置、只读/隐藏 | ● | ● 查询表单或选中行上下文 | ○ | ○ | 含 _selects(勾选文档 id,分号分隔) |
— |
| 流程·节点 | 审批人/时限/协办/抄送/回撤/挂起/催办/自动节点 | ● | ● 流程文档 | ○ | ○ | 含 _flowId、_flowType、_nextids、attitude 等 |
— |
| 流程·路径 | 进入条件、送出校验、路径动作 | ● | ● 流程文档 | ○ | ○ | 同上 | — |
| 流程·子流程启动脚本 | 子流程节点 startup | ● | ● **主流程**文档 | ○ | ○ | 流程参数 | $STARTUP_DOC:即将启动的子流程文档(SubFlowState.runScript) |
| 流程·子流程回调 | 子流程 callback | ● | ● 子流程文档 | ○ | ○ | 流程参数 | $CALLBACK_DOC:主流程文档(CompleteState.runScript) |
| Excel 导入 | 列值脚本、列校验 | ● | ● 导入行映射成的临时文档 | — | — | 导入过程参数 | — |
| 菜单脚本链接 | 菜单 → 脚本链接 URL | ● | ○ 视调用传入 | ○ | ○ | 菜单/应用相关参数 | — |
| Widget | 内容/计算脚本 | ● | ○ 常为 null(PageWidgetRunTimeServiceImpl) |
— | — | Widget 请求参数 | — |
| 定时任务 | 任务脚本 / 终止脚本 | ○ 为 null(Task.execute) |
○ 空 Document |
— | — | 含 application;session 为任务会话 |
用 getApplication() 等无用户 API |
| API 响应脚本 | .api → responseScript |
○ public 时可能为 null |
○ 空 Document |
— | — | path 变量、query、_content(请求体) |
— |
| 报表 / 统计图 | SQL/内容脚本 | ● | ● 常为查询表单文档 | ○ | ○ | 查询条件等 | — |
3. 常用 Params 键¶
以下键通过 getParameter("键名") / getParamsTable() 读取(与历史「系统内置全局变量」表对应,并按触发场景归类):
| 获取时机 | 参数名 | 类型 | 作用 |
|---|---|---|---|
| 跨脚本 | GLOBAL_MAP |
Map | 可在脚本间存取的全局 Map(见平台约定) |
| 视图打开 / 视图操作 | _selects |
字符串 | 勾选文档 id;多项用分号分隔 |
| 视图打开 | appId |
字符串 | 当前应用 id |
| 视图打开 | id |
字符串 | 菜单 id |
| 视图打开 | linkType |
字符串 | 00 表单 / 01 视图 |
| 视图打开 | treedocid |
字符串 | 树形视图当前节点 id |
| 视图打开 | parentId |
字符串 | 包含元素、选项卡等场景的父表单/文档 id |
| 视图打开 | subSelects |
字符串 | 包含元素选中 id |
| 智能搜索 | _keyword |
字符串 | 搜索框输入值 |
| 表单打开 | docId |
字符串 | 当前文档 id |
| 表单打开 | formId |
字符串 | 表单 id |
| 表单打开 | viewId |
字符串 | 视图 id |
| 流程处理 | _flowType |
字符串 | 80 提交/保存类;81 回退(以运行时写入为准) |
| 流程处理 | attitude / _attitude |
字符串 | 审批意见 |
| 流程处理 | _signature |
字符串 | 手签意见 |
| 流程处理 | _nextids |
字符串 | 下一节点 id |
| 自定义报表菜单 | reportId / reportld |
字符串 | 报表 id(历史键名可能为 reportld) |
| API | _content |
字符串/对象 | 请求 body(MagicApiController 写入) |
4. 编写建议¶
- 表里写名称,代码里用函数:文档写
WebUser,脚本写getWebUser();写CurrentDocument,脚本写getCurrentDocument()或getItemValueAsString(...)(默认作用于当前文档)。 - 判空:Widget / 定时任务 / 公开 API 上不要假设
getWebUser()、getCurrentDocument()一定非空。 - 视图脚本的 CurrentDocument:多是查询表单临时文档,不是列表里某一行;行数据请结合
_selects或列脚本上下文。 - 子流程特例:启动脚本里主单用
getCurrentDocument(),子单用$STARTUP_DOC;回调里子单为当前文档,主单用$CALLBACK_DOC。 - 各挂载点的「位置 / 触发时机 / 返回值」见
where-to-use各页;本页只统一**环境变量与参数**。