动作类型详解

动作·结构体(Actions on Structs)

结构体(struct)属性把多个字段打包成一个值。这一篇讲怎么用结构体参数(struct parameter) 来创建和修改带 struct 属性的对象,以及它的映射、默认值与约束规则。

原文 Palantir Foundry · Action types 预计阅读 9 分钟 互动演示 + 6 道测验
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/action-types/actions-on-structs/
原始标题:Action types · Actions on structs

一句话速览

动作·结构体(Actions on Structs):结构体(struct)属性把多个字段打包成一个值。这一篇讲怎么用结构体参数(struct parameter)来创建和修改带 struct 属性的对象,以及它的映射、默认值与约束规…

1 用 struct 参数喂给 struct 属性
结构体属性(struct property)的值,可以通过动作来创建和修改——值由动作里的一个 结构体参数(struct param…
2 定义作用于 struct 属性的动作
用带 struct 参数的动作,你可以创建和修改带 struct 属性的对象类型
3 表单呈现与默认值
在动作表单(action form)里,struct 参数和别的参数一样能填,只是它的字段会成组渲染,而不是散开成独立字段
4 字段级约束
约束(constraints)可以像普通参数一样,逐字段配置在 struct 参数字段上
1

一句话:用 struct 参数喂给 struct 属性

结构体属性的值,只能通过结构体参数来提供。

结构体属性(struct property)的值,可以通过动作来创建和修改——值由动作里的一个 结构体参数(struct parameter)提供。

A struct parameter is a parameter of base type STRUCT, where the type contains nested parameter fields that have their own individual names and base types. 结构体参数是一种基础类型为 STRUCT 的参数;其类型包含嵌套的参数字段,每个字段各有自己的名称和基础类型。

也就是说:一个 STRUCT 类型的参数,内部可以嵌套多个字段(如 summaryresolutionTimeowner), 分别有自己的基础类型。它专门用来给一个 struct 属性"整体供货"。

支持的基础类型:struct 参数字段支持 BOOLEANDATEDOUBLEGEOPOINTINTEGERLONGSTRINGTIMESTAMP
2

定义作用于 struct 属性的动作

要把 struct 参数的每个字段,映射(map)到 struct 属性的对应字段。

用带 struct 参数的动作,你可以创建和修改带 struct 属性的对象类型。struct 属性的值在一个映射到该属性的 struct 参数里提交; struct 属性的每个字段都要映射到 struct 参数的某个具体字段

映射要"完整且类型匹配":① struct 属性与 struct 参数之间的映射必须完整——属性每个字段都要映射到参数的字段; ② 参数字段的基础类型必须与所映射的属性字段基础类型一致。

如果 struct 属性类型发生破坏性变更(新增字段、删除字段、改字段基础类型),相关的动作类型也必须跟着改,否则会出问题。

3

表单呈现与默认值

字段在表单里成组出现;默认值可取自某对象的同类属性。

动作表单(action form)里,struct 参数和别的参数一样能填,只是它的字段会成组渲染,而不是散开成独立字段。

默认值(default values)逐字段定义的:每个参数字段映射到某个指定对象类型 struct 属性的字段。 必须给参数字段的所有字段都定义默认值,且都映射到同一对象类型 struct 属性的字段。 充当默认值的对象由动作里一个 ObjectReference 参数指定——提交时提供的那个对象,其 struct 属性字段值会自动填进对应的参数字段。

默认值的来源限制:只有单一对象类型的 struct 属性字段能充当默认值; 静态值等其它方式不被支持。
4

字段级约束

每个字段可单独设约束;整组必须全过才有效。

约束(constraints)可以像普通参数一样,逐字段配置在 struct 参数字段上。 例如给字符串字段加一个"长度在 10 到 500 之间"的约束,那么 summary 字段就至少要 10 个字符、最多 500 个字符。

整组才有效:一个 struct 参数值,只有当所有字段都满足约束时才算有效。 只要有一个字段(比如不足 10 字符的 summary)不达标,用户就无法提交整个 struct 参数值。
点我看 struct 参数"何时算有效"的判定 →
5

局限:记住这四条

struct 属性的进出通道相当受限。

  • struct 属性值只能通过 struct 参数创建或修改;静态值、引用对象属性等方式都不支持。
  • 一个 struct 属性只能通过单个 struct 参数创建或修改,动作里不能有多个参数映射到同一 struct 属性。
  • struct 参数只能用来创建/修改 struct 属性;其字段不能单独拿去创建/修改非 struct 属性。
  • 只有单一对象类型的 struct 属性字段能作默认值,静态值等不被支持。
6

动手:关于 struct 参数,哪句对?

逐个判断。点选项看解析。

一页带走

① struct 参数
基础类型 STRUCT,内含嵌套字段,专给 struct 属性整体供货。
② 映射要完整
属性每字段都映射到参数字段,且基础类型一致。
③ 默认值 + 约束
默认值逐字段、取自单一对象类型;约束逐字段,整组全过才有效。
④ 局限
只经 struct 参数、单一参数映射、只能改 struct 属性、默认值限单一类型。

延伸阅读 · 相关页面

按主题横向跳转,不必顺着目录一篇篇读。

常见问题速答 · FAQ

关于「动作·结构体(Actions on Structs)」,读者最常问的几个问题。

定义作用于 struct 属性的动作是什么?
用带 struct 参数的动作,你可以创建和修改带 struct 属性的对象类型。struct 属性的值在一个映射到该属性的 struct 参数里提交;struct 属性的每个字段都要映射到 struct 参数的某个具体字段。
表单呈现与默认值是什么?
在动作表单(action form)里,struct 参数和别的参数一样能填,只是它的字段会成组渲染,而不是散开成独立字段。
字段级约束是什么?
约束(constraints)可以像普通参数一样,逐字段配置在 struct 参数字段上。例如给字符串字段加一个"长度在 10 到 500 之间"的约束,那么 summary 字段就至少要 10 个字符、最多 500 个字符。