mcpField
F
flow-generation

flow-generation

github.com/happy-technologies-llc开发4142 次安装2 天前更新
代码仓库

关于 flow-generation

此技能指导 ServiceNow 管理员和开发者根据自然语言描述,在 Flow Designer 中构建业务流程自动化。内容涵盖触发器、操作、条件分支、审批流程及可复用子流程。

主要功能

  1. 01按描述规划触发器与流程操作
  2. 02配置条件分支和决策逻辑
  3. 03构建顺序或并行审批流程
  4. 04创建可复用子流程
  5. 05设置流程输入与输出

适用场景

  1. 01自动分配新建的高优先级事件
  2. 02为变更请求构建多级审批
  3. 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_CREATEDtable、conditions
记录更新RECORD_UPDATEDtable、conditions、fields_to_monitor
记录删除RECORD_DELETEDtable、conditions
计划任务SCHEDULEDschedule、time_zone、repeat_interval
入站电子邮件INBOUND_EMAILtarget_table、conditions
REST APIRESTendpoint_path、http_method
服务目录SC_REQ_ITEMcatalog_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_recordtable、field_values
更新记录sn_fd.update_recordrecord、field_values
删除记录sn_fd.delete_recordrecord
查找记录sn_fd.look_up_recordtable、conditions
请求审批sn_fd.ask_for_approvalrecord、approvers、approval_type
发送电子邮件sn_fd.send_emailto、subject、body
发送通知sn_fd.send_notificationnotification、recipients
记录消息sn_fd.logmessage、level
运行脚本sn_fd.run_scriptscript
等待条件sn_fd.wait_for_conditiontable、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发现流程表字段了解可用配置

最佳实践

  1. 始终先以草稿状态创建流程 -- 切勿直接发布未经测试的流程
  2. 使用描述性名称,让流程和操作名称体现其业务用途
  3. 适当设置 run_as -- 后台自动化使用 "system",由用户触发的流程使用 "initiating_user"
  4. 添加错误处理 -- 包含 try/catch 块和日志操作,以便调试
  5. 限制触发条件 -- 触发条件过于宽泛会导致性能问题
  6. 对多个流程中重复的逻辑使用子流程
  7. 通过 sys_flow_context 监控流程执行,以分析运行时情况
  8. 为 Wait for Condition 操作设置适当的超时时间,以防无限期挂起
  9. 在生产表上激活流程前,使用受限数据进行测试
  10. 在描述字段中记录流程用途,以便维护

故障排除

问题原因解决方法
流程未触发触发条件过于严格,或流程未激活检查 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