Astro轻应用 AstroZero-使用校验器和触发器:为对象配置内嵌触发器

时间:2023-11-01 16:25:38

为对象配置内嵌触发器

AstroZero支持用户给对象增加内嵌触发器,实现在增/删/改对象的记录数据时,自动执行内嵌触发器脚本(该脚本由用户自定义,其实就是一段普通的TypeScript脚本,没有输入输出参数)。例如,在对象记录插入前、记录插入后、记录更新前、记录更新后、记录删除前或者记录删除后,自动执行内嵌触发器脚本。

下面以之前创建的对象“CNAME__Class__CST”为例,创建一个记录删除后的触发器,实现在删除一条“CNAME__Class__CST”对象的记录后,把相应的“name”、“CNAME__number__CST”数据记录到日志对象“CNAME__log__CST”中。在此需要提前创建如下的日志对象“CNAME__log__CST”,如何创建请参考上一节中对象“CNAME__Class__CST”的创建过程。

表2 CNAME__log__CST”对象的字段

对象

字段来源

字段名称

字段数据类型

CNAME__log__CST

自定义字段,手动创建

CNAME__operator__CST

文本,数据长度36。

自定义字段,手动创建

CNAME__className__CST

文本

自定义字段,手动创建

CNAME__classNumber__CST

数字,表示班级编号。

  1. 在对象“CNAME__Class__CST”配置页面,单击“内嵌触发器”页签,再单击“新建”。

    图5 新建内嵌触发器

  2. 输入触发器的基本信息,单击“保存”。

    图6 输入信息
    表3 内嵌触发器参数说明

    参数

    参数说明

    标签

    内嵌触发器在用户界面展示的名称。

    名称

    内嵌触发器的名称,单击后默认自动生成,与“标签”值保持一致。

    事件触发时机

    内嵌触发器在什么时候生效,可直接在下拉框中选择。即在系统执行如下某动作时,自动执行触发器的脚本:

    • 插入前:记录插入操作前触发。
    • 修改前:记录更新操作前触发。
    • 删除前:记录删除操作前触发。
    • 插入后:记录插入操作后触发。
    • 修改后:记录更新操作后触发。
    • 删除后:记录删除操作后触发。

    描述

    内嵌触发器的描述。

  3. 编写触发器的脚本,其中对象名称、字段名称和之前创建的保持一致。

    对象的内嵌触发器脚本,其实就是一段普通的TypeScript脚本,没有输入输出参数。在脚本中可以通过“对象名.字段名”,来访问当前记录的具体字段值。针对“事件触发时机”为“修改前”或者“修改后”的触发器(即触发器脚本执行条件是对象记录更新前、记录更新后),脚本代码中通过对象名.字段名获取到的都是当前记录的具体字段值,目前不支持获取更新前的记录值。
    //test_delete_triggerimport * as db from 'db';import * as context from 'context';let name = CNAME__Class__CST.name;let CNAME__number__CST = CNAME__Class__CST.CNAME__number__CST;let logObj = db.dynamicObject('CNAME__log__CST');logObj.insert({    "CNAME__operator__CST": context.getUserId(),    "CNAME__className__CST": name,    "CNAME__classNumber__CST": CNAME__number__CST,});

    关于脚本的更多说明,请参考脚本开发

  4. 编辑后单击上方的,进行保存。
  5. 保存成功后,单击,启用脚本。

    启用后在内嵌触发器列表,可查看到当前触发器状态为“ON”,表示当触发条件满足时,AstroZero会自动执行该触发器脚本。
    图7 启用触发器

  6. 验证触发器。

    1. 在对象“CNAME__Class__CST”配置页面,单击“布局”页签,在“Class Records”后单击

      对象名 Records”显示对象数据的记录列表。预览该页面可增、删、改、查对象数据。

    2. 在布局的预览页面,单击“添加”,新增并保存,增加数据,为下一步删除数据做准备。
      图8 如何新增数据
    3. 单击数据所在列的“删除”,删除数据。
      图9 删除数据
    4. 在对象“CNAME__log__CST”配置页面,单击“布局”页签,在“log Records”后单击
      图10 预览Records页面
      查看到对象“CNAME__log__CST”数据列表中,已记录一条刚删除的“CNAME__Class__CST”数据,触发器生效。
      图11 触发器脚本新增的一条数据

support.huaweicloud.com/usermanual-astrozero/astrozero_05_0036.html