SuperAPI AI 工具集

ui-actions-policies

办公与效率

查看项目

更新于 10-16 02:12

技能介绍

用途

本技能面向 ServiceNow 平台,用于构建 UI Actions 与 UI Policies。UI Actions 用于添加按钮、链接和上下文菜单;UI Policies 用于动态控制表单字段的行为(如必填、可见、只读)。

在修改现有表单之前,资料建议先使用 snow_analyze_form,它会在一次调用中返回目标表上所有生效的 UI policy、client script、data policy、记录与字段 ACL 以及 UI action,用于回答“这个表单为什么这样表现”,避免盲目猜测。

主要能力

UI Actions

资料列出以下 UI Action 类型及其位置与示例:

  • Form Button:表单头部,例如“Resolve Incident”
  • Form Context Menu:右键菜单,例如“Copy Record”
  • Form Link:相关链接,例如“View CI”
  • List Button:列表头部,例如“Export Selected”
  • List Context Menu:行右键菜单,例如“Assign to Me”
  • List Choice:Actions 下拉菜单,例如“Update State”
  • List Link:列表头部链接,例如“New Record”

资料提供了多种 UI Action 脚本示例:

  • 表单按钮 UI Action(服务端 ES5):校验 resolution_code 与 close_notes,设置 state、resolved_at、resolved_by 并更新记录,最后给出提示并设置重定向 URL。
  • 客户端 UI Action(ES5):通过 confirm 确认后,使用 g_form.setValue 设置 assigned_to 与 assignment_group,并调用 gsftSubmit 保存表单。
  • 列表 UI Action(服务端 ES5):读取 sysparm_checked_items 获取选中记录,遍历并关闭未关闭的 incident,统计关闭数量并提示。
  • 使用 GlideAjax 的 UI Action(ES5):客户端调用服务端 IncidentAjax 的 canEscalate 方法,根据返回结果决定是否升级(设置 priority、escalation 并提交)。

UI Policies

资料说明 UI Policy 的结构字段:Short description(策略名称)、Table(目标表)、Conditions(何时应用)、Reverse if false(条件为假时撤销)、On load(表单加载时运行),以及 UI Policy Actions(字段行为)。

资料提供以下示例:

  • 基础 UI Policy(无脚本):当 state = 6(Resolved)时,将 resolution_code 与 close_notes 设为必填且可见,将 resolved_by 设为只读;On load 为 true,Reverse if false 为 true。
  • 带脚本的 UI Policy(ES5):在 onCondition 中根据 category 值显示/隐藏并设置 cmdb_ci 或 software 字段的必填状态。
  • 复杂 UI Policy 脚本(ES5):通过 GlideAjax 调用 UserAjax 的 isVIP 方法判断来电者是否为 VIP,若是则高亮 caller_id、显示字段消息、设置默认 priority 并将 assignment_group 设为必填。
  • 动态字段可见性(ES5):根据 u_incident_type 的值重置并显示对应的条件字段(u_network_details、u_hardware_model、u_software_name),并设置必填。

通过脚本创建(ES5)

资料提供以编程方式创建 UI Action 与 UI Policy 的示例:

  • 创建 UI Action:使用 GlideRecord("sys_ui_action"),设置 name、table、active、form_button、form_style、hint、condition、script 等字段后 insert。
  • 创建 UI Policy:使用 GlideRecord("sys_ui_policy") 设置 short_description、table、active、on_load、reverse_if_false、conditions 并 insert,随后使用 GlideRecord("sys_ui_policy_action") 添加字段行为(field、mandatory、visible、disabled)。

MCP 工具集成

资料列出可用工具:

  • snow_create_ui_action:创建 UI Action
  • snow_create_ui_policy:创建 UI Policy
  • snow_artifact_manage(action=find):查找现有 UI 元素
  • snow_artifact_manage(action=update):修改 UI 元素

示例工作流展示了先调用 snow_create_ui_action 创建“Approve Change”按钮,再调用 snow_create_ui_policy 创建“Require justification for high priority”策略。

使用方式

资料中的脚本示例均标注为 ES5 ONLY,即仅使用 ES5 语法,不使用现代 JavaScript 语法。UI Action 与 UI Policy 可通过平台界面配置,也可通过后台脚本以编程方式创建,还可通过上述 MCP 工具调用。

适用场景

适用于需要在 ServiceNow 表单或列表上添加操作按钮、链接、上下文菜单,或需要根据条件动态控制字段必填、可见、只读状态的场景,例如 incident、change_request 等表的表单交互定制。

限制

资料明确要求脚本仅使用 ES5 语法,不支持现代 JavaScript 语法。关于收费、价格、平台版本要求、具体效果等信息,资料暂未提供。