标准对象非计算属性/链接可设置数据重写,用于增改对象数据后,对指定属性/链接,通过表达式重写值,可实现自动赋值、联动修改值等功能。数据重写可能会使保存数据变慢,请合理使用
属性/链接属性栏中设置数据重写规则
运行时机包括:新建、更新数据后,各运行时机下至多新建一条数据重写规则
运行时机针对最后生成的DeepQL语句,例如:在DeepModel数据管理、UX页面新建包含自我链接的数据,由于对应DeepQL语句实际为先新建数据,再更新自我链接,会分别触发运行时机为新建、更新的数据重写规则
可分别新建一条新建后、一条更新后的数据重写规则,执行语句不同
开启运行时机含更新后,可新建一条新建与更新后的数据重写规则,即执行语句相同
执行语句:数据重写执行的DeepQL语句,是一个赋值给属性/链接的表达式,即property := (expr)
、link := (expr)
中:=
的右边部分。类似计算属性/链接的DeepQL语句,不同于查询器中运行的完整查询语句
属性表达式需符合属性类型与基数,链接表达式需符合链接对象与基数。如不符合,保存数据时,保存失败并报错
可使用__old__、__subject__分别表示操作前后数据(单条,对应一条操作数据),简单场景下可忽略__subject__.
前缀。运行时机为新建时可使用__subject__,为更新时可使用__old__、__subject__。保存后回显SDL对应内容
支持以下属性类型与基数、链接对象与基数,可在执行语句中直接输入固定值
分类 |
属性类型/链接对象 |
基数 |
固定值示例 |
---|---|---|---|
非计算属性 |
文本 |
单选 |
‘文本’ |
非计算属性 |
多语言文本 |
单选 |
to_json(‘{“en”:”multi-language”,”zh-cn”:”多语言”}’) |
非计算属性 |
布尔值 |
单选 |
true、false |
非计算属性 |
整数 |
单选 |
12345 |
非计算属性 |
小数 |
单选 |
<decimal>123.45 |
非计算属性 |
日期时间 |
单选 |
<cal::local_datetime>’2025-02-15 12:30:00’、<cal::local_datetime>’2025-02-15T12:30:00’ |
非计算属性 |
枚举值 |
单选 |
输入枚举值编码,例如:’feature’ |
非计算链接 |
所有链接对象 |
单选 |
输入对象数据,可通过 |
可用于业务主键自动填id值,替换业务规则实现的随机字符。例如:业务主键属性code新建如下规则
运行时机 |
执行语句 |
---|---|
新建 |
<str>.id |
可用于自动生成数据创建、更新时间,即填当前时间,替换业务规则实现的数据创建、更新时间。例如:日期时间属性create_time(创建时间)、modified_time(更新时间)分别新建如下规则
属性/链接编码 |
运行时机 |
执行语句 |
---|---|---|
create_time |
新建 |
cal::local_datetime_of_statement() |
modified_time |
更新 |
cal::local_datetime_of_statement() |
可用于自动生成数据创建、更新人,即填当前用户ID,替换业务规则实现的数据创建、更新人。例如:文本属性create_user_id(创建用户ID)、modified_user_id(更新用户ID)分别新建如下规则
属性/链接编码 |
运行时机 |
执行语句 |
---|---|---|
create_user_id |
新建 |
|
modified_user_id |
更新 |
|
如果想要在数据有变化后,才自动更新数据更新人与时间,可通过比较操作前后数据,上述规则调整如下
属性/链接编码 |
运行时机 |
执行语句 |
---|---|---|
modified_time |
更新 |
(cal::local_datetime_of_statement() if (<json>__subject__ { ** } != <json>__old__ { ** }) else __old__.modified_time) |
modified_user_id |
更新 |
(global spacezauoyn::current_user_id if (<json>__subject__ { ** } != <json>__old__ { ** }) else __old__.modified_user_id) |
可用于属性/链接输入为空时的自动赋值。以任务对象Task为例,日期时间属性p_start_date(计划开始时间)可新建规则,判断为空时赋默认值,提供以下四种场景的表达式。其中,一个任务属于一个需求,一个需求对应一个迭代,迭代对象Iteration有一个记录迭代开始时间的属性start_date
场景 |
运行时机 |
执行语句 |
---|---|---|
为空则取当前时间 |
新建 |
(.p_start_date ?? cal::local_datetime_of_statement()) |
为空则取当前时间加7天 |
新建 |
(.p_start_date ?? (cal::local_datetime_of_statement() + <cal::relative_duration>’7 days’)) |
为空则取所属需求的迭代开始时间 |
新建 |
(.p_start_date ?? .requirement.iteration.start_date) |
为空则取当前迭代的开始时间 |
新建 |
(.p_start_date ?? (global current_iteration).start_date) |
数据重写可用于联动修改值,类似计算属性/链接,但值会落库。以需求对象Requirement为例,业务描述属性description新建一条新建与更新后的规则,拼接需求组件与名称,例如:【DeepModel】数据重写需求
运行时机 |
执行语句 |
---|---|
新建、更新 |
(((’【’ ++ <str>json_get(.component.name, ‘zh-cn’)) ++ ‘】’) ++ .name) |
回到顶部
咨询热线