动作类型详解

动作·接口(Actions on Interfaces)

接口(interface)让"一次定义、作用于所有实现它的对象"成为可能。这一篇讲如何在动作里使用接口: 接口动作规则与接口引用参数,以及它们的能力边界。

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

一句话速览

动作·接口(Actions on Interfaces):接口(interface)让"一次定义、作用于所有实现它的对象"成为可能。这一篇讲如何在动作里使用接口:接口动作规则与接口引用参数,以及它们的能力边界。

1 一次定义,作用于所有实现该接口的对象
你可以创建通用动作(generic actions),作用于你选定的某个接口(interface)下的所有对象
2 先想清楚再建
提交前务必想清楚:哪些用户有权在所有实现类型上创建 / 修改 / 删除对象
1

一句话:一次定义,作用于所有实现该接口的对象

创建适用于某个接口下全部对象的"通用动作"。

你可以创建通用动作(generic actions),作用于你选定的某个接口(interface)下的所有对象。 换句话说:只要一个对象类型实现了该接口,这个动作就能用在它身上。

You can create generic actions that apply to all objects of a chosen interface. 你可以创建适用于某个选定接口下所有对象的通用动作。

接口层面还有两个相关概念:接口动作类型约束(interface action type constraints)描述"实现该接口的对象类型应当用具体动作类型满足的能力"—— 它是一个接口级的"动作契约";而动作规则(action rules)描述动作类型被提交时真正执行的编辑。目前前者是本体管理器里的建模/映射功能,并非终端用户应用或 SDK 的调用面。

2

两种用法:接口动作规则 + 接口引用参数

从动作内部使用接口,主要有两种方式。

接口动作规则 Interface action rules
配置了接口的对象进行创建、修改、删除、链接。规则作用于"实现接口的对象"。
接口引用参数 Interface reference parameters
引用"实现该接口的"对象。这是 Modify / Delete 接口动作规则的必填项,也可用于任何其他动作规则。
类比:接口引用参数(interface reference)很像对象引用参数(object reference),区别在于—— 前者列出任何实现了该接口类型的对象,后者只锁定单一对象类型。
3

怎么创建一个接口动作类型

本体管理器里,从 New 菜单选 Action type。

步骤 1选择接口与规则类型
在 Ontology Manager 的 New 菜单选 Action type,于 Interfaces 下挑选目标接口和规则类型。
例如选 "Ticket" 接口 + "Create" 规则,就会得到一个能创建该接口下各类对象的动作。
步骤 2加入共享属性
按需加入要包含在动作里的接口共享属性(shared properties)。
注意:只能包含接口共享属性,不能包含某个具体对象类型特有的属性。
步骤 3填元数据 + 提交条件
写描述动作类型的元数据(对所有实现类型通用);在 Submission criteria 里选能执行该动作的用户。
这些权限会对所有实现该接口的对象类型生效(前提是该用户也有编辑它们的权限)。
步骤 4Create 完成
点 Create 完成动作类型的创建。
之后可在 Workshop / Object Explorer 等应用里,对实现该接口的对象看到并使用它。

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

4

各类规则能干啥、注意啥

Create / Modify / Delete / 创建链接 / 删除链接。

规则类型能力 / 注意点
Create会自动生成"Object type"参数让用户选要创建的类型。没有主键就无法创建——接口与 Create 规则都要包含可用作主键的接口属性。
Modify可改任意实现接口的对象;生成"interface reference"参数。但主键不可被修改,否则提交失败(如把 Bug 的 Title 当主键又被改)。
Delete可用 interface reference 参数指定要删除的对象。
Create link基于接口链接约束创建链接;若约束在"两接口之间",源/目标都自动生成为接口引用参数。一个对象类型上若有多个具体链接实现会失败。
Delete link基于接口链接约束删除链接;若对象类型上有多个具体链接实现,会尝试删除全部。
口诀:接口动作规则只能改接口共享属性删除对象。例如 Feature request 与 Bug 都是 Ticket 接口的对象类型, 你可以用"Create a ticket"动作去创建二者,但不能去创建"只属于 Bug 或只属于 Feature request"的特有属性。
5

权限与局限:先想清楚再建

提交条件对实现接口的所有类型"一视同仁"。

最大的坑:提交条件对实现该接口的所有对象类型统一生效。你无法在单个接口动作里"按对象类型"分别配置权限。 要收紧,需到 Ontology Manager 的 Interfaces 选项卡,在 Interface action control 里为特定对象类型禁用继承来的接口动作。 更细粒度的权限控制仍在开发中。
  • 接口动作规则遵循与对象动作类型相同的权限模型。
  • 动作日志(action logs)暂不支持接口动作。
  • 接口上的动作不能与函数(functions)一起使用

提交前务必想清楚:哪些用户有权在所有实现类型上创建 / 修改 / 删除对象

6

动手:接口形状判定

点击左侧卡片,判断它是否适合用"接口动作规则"实现。

候选操作(点击判定)
修改某实现 Ticket 接口的对象的共享属性 Title
对所有实现 Ticket 的对象通用
删除一个实现了接口的对象
用 interface reference 指定目标
用接口链接约束在两类接口对象间创建链接
源/目标自动生成为接口引用参数
创建仅属于 Bug 对象类型特有的属性
这是具体实现类型私有的属性
用函数(function)实现这个接口动作
想靠代码逻辑完成编辑
给不同的对象类型设置不同的提交权限
希望 A 类型宽松、B 类型严格
判定结果
绿色 = 适合用接口动作规则;红色 = 不适合(原因见卡片下方)。

一页带走

① 通用动作
一次定义,作用于所有实现该接口的对象类型。
② 两种用法
接口动作规则(做编辑)+ 接口引用参数(引用对象)。
③ 只能改共享属性
不能创建某实现类型特有的属性;主键不可改;无主键无法创建。
④ 局限
提交条件统一生效、暂不支持动作日志、不能与函数共用。

延伸阅读 · 相关页面

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

常见问题速答 · FAQ

关于「动作·接口(Actions on Interfaces)」,读者最常问的几个问题。

一次定义,作用于所有实现该接口的对象是什么?
你可以创建通用动作(generic actions),作用于你选定的某个接口(interface)下的所有对象。换句话说:只要一个对象类型实现了该接口,这个动作就能用在它身上。
权限与局限:先想清楚再建是什么?
提交前务必想清楚:哪些用户有权在所有实现类型上创建 / 修改 / 删除对象。