动作类型详解

不止改字段:动作类型还能做哪些事

快速开始只做了"改一个属性",而动作类型(action type)的配置面能表达远不止属性编辑——这一篇逐一认识可用的规则。

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

一句话速览

不止改字段:动作类型还能做哪些事:快速开始只做了"改一个属性",而动作类型(action type)的配置面能表达远不止属性编辑——这一篇逐一认识可用的规则。

1 从"改一个属性"到"改变本体"
快速开始里建的那个动作类型(action type),本质是一条"修改单个对象某个属性"的规则(rule)
2 向导 vs 详情页
新建向导会配置一个新动作类型的第一条规则:在 Action type 步打开 Object 标签、选对象类型,再在 Object a…
3 创建、修改、删除对象
快速开始改的是"用户选中的对象"
4 管理与对象之间的链接
该用哪条规则,取决于链接类型(link type)的基数(cardinality)
1

从"改一个属性"到"改变本体"

动作类型能表达的能力,远超一次属性编辑。

快速开始里建的那个动作类型(action type),本质是一条"修改单个对象某个属性"的规则(rule)。但同一个配置面还能让你:创建和删除对象、管理对象之间的链接(link)、用函数(function)跑自定义逻辑、调用外部系统、通知用户、触发构建(build),以及合并场景(scenario)里的暂存编辑。

这一篇用快速开始里的 Demo Ticket 对象类型当例子,方便你接着同一个本体(Ontology)往下做。下面这张表把"想达成的目标"和"该加哪条规则"对应起来。

想做的事该加的规则
创建一个新对象Create object
用户没提供对象时也能建Create or modify object
删除已有对象Delete object
关联 / 解除两个对象Create link / Delete link
规则描述不清的逻辑Run function
通知有变动的用户Notification
应用后重算数据集Schedule

下面动手练:把左边的"目标"点选到右边正确的规则上。

2

规则加在哪里:向导 vs 详情页

规则(rules)可以从两个地方添加。

新建向导会配置一个新动作类型的第一条规则:在 Action type 步打开 Object 标签、选对象类型,再在 Object actions 下选这个动作要做的改动,并在 Mapping 步挑选包含的属性。

对于一个已经存在的动作类型,则在 Ontology Manager 里打开它,切到 Rules 标签,点 Add new rule 选择需要的规则。本页讲到的每条规则都能在这里加。

重要:单个动作类型可以组合多条规则;但 Run function 规则是例外——它不能和其他 Ontology 规则组合,因为函数代码本身就能表达其他规则能做的全部事情。
3

创建、修改、删除对象

这几条规则直接增删改本体里的对象。

快速开始改的是"用户选中的对象"。若想改成新建一张工单,就加一条 Create object 规则并选 Demo Ticket 对象类型。对象类型的主键(本例是 Ticket ID)是必填属性,必须填上;再用 Add propertyTitleStatusPriority 等其它属性加进来。

每加一个属性,系统会自动创建一个同名参数(parameter)并把它映射到该属性。你也可以把属性映射到"对象引用参数的某个属性"、一个用户改不了的静态值(static value),或"当前用户 / 提交时间"。

另两条相关规则:

  • Create or modify object:改对象引用参数提供的对象;若没提供,则新建一个(自动生成唯一 ID,或用用户提交的主键)。
  • Delete object:删除对象引用参数提供的对象;它不能引用同一个动作里新建的对象。
注意组合顺序:当动作含多条规则时,Foundry 会把它们编译成"每个对象一次编辑",规则顺序会影响结果,且有些组合不被支持(见《动作·规则》)。
4

管理与对象之间的链接

动作既能改属性,也能维护对象间的关系。

该用哪条规则,取决于链接类型(link type)的基数(cardinality):

  • 多对多(many-to-many):Create link 规则关联两个由对象引用参数提供的对象,或加 Delete link 规则解除关系。
  • 一对一 / 一对多:关系存在对象的外键(foreign key)属性上,要用 Modify object 规则去设置或清空那个外键属性,而不是用链接规则。

你还可以在同一个动作里既创建对象又建好它的多对多链接:先配置 Create object 规则(对象类型要带多对多链接类型),再在 Add property 下方点 Add link 选择链接类型并配置。

5

函数、外部系统与其它能力

当声明式映射不够用时,还有这些规则可用。

Run function(跑自定义逻辑)

规则用"声明式映射"描述编辑,但有时不够——比如要改"用户选中的对象所关联的所有对象"、要从读多个对象的业务逻辑里算出某属性、或要建多种类型的对象并互相链接。这时就加一条 Run function 规则,选已发布的 Ontology edit function(本体编辑函数)及其版本。函数的每个输入都会变成一个参数,可像其它参数一样加约束。注意:它不能和其他 Ontology 规则组合。默认动作停留在你选的版本上,也可开启 auto upgrades 在运行时解析版本区间。

Webhook(调用外部系统)

当某个外部系统才是流程的"真相源"时,webhook 规则会在应用动作时向该系统发请求,并可以把动作参数作为输入传过去。两条规则时机不同:

  • Webhook:在对象编辑应用之后发送(Side Effects 组);可有多个;失败不展示给终端用户。
  • Writeback Webhook:在任何其它规则评估之前发送(External Request 组);失败则编辑不应用、用户可见失败;只能有一个,其输出参数可供后续规则使用。

Notification / Schedule / Apply scenario / Interface 规则

Notification 规则在动作应用后通知用户(内容用动作前本体状态生成);Schedule 规则(Advanced 组)在动作应用后触发一次构建;Apply scenario 把场景里的暂存编辑作为单笔事务提交(需要持有场景 RID 的 Scenario 参数);实现某个接口(interface)的对象类型,则有专门的 Interface 规则族(Create/Modify/Delete object of interface 等)。

Action types can express much more than a property edit.动作类型能表达的,远不止一次属性编辑。

一页带走

① 规则是能力的入口
Create/Delete object、link、function、webhook、notification、schedule 都在 Rules 里加。
② 两条添加路径
新建向导配第一条规则;已有动作在 Ontology Manager 的 Rules 标签追加。
③ 链接看基数
多对多用 link 规则,一对一/多对多用 Modify object 改外键。
④ function 是例外
Run function 不能与其它 Ontology 规则组合,它 alone 表达一切。

延伸阅读 · 相关页面

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

常见问题速答 · FAQ

关于「不止改字段:动作类型还能做哪些事」,读者最常问的几个问题。

从"改一个属性"到"改变本体"是什么?
快速开始里建的那个动作类型(action type),本质是一条"修改单个对象某个属性"的规则(rule)。但同一个配置面还能让你:创建和删除对象、管理对象之间的链接(link)、用函数(function)跑自定义逻辑、调用外部系统、通知用户、触发构建(bui…
规则加在哪里:向导 vs 详情页是什么?
新建向导会配置一个新动作类型的第一条规则:在 Action type 步打开 Object 标签、选对象类型,再在 Object actions 下选这个动作要做的改动,并在 Mapping 步挑选包含的属性。
创建、修改、删除对象是什么?
快速开始改的是"用户选中的对象"。若想改成新建一张工单,就加一条 Create object 规则并选 Demo Ticket 对象类型。对象类型的主键(本例是 Ticket ID)是必填属性,必须填上。
管理与对象之间的链接是什么?
该用哪条规则,取决于链接类型(link type)的基数(cardinality)。