Skip to content

hooks.action.ts

hooks.action.ts是后端嵌入式脚本的约定文件名。

hooks.action.ts分系统级别、项目级别、应用级别,常用于监听系统事件、定义程序流脚本或后端表达式函数脚本。在约定的位置存在hooks.action.ts文件时(具体见脚本文件组织),系统就会自动使用它。

ts是typescript文件,一种js的扩展语法,见 https://www.typescriptlang.org/ 最终系统会自动将ts文件编译成java的字节码在jvm中运行。

TIP

什么时候需要export函数?

  1. 要导出给其它脚本文件调用的函数。
  2. 由系统定义并在特定情况下调用的函数,比如嵌入脚本中的监听事件函数数据加工脚本节点函数等。
  3. 需要通过web请求访问的函数
  4. 需要程序流的执行后端脚本节点执行的函数

监听事件

监听事件函数由系统按约定调用。需要在对应层级的 hooks.action.ts 中导出同名函数,函数参数和返回值以 DTS 为准:

系统级事件写在 /sysdata/settings/hooks.action.ts,用于处理服务器启动关闭、登录、权限、单点登录等全局逻辑。

事件函数触发时机
onBeforeServerStartup服务器启动前,系统内部初始化完成但启动状态还未标记为已启动时。
onDidServerStartup服务器启动完成后。
onBeforeServerShutdown服务器准备关闭时。
onCustomWebAPI收到 /api/... 请求,且没有匹配到系统内置 API 时。
onFilter系统接收到任意 Web 请求时。
onDidProjectCreate元数据项目创建成功后。
onDidProjectDelete元数据项目即将删除时。
onPersistEvents系统日志事件准备写入数据库前。
onVerifyLoginPassword使用用户名密码登录并校验账号密码时。
onVerifyLoginUser无密码登录场景下,需要根据用户 ID 获取登录用户时。
onEncryptUserPassword需要用脚本加密用户明文密码时。
onCompareUserPassword需要用脚本比较明文密码和数据库记录密码时。
onResolveUserGroups登录过程中需要动态决定用户所属用户组时。
onDidSignin用户登录成功后。
onAccessTokenSigninURL 携带 access_token 登录,且系统默认 token 库没有命中时。
onCheckPermission用户主动查看或操作系统资源,需要进行权限判断时。
onSSOCheckAppSupported脚本单点登录中,需要判断当前 App 或浏览器是否受支持时。
onSSOGetAuthRedirectURL脚本单点登录中,需要构造第三方认证授权地址时。
onSSOCheckTicket第三方授权回调后,需要校验票据并获取用户信息时。
onSSOGetLogoutRedirectURL本系统注销后,需要构造第三方系统注销地址时。

项目级事件写在 {project}/settings/hooks.action.ts,应用级事件写在 {project}/app/{app}/hooks.action.ts。应用内操作调用应用级脚本,项目内操作调用项目级脚本,不会同时调用两级脚本。

事件函数触发时机
onPrepareImportData导入模型数据时,系统读取一批导入数据并即将执行导入前。
onInitImportDataResultField导入模型数据前,系统初始化导入结果文件字段时。

程序流脚本

hooks.action.ts 中可以定义 action_ 开头的函数,供程序流的执行后端脚本节点调用。函数参数、返回值和节点配置方式见后端程序流脚本节点

自定义表达式函数

需要把服务端脚本逻辑接入表达式时,见后端表达式函数脚本

微信公众号微信公众号:山川软件