动作类型详解

函数动作·开始(Getting Started)

这一篇是实操手册:从写一个 Ontology 编辑函数,到把它接进动作类型, 再到管理函数版本。跟着做,你就能跑通第一个函数动作。

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

一句话速览

函数动作·开始(Getting Started):这一篇是实操手册:从写一个 Ontology 编辑函数,到把它接进动作类型,再到管理函数版本。跟着做,你就能跑通第一个函数动作。

1 先把函数准备好
动手前,需要先写一个能完成你想要的编辑的 Ontology 编辑函数(Ontology edit function)
2 写 Ontology 编辑函数
教程里给出的例子函数(TypeScript)长这样
3 函数版本与自动升级
你也可以选择开启自动升级(auto upgrade):在 Rules 区选中 Function 参数,于 Function 下拉里选…
1

前置条件:先把函数准备好

函数动作的前提,是一个已发布、可被动作读取的 Ontology 编辑函数。

动手前,需要先写一个能完成你想要的编辑的 Ontology 编辑函数(Ontology edit function)。这要求你:

  • 建仓库functions on objects 的 TypeScript 模板初始化一个代码仓库。
  • 导入对象类型把动作要用到的对象类型导入到你的仓库中。
  • 发布函数把 Ontology 编辑函数发布(publish)出去,动作才能读取它。
关键标注:用于动作类型的函数,必须用 @OntologyEditFunction() 标注, 而不是普通的 @Function()。这是它能被动作接上的前提。
2

写 Ontology 编辑函数

一个最小的例子:把优先级前缀加到工单标题上。

教程里给出的例子函数(TypeScript)长这样:

@OntologyEditFunction() public addPriorityToTitle(ticket: DemoTicket): void { let newTitle: string = "[" + ticket.ticketPriority + "]" + ticket.ticketTitle; ticket.ticketTitle = newTitle; }

它接收一个 DemoTicket 对象,读它的优先级,构造出带前缀的新标题,再写回该对象的 ticketTitle 属性。 注意签名:参数是本体对象,返回 void——编辑通过"修改对象"本身完成。

写回方式:这类函数通过直接修改传入的对象属性来产生编辑,框架会据此生成本体编辑(Ontology edits)。
3

把函数接到动作类型

在 Rules 里加一条 Function 规则,搜索并选函数。

步骤 1加 Function 规则
在动作类型的 Rules 区,添加一条类型为 Function 的规则。
函数规则不能与其它 Ontology 规则混用在同一动作里。
步骤 2选已发布函数
搜索你在前置里发布的那个函数,并挑选最新版本
选定后,函数的所有输入会自动变成参数并加入 Parameters 标签(例如生成一个 DemoTicket 的 Object reference 参数)。
步骤 3对齐输入并保存
把函数输入配置到与动作参数对应;按需进一步自定义参数。
保存后,即可像其它动作一样跨平台配置使用。

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

4

函数版本与自动升级

默认不自动跟随函数改动;可开启 auto upgrade。

默认行为:如果函数逻辑改了,动作不会自动更新去匹配它。你必须回到动作的 Rules 区,手动升级动作所引用的函数版本(例如从 0.1.2 升到新版本)。

你也可以选择开启自动升级(auto upgrade):在 Rules 区选中 Function 参数,于 Function 下拉里选一个 最小版本并启用 Auto upgrade。这会让动作依赖该函数的版本区间(所有向后兼容的版本,如小版本/补丁升级), 并在运行时解析具体版本。

注意:形如 0.y.z 的版本禁用自动升级——这类版本留给初期开发,API 与行为可能频繁变动,不应视为稳定。
5

安全与注意:三个坑

自动升级带来便利,也带来风险。

安全 Security
若开启自动升级,没有动作编辑权限的用户,可能通过修改被引用的函数来改变动作行为——因为函数的编辑权限不绑定动作的权限。
破坏性变更 Breaking changes
自动升级可能因糟糕的函数发布引入了破坏性变更,导致动作执行失败。
来源 Provenance
动作的来源依据所选最小函数版本的来源设定;若新版本返回该来源之外的编辑(如多了一个对象类型),执行会失败。
来源范围
目前来源仅包含动作运行时可能编辑的对象类型。
6

动手:步骤归类

给每个节点选正确的操作。点选项看解析。

一页带走

① 前置
TypeScript 模板建仓库、导入对象类型、发布 @OntologyEditFunction() 函数。
② 接动作
Rules 加 Function 规则,选已发布函数最新版;输入自动成参数。
③ 版本
默认不自动跟随,需手动升级;可开 auto upgrade(0.y.z 禁用)。
④ 注意
auto upgrade 的安全/破坏性变更/来源三坑要留意。

延伸阅读 · 相关页面

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

常见问题速答 · FAQ

关于「函数动作·开始(Getting Started)」,读者最常问的几个问题。

前置条件:先把函数准备好是什么?
动手前,需要先写一个能完成你想要的编辑的 Ontology 编辑函数(Ontology edit function)。这要求你。
写 Ontology 编辑函数是什么?
教程里给出的例子函数(TypeScript)长这样。
函数版本与自动升级是什么?
你也可以选择开启自动升级(auto upgrade):在 Rules 区选中 Function 参数,于 Function 下拉里选一个 最小版本并启用 Auto upgrade。