动作类型详解

函数动作·总览(Function-backed Actions)

简单规则搞不定的复杂改动,可以让一个函数(function)来定义编辑逻辑。这一篇讲清 什么是函数动作、什么时候该用它、以及它的能力边界。

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

一句话速览

函数动作·总览(Function-backed Actions):简单规则搞不定的复杂改动,可以让一个函数(function)来定义编辑逻辑。这一篇讲清 什么是函数动作、什么时候该用它、以及它的能力边界。

1 让一个函数来决定"怎么改"
在动作类型里,规则(rules)定义了"动作被应用时对象该如何变化"
2 灵活也要守规矩
函数动作虽然灵活,但仍然受双重约束
1

一句话:让一个函数来决定"怎么改"

函数动作 = 用函数承载动作类型的编辑逻辑。

在动作类型里,规则(rules)定义了"动作被应用时对象该如何变化"。很多动作类型用简单规则就能搞定 (创建/修改/删除对象,或创建/删除对象间链接)。

action types can be configured to call a function that defines the logic of how objects should be modified. These action types are often referred to as function-backed actions. 动作类型可以被配置为调用一个函数,由它定义"对象该如何被修改"的逻辑。这类动作类型常被称为"函数动作"。

但当简单规则不够用时,你可以把动作类型配置成调用一个函数来定义编辑逻辑——这就是 函数动作(function-backed action)。借助函数,你可以构造任意复杂度的动作:读取任意数量的对象、按需修改对象。

2

什么时候该用函数动作?

简单规则表达不了的改动,就交给函数。

改一组关联对象
例如把某 Incident 的状态置为 Closed,同时把所有关联 Alert 的状态置为 Resolved。
复杂计算后写回
基于较复杂的业务逻辑(读多个对象的数据)算出一个值,再写回某对象属性。
批量建多种对象
一次性创建多种不同类型的对象,并在它们之间建立链接。
任意复杂度
只要逻辑写得出,函数就能承载——这是它相对简单规则的最大优势。
3

函数动作 vs 简单规则

不是替代,而是互补。

× 只用简单规则
局限 · 只能表达"创建/修改/删除对象"或"建/删链接" · 跨多个关联对象、复杂读取与计算的改动难表达 · 一次创建多类对象并互连较繁琐
✓ 上函数动作
获得 · 任意复杂逻辑:读任意多对象、按需改 · 把"计算 + 改对象"打包进一次动作 · 适合批量、跨对象、条件复杂的场景
选择原则:能用简单规则清楚表达的,就别上函数;当"改什么"依赖复杂读取/计算、或要跨多个关联对象时,再选函数动作。
4

限制:灵活也要守规矩

受动作类型上限与函数执行上限双重约束。

函数动作虽然灵活,但仍然受双重约束:

  • 动作类型上限(action type limits):动作类型本身的规模/数量等限制仍然适用。
  • 函数执行上限(function execution limits):函数运行的时间、资源等限制同样适用。
设计提示:因为函数动作背后是真实的函数执行,写函数时要留意执行上限——尤其批量或跨大量对象时, 必要时考虑后面的"批量执行"篇来优化。
5

上手路径

从"函数入门"到"接到动作"。

第 1 步学函数基础
先按函数文档入门,建一个基础函数仓库并发布一个函数。
参考 Functions 的 Getting started 与 Functions on objects 教程。
第 2 步写 Ontology 编辑函数
用 Ontology edits 参考,写一个带 @OntologyEditFunction() 标注的编辑函数。
注意:用于动作的函数要用 @OntologyEditFunction() 而非 @Function()。
第 3 步接到动作类型
在动作类型的 Rules 里加一条 Function 规则,把函数接上。
详见下一篇《函数动作·开始》。

提示:点击每条可展开更多细节。

6

动手:这个场景该用函数动作吗?

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

一页带走

① 函数动作 = 函数承载编辑
把"怎么改"的逻辑交给一个函数定义。
② 何时用
跨关联对象、复杂计算写回、批量建多类对象并互连。
③ 与简单规则互补
简单规则能表达的就别上函数;表达不了再用。
④ 双重限制
同时受动作类型上限与函数执行上限约束。

延伸阅读 · 相关页面

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

常见问题速答 · FAQ

关于「函数动作·总览(Function-backed Actions)」,读者最常问的几个问题。

一句话速览是什么?
函数动作·总览(Function-backed Actions):简单规则搞不定的复杂改动,可以让一个函数(function)来定义编辑逻辑。这一篇讲清 什么是函数动作、什么时候该用它、以及它的能力边界。
一句话:让一个函数来决定"怎么改"?
在动作类型里,规则(rules)定义了"动作被应用时对象该如何变化"。很多动作类型用简单规则就能搞定 (创建/修改/删除对象,或创建/删除对象间链接)。