跳转至

可获取的环境变量(参数)

脚本执行前,平台通过 IRunner.initBSFManager(currdoc, params, user, errors)(见 AbstractRunner)把上下文注入引擎,再由 baselib.js 暴露为可调用函数。不同挂载点传入的 currdoc / params / user 不同,因此**可用对象与是否为空**也不同。

下文「环境变量」指脚本里能拿到的上下文对象;「参数」指 ParamsTable 中的请求/业务键(可用 getParameter("键") 读取)。

1. 上下文对象一览

名称(文档惯称) 常用取法 底层来源 说明
WebUser getWebUser() / $WEB.getWebUser() initBSFManageruser 当前登录用户;定时任务、部分公开 API 可能为 null
CurrentDocument getCurrentDocument() / $CURRDOC.getCurrDoc() initBSFManagercurrdoc 当前文档;视图脚本多为**查询表单临时文档**;Widget 常为 null;定时任务/API 多为空 Document
ParentDocument getParentDocument() 由当前文档/parentid 参数解析(baselib.js 子表、包含元素等场景下的父文档;无父文档时可能为 null
RelateDocument getRelateDocument() 当前文档关联文档 关联打开等场景;无关联时可能为 null
Params getParamsTable() / getParameter(name) / $WEB.getParamsTable() initBSFManagerparams 请求与业务参数表;几乎所有挂载点都会注入

常用全局 Bean(一般无需关心,但可直接使用):$WEB$CURRDOC$MESSAGE$TOOLS$PROCESSFACTORY 等(均在 AbstractRunner.initBSFManagerdeclareBean)。

2. 按挂载点:能拿到什么

依据各挂载点实际调用 initBSFManager(...) 的代码整理。标记含义:

  • ● 通常可用且有业务含义
  • ○ 会注入,但常为 null / 空文档,使用前需判空
  • — 该挂载点基本用不到或不注入
挂载域 典型位置 WebUser CurrentDocument ParentDocument RelateDocument Params 要点 额外对象
表单 基本属性、控件值/选项/校验/显隐、按钮前后置 ● 当前业务文档 ● 子表等 ● 关联打开 formIddocId_flowType
视图·数据/列/水印 DQL/SQL、列值、列隐藏、水印 ● **查询表单**临时文档 视图查询参数、_keyword
视图·操作 名称脚本、动作前后置、只读/隐藏 ● 查询表单或选中行上下文 _selects(勾选文档 id,分号分隔)
流程·节点 审批人/时限/协办/抄送/回撤/挂起/催办/自动节点 ● 流程文档 _flowId_flowType_nextidsattitude
流程·路径 进入条件、送出校验、路径动作 ● 流程文档 同上
流程·子流程启动脚本 子流程节点 startup ● **主流程**文档 流程参数 $STARTUP_DOC:即将启动的子流程文档(SubFlowState.runScript
流程·子流程回调 子流程 callback ● 子流程文档 流程参数 $CALLBACK_DOC:主流程文档(CompleteState.runScript
Excel 导入 列值脚本、列校验 导入行映射成的临时文档 导入过程参数
菜单脚本链接 菜单 → 脚本链接 URL ○ 视调用传入 菜单/应用相关参数
Widget 内容/计算脚本 常为 nullPageWidgetRunTimeServiceImpl Widget 请求参数
定时任务 任务脚本 / 终止脚本 nullTask.execute ○ 空 Document application;session 为任务会话 getApplication() 等无用户 API
API 响应脚本 .apiresponseScript 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. 编写建议

  1. 表里写名称,代码里用函数:文档写 WebUser,脚本写 getWebUser();写 CurrentDocument,脚本写 getCurrentDocument()getItemValueAsString(...)(默认作用于当前文档)。
  2. 判空:Widget / 定时任务 / 公开 API 上不要假设 getWebUser()getCurrentDocument() 一定非空。
  3. 视图脚本的 CurrentDocument:多是查询表单临时文档,不是列表里某一行;行数据请结合 _selects 或列脚本上下文。
  4. 子流程特例:启动脚本里主单用 getCurrentDocument(),子单用 $STARTUP_DOC;回调里子单为当前文档,主单用 $CALLBACK_DOC
  5. 各挂载点的「位置 / 触发时机 / 返回值」见 where-to-use 各页;本页只统一**环境变量与参数**。