动作类型详解

规则全解:动作类型背后的逻辑引擎

规则(rules)把用户填的参数,翻译成对本体(Ontology)的编辑或平台里的其它效果。这一篇把规则的类型、取值与组合禁忌一次讲清。

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

一句话速览

规则全解:动作类型背后的逻辑引擎:规则(rules)把用户填的参数,翻译成对本体(Ontology)的编辑或平台里的其它效果。这一篇把规则的类型、取值与组合禁忌一次讲清。

1 两类效果
规则(rules)定义了动作类型的逻辑——它把参数(parameters)转换成本体编辑(Ontology edits)或其它效果
2 Ontology 规则清单
下面是一组常见的 Ontology 规则(编辑本体的规则)
3 属性从哪取值
当创建或修改对象与链接时,规则需要额外的"值"
4 组合与无效组合
动作类型可以组合多条 Ontology 规则
1

规则是什么:两类效果

规则(rules)定义了动作类型的逻辑。

规则(rules)定义了动作类型的逻辑——它把参数(parameters)转换成本体编辑(Ontology edits)或其它效果。规则大致分两类:

  • 编辑本体的规则:创建、修改、删除对象与链接;
  • 触发其它效果的规则:在 Foundry 里触发别的影响(通知、webhook、构建等)。

对"规则能搭出什么",可回看本系列《动作·浏览》;这一篇聚焦规则本身的语义、取值映射与组合限制。

2

Ontology 规则清单

编辑本体的规则有哪些,各自做什么。

下面是一组常见的 Ontology 规则(编辑本体的规则):

规则作用
Create object创建预定义类型的对象(主键必填)
Modify object(s)修改主键来自对象引用参数的已有对象(不能引用本动作新建的对象)
Create or modify object(s)有对象就改,没提供就新建(自动 ID 或用户提交主键)
Delete object(s)删除主键来自对象引用参数的已有对象
Create link(s) / Delete link创建/删除多对多链接(外键型要用 Modify object)
Function rule引用一个 Ontology edit function,输入来自参数;独占,不与其他 Ontology 规则组合
Interface 系列规则针对"实现某接口"的任意对象类型做增改删/链接
记住:当存在 Function rule 时,不能再配置其它 Ontology 规则,因为函数代码本身就能表达其它规则的全部能力。

动手练:把左边的描述点选到右边正确的规则名上。

3

值映射:属性从哪取值

创建/修改对象与链接时,每个属性都要映射到一个值来源。

当创建或修改对象与链接时,规则需要额外的"值"。修改对象时,规则还定义了改哪些属性;而每个属性又被映射到一个值来源(链接规则只能取对象引用参数):

  • From parameter(来自参数):一个与属性同类型的已有参数。默认每个新加的属性都会自动建一个同名参数并映射到它。
  • Object parameter property(对象参数属性):某个已有对象引用参数的属性,其类型要与被映射的属性类型匹配。
  • Static value(静态值):只存在于动作类型规则部分的固定值,用户在 Workshop、Slate、Object Views 里都改不了。
  • Current User / Time(当前用户 / 时间):字符串属性可取"当前用户",时间戳属性可取"提交时间"这类上下文值;和静态值一样,提交时不可交互、也不能在动作其它地方复用。

你还可以在同一次动作里既创建对象又建好多对多链接:先配 Create object 规则(对象类型带多对多链接),再在 Add property 下方点 Add link 选链接类型并配置。而一对多 / 一对一链接,只需改对象上的外键即可。

4

组合与无效组合

多条规则会被编译成"每对象一次编辑",顺序很重要。

动作类型可以组合多条 Ontology 规则。当定义了多条规则时,动作后端会把它们编译成每个对象一次编辑(如 Add object、Modify object(s)、Delete object(s))。例如:一条规则把某属性更新为 "A",同动作另一条规则把它更新为 "B",最终编辑就只是更新为 "B"——规则顺序影响最终结果

因此,以下对象编辑组合不被支持

  • 对象不能在"被新增或修之前"就被删除;
  • 对象不能在"被新增之前"就被修改;
  • 同一表单提交中,对象不能被创建两次。
一句话:顺序 = 结果。组合前先想清楚"先建后改还是先改后建"。
5

副作用规则与高级构建

除了编辑本体,还有两类触发"别的效果"的规则。

触发副作用(side effect)的规则

  • Notification(通知):发一条关于该动作的通知。可用参数自定义内容与接收人;用户可自行选择接收方式(站内推送、邮件或两者)。通知在所有编辑应用后发送,但内容基于"编辑前"的本体状态生成。
  • Webhooks:动作应用后向外部系统发请求,可把动作参数传进去。可配置为在编辑前或编辑后运行(对应 Writeback / 普通 webhook 的时机)。

触发构建(build)的高级规则

  • Schedule(计划):触发一次计划构建。动作参数可传进计划,进而传给构建内的参数化转换(parameterized transforms)。Foundry 会在构建开始后应用本体编辑。
The order of rules affects the final object edit.规则的顺序会影响最终的对象编辑。(组合多条规则时务必留意)

一页带走

① 规则分两类
编辑本体的规则 + 触发其它效果(通知/webhook/构建)的规则。
② 属性要映射值来源
From parameter / 对象参数属性 / Static value / 当前用户·时间。
③ 顺序 = 结果
多条规则编译成每对象一次编辑;先删后建等组合不被支持。
④ function 独占
Function rule 不能与其它 Ontology 规则共存;通知内容用编辑前状态。

延伸阅读 · 相关页面

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

常见问题速答 · FAQ

关于「规则全解:动作类型背后的逻辑引擎」,读者最常问的几个问题。

规则是什么:两类效果?
规则(rules)定义了动作类型的逻辑——它把参数(parameters)转换成本体编辑(Ontology edits)或其它效果。规则大致分两类。
Ontology 规则清单是什么?
下面是一组常见的 Ontology 规则(编辑本体的规则)。
值映射:属性从哪取值是什么?
当创建或修改对象与链接时,规则需要额外的"值"。修改对象时,规则还定义了改哪些属性;而每个属性又被映射到一个值来源(链接规则只能取对象引用参数)。
组合与无效组合是什么?
动作类型可以组合多条 Ontology 规则。当定义了多条规则时,动作后端会把它们编译成每个对象一次编辑(如 Add object、Modify object(s)、Delete object(s))。