关于 flow-generation
此技能指导 ServiceNow 管理员和开发者根据自然语言描述,在 Flow Designer 中构建业务流程自动化。内容涵盖触发器、操作、条件分支、审批流程及可复用子流程。
主要功能
- 01按描述规划触发器与流程操作
- 02配置条件分支和决策逻辑
- 03构建顺序或并行审批流程
- 04创建可复用子流程
- 05设置流程输入与输出
适用场景
- 01自动分配新建的高优先级事件
- 02为变更请求构建多级审批
- 03定时归档已解决的旧事件
MCP 相关
说明如何通过 SN-Query-Table、SN-Create-Record 和 SN-Update-Record 等 MCP 工具查询、创建、配置和发布 Flow Designer 流程。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill flow-generation安装后在 Claude Code 中输入/flow-generation确认已加载。
详细介绍
Flow Designer 流程生成
概述
此技能介绍如何根据自然语言描述生成 ServiceNow Flow Designer 流程:
- 使用合适的触发器创建流程(基于记录、计划任务、基于应用)
- 添加操作:审批、通知、记录操作、脚本步骤
- 使用 if/else 分支和决策表构建条件逻辑
- 创建可复用的自动化组件子流程
- 使用并行/顺序审批模式生成审批流程
- 使用动态内容构建通知流程
- 用于记录转换和批量操作的数据处理流程
适用场景: 在 Flow Designer 中自动化业务流程、生成审批工作流、构建通知逻辑或创建数据处理管道时。
前置条件
- 角色:
flow_designer或admin - 插件:
com.glide.hub.flow_designer(Flow Designer)、com.glide.hub.action_type(Action Designer) - 访问权限: sys_hub_flow、sys_hub_action_type_definition、sys_flow 表
- 知识储备: 了解 Flow Designer 的基本概念(触发器、操作、流程逻辑)
- 相关技能: Process Automation 对应的
genai/playbook-generation,以及集成对应的genai/spoke-generation
操作步骤
第 1 步:分析自然语言描述
解析用户的请求,确定以下内容:
- 触发器类型:什么会启动流程(记录创建/更新、计划任务、入站电子邮件、REST)
- 目标表:流程操作的表
- 操作:流程需要执行的操作(创建记录、发送通知、请求审批)
- 条件:任何分支逻辑或筛选条件
- 输出:预期结果或返回值
第 2 步:查询现有流程以获取模式
MCP 方式:
Use SN-Query-Table on sys_hub_flow:
- query: active=true^trigger_type=RECORD_CREATED^table=incident
- fields: sys_id,name,description,trigger_type,table,status
- limit: 10
REST 方式:
GET /api/now/table/sys_hub_flow
?sysparm_query=active=true^trigger_type=RECORD_CREATED^table=incident
&sysparm_fields=sys_id,name,description,trigger_type,table,status
&sysparm_limit=10
第 3 步:创建流程记录
MCP 方式:
Use SN-Create-Record on sys_hub_flow:
- name: "Auto-Assign Priority Incidents"
- description: "Automatically assigns high-priority incidents to the on-call team"
- trigger_type: "RECORD_CREATED"
- table: "incident"
- status: "draft"
- run_as: "system"
- scope: "global"
REST 方式:
POST /api/now/table/sys_hub_flow
Body: {
"name": "Auto-Assign Priority Incidents",
"description": "Automatically assigns high-priority incidents to the on-call team",
"trigger_type": "RECORD_CREATED",
"table": "incident",
"status": "draft",
"run_as": "system",
"scope": "global"
}
第 4 步:配置触发器
主要触发器类型及其配置:
| 触发器类型 | 值 | 配置字段 |
|---|---|---|
| 记录创建 | RECORD_CREATED | table、conditions |
| 记录更新 | RECORD_UPDATED | table、conditions、fields_to_monitor |
| 记录删除 | RECORD_DELETED | table、conditions |
| 计划任务 | SCHEDULED | schedule、time_zone、repeat_interval |
| 入站电子邮件 | INBOUND_EMAIL | target_table、conditions |
| REST API | REST | endpoint_path、http_method |
| 服务目录 | SC_REQ_ITEM | catalog_item、conditions |
MCP 方式:
Use SN-Create-Record on sys_hub_trigger_instance:
- flow: "<flow_sys_id>"
- trigger_type: "RECORD_UPDATED"
- table: "incident"
- condition: "priority=1^state!=6"
- fields_to_monitor: "priority,assignment_group"
REST 方式:
POST /api/now/table/sys_hub_trigger_instance
Body: {
"flow": "<flow_sys_id>",
"trigger_type": "RECORD_UPDATED",
"table": "incident",
"condition": "priority=1^state!=6",
"fields_to_monitor": "priority,assignment_group"
}
第 5 步:添加流程操作
常见操作类型及其对应的 sys_hub_action_type_definition 引用:
| 操作 | 类型定义 | 主要输入 |
|---|---|---|
| 创建记录 | sn_fd.create_record | table、field_values |
| 更新记录 | sn_fd.update_record | record、field_values |
| 删除记录 | sn_fd.delete_record | record |
| 查找记录 | sn_fd.look_up_record | table、conditions |
| 请求审批 | sn_fd.ask_for_approval | record、approvers、approval_type |
| 发送电子邮件 | sn_fd.send_email | to、subject、body |
| 发送通知 | sn_fd.send_notification | notification、recipients |
| 记录消息 | sn_fd.log | message、level |
| 运行脚本 | sn_fd.run_script | script |
| 等待条件 | sn_fd.wait_for_condition | table、condition、timeout |
MCP 方式:
Use SN-Create-Record on sys_hub_action_instance:
- flow: "<flow_sys_id>"
- action_type: "<action_type_sys_id>"
- order: 100
- name: "Look Up Assignment Group"
- inputs: {
"table": "sys_user_group",
"conditions": "name=Network Operations"
}
第 6 步:添加条件逻辑
使用流程逻辑步骤构建 if/else 分支:
MCP 方式:
Use SN-Create-Record on sys_hub_action_instance:
- flow: "<flow_sys_id>"
- action_type: "sn_fd.if"
- order: 200
- name: "Check Priority Level"
- inputs: {
"condition": "trigger.current.priority == 1"
}
对于嵌套条件,使用 parent 字段将子操作关联到 if/else 块。
第 7 步:构建审批流程
顺序审批模式:
Use SN-Create-Record on sys_hub_action_instance:
- flow: "<flow_sys_id>"
- action_type: "sn_fd.ask_for_approval"
- order: 300
- name: "Manager Approval"
- inputs: {
"record": "trigger.current",
"approval_type": "approve_reject",
"approvers": "trigger.current.opened_by.manager",
"due_date_interval": "3 days"
}
并行审批模式: 在并行块中添加多个审批操作:
Use SN-Create-Record on sys_hub_action_instance:
- flow: "<flow_sys_id>"
- action_type: "sn_fd.parallel"
- order: 300
- name: "Parallel Approvals"
然后添加子审批操作,并将 parent 设置为引用该并行块。
第 8 步:创建可复用的子流程
MCP 方式:
Use SN-Create-Record on sys_hub_sub_flow:
- name: "Send Escalation Notification"
- description: "Reusable subflow for sending escalation notifications"
- status: "draft"
- inputs: "record,escalation_level,notify_group"
- access: "public"
REST 方式:
POST /api/now/table/sys_hub_sub_flow
Body: {
"name": "Send Escalation Notification",
"description": "Reusable subflow for sending escalation notifications",
"status": "draft",
"access": "public"
}
第 9 步:定义流程输入和输出
MCP 方法:
Use SN-Create-Record on sys_hub_flow_input:
- flow: "<flow_sys_id>"
- name: "assignment_group"
- label: "Assignment Group"
- type: "reference"
- reference_table: "sys_user_group"
- mandatory: true
Use SN-Create-Record on sys_hub_flow_output:
- flow: "<flow_sys_id>"
- name: "approval_status"
- label: "Approval Status"
- type: "string"
第 10 步:激活并测试流程
MCP 方法:
Use SN-Update-Record on sys_hub_flow:
- sys_id: "<flow_sys_id>"
- status: "published"
验证流程已激活:
Use SN-Query-Table on sys_hub_flow:
- query: sys_id=<flow_sys_id>
- fields: sys_id,name,status,active
工具用法
| 工具 | 用途 | 使用时机 |
|---|---|---|
| SN-Query-Table | 查找现有流程和操作类型 | 发现模式并进行验证 |
| SN-Create-Record | 创建流程、触发器和操作 | 构建新的流程组件 |
| SN-Update-Record | 修改流程设置并激活流程 | 编辑和发布 |
| SN-Get-Table-Schema | 发现流程表字段 | 了解可用配置 |
最佳实践
- 始终先以草稿状态创建流程 -- 切勿直接发布未经测试的流程
- 使用描述性名称,让流程和操作名称体现其业务用途
- 适当设置 run_as -- 后台自动化使用 "system",由用户触发的流程使用 "initiating_user"
- 添加错误处理 -- 包含 try/catch 块和日志操作,以便调试
- 限制触发条件 -- 触发条件过于宽泛会导致性能问题
- 对多个流程中重复的逻辑使用子流程
- 通过 sys_flow_context 监控流程执行,以分析运行时情况
- 为 Wait for Condition 操作设置适当的超时时间,以防无限期挂起
- 在生产表上激活流程前,使用受限数据进行测试
- 在描述字段中记录流程用途,以便维护
故障排除
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 流程未触发 | 触发条件过于严格,或流程未激活 | 检查 sys_hub_flow.active 和触发条件 |
| 操作因权限错误而失败 | 运行身份用户没有表访问权限 | 更改 run_as,或向流程用户授予角色 |
| 流程执行多次 | 触发器缺少更新字段筛选条件 | 添加 fields_to_monitor,以限制重复触发 |
| 找不到子流程 | 子流程处于草稿状态,或作用域不正确 | 发布子流程并检查访问设置 |
| 审批卡在待处理状态 | 没有匹配的审批人 | 确认审批人引用指向有效用户 |
| 流程上下文显示错误 | 脚本操作发生运行时异常 | 检查 sys_flow_context.error_message 以了解详情 |
示例
示例 1:事件自动分配流程
生成一个流程,自动将 P1 事件分配给网络运营团队并发送通知:
- 触发器:在
incident上创建记录,条件为priority=1 - 操作 1:在
sys_user_group上查找记录,条件为name=Network Operations - 操作 2:更新触发记录,将
assignment_group设为查找结果 - 操作 3:向分配组成员发送通知
示例 2:变更请求审批流程
为变更请求生成一个多级审批流程:
- 触发器:在
change_request上更新记录,条件为state=assess - 操作 1:如果
risk=high,则请求 CAB 审批(并行) - 操作 2:如果
risk=moderate,则请求经理审批(顺序) - 操作 3:审批通过后,将状态更新为
authorize - 操作 4:被拒绝后,将状态更新为
closed,并填写拒绝说明
示例 3:计划数据清理流程
生成一个计划流程,用于归档已解决的旧事件:
- 触发器:计划任务,每天 02:00 UTC
- 操作 1:在
incident上查找记录,条件为state=6^resolved_at<javascript:gs.daysAgo(90) - 操作 2:对每条记录,在
u_incident_archive中创建归档记录 - 操作 3:删除原始记录
- 操作 4:记录归档数量摘要
相关技能
genai/playbook-generation- Process Automation Designer 手册genai/spoke-generation- Integration Hub spoke 创建catalog/approval-workflows- 特定于目录的审批配置itsm/incident-lifecycle- 事件表结构和字段
评论
支持 Markdown