全部文档
文档中心DeepModel功能数据重写

数据重写

标准对象非计算属性/链接可设置数据重写,用于增改对象数据后,对指定属性/链接,通过表达式重写值,可实现自动赋值、联动修改值等功能。数据重写可能会使保存数据变慢,请合理使用

属性/链接属性栏中设置数据重写规则

运行时机包括:新建、更新数据后,各运行时机下至多新建一条数据重写规则

  • 运行时机针对最后生成的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’

非计算链接

所有链接对象

单选

输入对象数据,可通过<${对象编码}>'${业务主键}'强转业务主键为对象数据,例如:<Component>’COMP_005’、<spacezauoyn::SystemUser>’62d7ea9f-cd92-4630-a173-37b18ef91fd0’

  • 可用于业务主键自动填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

新建

global ${空间模块}::current_user_id,例如:global spacezauoyn::current_user_id

modified_user_id

更新

global ${空间模块}::current_user_id,例如:global spacezauoyn::current_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)

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send