用途:为 ServiceNow 服务目录项创建与管理 UI 策略,实现动态表单行为,例如按其他字段选择显示或隐藏字段、动态设为必填,或编写复杂条件逻辑。适用对象为目录管理员与开发人员,需要 catalog_admin 或 admin 角色,可访问 catalog_ui_policy、catalog_ui_policy_action、item_option_new 表。
主要能力:创建带条件的 UI 策略,条件使用编码查询语法,如 amount>1000、category=hardware^urgency=1(与)、department=IT^ORdepartment=Security(或)。支持 on_load、reverse_if_false、order、active、global 等字段。策略动作可设置 visible、mandatory、disabled。复杂逻辑可通过 run_scripts 启用 script_true 与 script_false,使用 g_form 读写字段值、显示字段消息、动态设置必填等。
必要用法与限制:REST API 创建 catalog_ui_policy_action 时记录可创建,但 catalog_variable 字段无法正确关联,因为该字段需要 IO:[变量sys_id] 格式,API 无法解析,导致动作不生效。必须再用后台脚本(SN-Execute-Background-Script)通过 GlideRecord 设置 gr.setValue('catalog_variable', 'IO:' + variableSysId) 并 gr.update() 修复,多个动作可批量处理。建议先查询 item_option_new 获取变量 sys_id,创建策略后用 SN-Query-Table 校验 catalog_variable.name 是否为空以确认关联成功。
测试要点:确认策略均已激活、动作变量已关联、order 无冲突、reverse_if_false 设置合适,并分别测试加载时、条件为真、条件为假及多策略组合与脚本执行场景。