Action Spec
表达对象类型上自定义动作的定义语义。
资源类型与自然键
| 资源类型 | 自然键 | 说明 |
|---|---|---|
ACTION | ${objectRef.name}.${name} | 对象下的动作名称;objectRef.name 标识所属对象,name 在对象内唯一 |
ActionSpecDTO
| 字段 | 类型 | 说明 |
|---|---|---|
name | string | 名称,作为对象下动作的自然键 |
displayName | string | 未使用。显示名称占位字段,当前写入服务不消费。 |
description | string | 未使用。描述占位字段,当前写入服务不消费。 |
objectRef | ResourceRefDTO | 所属对象引用;投影层仅消费 objectRef.name |
type | ActionTypeEnum | 动作类型;仅在创建时消费,更新时不允许修改类型 |
bindingType | BindingTypeEnum | 绑定类型 |
inputSchema | InputSchemaDTO | 输入参数模式 |
visibilityRule | VisibilityRuleDTO | 可见性规则 |
execution | ExecutionDTO | 执行配置;序列化到 uiMetaJson.execution |
sideEffects | List<SideEffectDTO> | 副作用列表;当前仅消费 UPDATE_FIELD 类型 |
所属对象引用 (objectRef)
Action 投影层通过 objectRef.name 定位所属 ObjectType。
| 字段 | 类型 | 说明 |
|---|---|---|
kind | string | 未使用。Action 场景不消费资源类型字段。 |
name | string | 所属对象的自然键名称;必填 |
apiName | string | 未使用。Action 场景不消费 API 名称字段,仅使用 name。 |
输入参数 (inputSchema / InputParameterDTO)
InputSchemaDTO
| 字段 | 类型 | 说明 |
|---|---|---|
parameters | List<InputParameterDTO> | 参数列表 |
InputParameterDTO
写入服务会遍历 parameters 生成 JSON Schema 的 properties。
| 字段 | 类型 | 说明 |
|---|---|---|
name | string | 参数名称;作为 JSON Schema 的 properties 键 |
displayName | string | 未使用。参数显示名称占位字段。 |
dataType | PropertyDataTypeEnum | 数据类型;映射为 JSON Schema 的 type(枚举名小写) |
required | Boolean | 未使用。参数是否必填占位字段。 |
defaultValue | Object | 默认值;写入 JSON Schema 的 default |
description | string | 参数描述;写入 JSON Schema 的 description |
可见性规则 (visibilityRule)
VisibilityRuleDTO
| 字段 | 类型 | 说明 |
|---|---|---|
ruleType | VisibilityRuleTypeEnum | 规则类型 |
condition | string | 条件表达式;ruleType = CONDITIONAL 时消费 |
requiredRoles | List<string> | 所需角色列表;ruleType = ROLE_BASED 时消费 |
执行配置 (execution)
ExecutionDTO
| 字段 | 类型 | 说明 |
|---|---|---|
executionType | ExecutionTypeEnum | 执行类型 |
config | Map<string, object> | 执行配置参数;整体透传到运行态 |
副作用 (sideEffects)
SideEffectDTO
| 字段 | 类型 | 说明 |
|---|---|---|
type | string | 副作用类型;当前仅 UPDATE_FIELD 被写入 writeTemplateJson |
targetObjectRef | ResourceRefDTO | 未使用。目标对象引用占位字段。 |
targetPropertyApiName | string | 目标属性 API 名称;UPDATE_FIELD 场景必填 |
value | Object | 副作用值;以 $ 开头表示从输入参数取值(value_type = INPUT),否则为常量(value_type = CONSTANT) |
condition | string | 未使用。触发条件占位字段。 |
枚举取值
ActionTypeEnum
| 枚举值 | 说明 |
|---|---|
UPDATE_FIELD | 更新字段 |
CREATE_OBJECT | 创建对象 |
DELETE_OBJECT | 删除对象 |
UPSERT_OBJECT | 创建或更新对象 |
LINK_OBJECT | 关联对象 |
UNLINK_OBJECT | 解除关联 |
FUNCTION_BACKED | 函数 backed |
BindingTypeEnum
| 枚举值 | 说明 |
|---|---|
SINGLE_INSTANCE | 单对象动作 |
TRANSITION | 状态迁移动作 |
SIDE_EFFECT | 副作用动作 |
QUERY | 查询动作 |
VALIDATION | 校验动作 |
ExecutionTypeEnum
| 枚举值 | 说明 |
|---|---|
IMMEDIATE | 立即执行 |
SCHEDULED | 计划执行 |
WORKFLOW | 工作流执行 |
FUNCTION | 函数执行 |
VisibilityRuleTypeEnum
| 枚举值 | 说明 |
|---|---|
ALWAYS | 始终可见 |
CONDITIONAL | 条件可见 |
ROLE_BASED | 基于角色可见 |
消费位置
foundry-action-biz:ActionDefinitionWriteService.upsertAction将字段投影到fd_action_def。name、type(仅创建)、bindingType、inputSchema、execution、visibilityRule、sideEffects参与写库。type在更新请求中被忽略,不允许修改动作类型。sideEffects中非UPDATE_FIELD类型被跳过;UPDATE_FIELD会生成writeTemplateJson.patches。
foundry-action-biz:ActionDomainProjectionAdapter从objectRef.name解析所属对象名后调用actionDefinitionApi.upsertAction。
示例
actions:
- name: approveOrder
displayName: 审批订单 # 未使用
description: 审批通过当前订单 # 未使用
objectRef:
kind: ObjectType # 未使用
name: Order
apiName: order # 未使用
type: UPDATE_FIELD
bindingType: SINGLE_INSTANCE
inputSchema:
parameters:
- name: approvedBy
dataType: STRING
description: 审批人
- name: comment
dataType: STRING
defaultValue: "同意"
execution:
executionType: IMMEDIATE
config:
confirm: true
visibilityRule:
ruleType: CONDITIONAL
condition: "status == 'PENDING'"
requiredRoles:
- role.approver
sideEffects:
- type: UPDATE_FIELD
targetObjectRef: null # 未使用
targetPropertyApiName: status
value: APPROVED
condition: null # 未使用
- type: UPDATE_FIELD
targetPropertyApiName: approvedBy
value: "$approvedBy"相关文档
- ObjectType Spec — 动作所属对象
- 核心概念 — ResourceRef 通用解析规则
- 枚举总表 — ActionTypeEnum / BindingTypeEnum / ExecutionTypeEnum / VisibilityRuleTypeEnum