动作类型详解

参数覆盖(override)

覆盖(override)让同一个参数在特定条件下"变行为"——不必为微小差异另建动作。这一篇讲它是什么、if/then 结构怎么写,并动手模拟一次。

原文 Palantir Foundry · Action types
本文来源 · Source 内容整理自 Palantir Foundry 官方文档:
https://www.palantir.com/docs/foundry/action-types/parameters-override/
原始标题:Override parameter configurations

一句话速览

参数覆盖(override):覆盖(override)让同一个参数在特定条件下"变行为"——不必为微小差异另建动作。这一篇讲它是什么、if/then 结构怎么写,并动手模拟一次。

1 覆盖
覆盖(override)用来在特定情形下改变参数的行为与配置
2 经理 vs 处理人
文档举了个经典例子:有个动作用来改"支持工单"的状态,且只允许经理(manager)和处理人(assignee)提交
3 覆盖块的 if / then 结构
覆盖以覆盖块(override block)为单位
4 覆盖模拟器
下面的模拟器复现了文档的例子
1

什么是覆盖

一句话:在特定情况下改变参数的行为与配置。

覆盖(override)用来在特定情形下改变参数的行为与配置。借助它,参数和表单能更灵活,不必为了"只有微小差别"的变体去单独配置一套动作类型。恰当使用覆盖还能引导用户完成提交,提升体验。

Overrides are used to change a parameter's behavior and configuration under specific circumstances.覆盖用于在特定情形下改变参数的行为与配置。

覆盖能改的东西,正是我们在总览篇讲过的那些配置开关:约束(constraints)、可见性(visibility)、必填性(requiredness)、默认值(default value)

2

例子:经理 vs 处理人

同一个 Justification 参数,对两类人表现不同。

文档举了个经典例子:有个动作用来改"支持工单"的状态,且只允许经理(manager)处理人(assignee)提交。

  • 处理人可以改状态,但不需要理由。
  • 经理改状态时,必须提供理由(justification)。

用覆盖就能做到:对经理,把 Justification reason 参数设为必填且可见;对处理人,则设为隐藏且可选。同一个动作、同一个参数,行为随身份而变。

处理人
Justification:隐藏(hidden)+ 可选体验:不必填理由,直接改状态
经理
Justification:可见(visible)+ 必填体验:必须填写理由才能提交
3

覆盖块的 if / then 结构

一个覆盖块 = 一组"如果…就…"规则。

覆盖以覆盖块(override block)为单位。每个块同时定义了"条件"(if 部分)和"覆盖"(then 部分),块头会给出一段逻辑摘要。点击分层卡看细节:

IF条件(conditions)
决定"什么时候"触发覆盖。
一个块可含一个或多个条件。注意:条件里只能引用排在"当前参数上方"的表单参数(与提交条件类似,但范围更受限)。
THEN覆盖(overrides)
决定"触发后改什么"。
满足条件时应用;一个块的 then 部分可含多个覆盖,一起生效。可改约束、可见性、必填、默认值。若覆盖值与参数已设的默认值相同,覆盖上会出现警告。
多块多个覆盖块的顺序
多个块都为 true 时,只执行第一个。
单个参数可挂多个覆盖块,但一旦有多个块的条件同时成立,只有最前面的一个会执行。配置顺序很重要。
在哪配置:最快的方式是在参数视图 General → Value 里点 Add override,弹窗会按所选选项自动配好;也可在 Overrides 标签页手动增删块与条件。General 区还会显示"已为某选项配了几个覆盖"。
4

覆盖模拟器

动手看:不同身份下,Justification 参数如何被覆盖。

下面的模拟器复现了文档的例子。选你的身份,看系统如何决定 Justification reason 参数的配置:

覆盖模拟器

你在"修改工单状态"动作里的身份是?

Justification 可见性
是否必填
点击上面按钮试一试。

顺手检验两条规则(点选项看解析):

一页带走

① 覆盖=变行为
特定条件下改参数配置,省去另建动作。
② if / then
块含条件与覆盖,头显示逻辑摘要。
③ 只能引上方
条件只限引用当前参数上方的参数。
④ 多块只首个
多个块都成立时,只执行最前面的。

延伸阅读 · 相关页面

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

常见问题速答 · FAQ

关于「参数覆盖(override)」,读者最常问的几个问题。

什么是覆盖?
覆盖(override)用来在特定情形下改变参数的行为与配置。借助它,参数和表单能更灵活,不必为了"只有微小差别"的变体去单独配置一套动作类型。恰当使用覆盖还能引导用户完成提交,提升体验。
例子:经理 vs 处理人是什么?
文档举了个经典例子:有个动作用来改"支持工单"的状态,且只允许经理(manager)和处理人(assignee)提交。
覆盖块的 if / then 结构是什么?
覆盖以覆盖块(override block)为单位。每个块同时定义了"条件"(if 部分)和"覆盖"(then 部分),块头会给出一段逻辑摘要。点击分层卡看细节。
覆盖模拟器是什么?
下面的模拟器复现了文档的例子。选你的身份,看系统如何决定 Justification reason 参数的配置。