mcpField
A
approval-workflows

approval-workflows

github.com/happy-technologies-llc生産性4141 回インストール3 日前に更新
リポジトリ

approval-workflows について

ServiceNow のサービスカタログ承認を設定、管理するスキルです。カタログ管理者向けに、承認ルール、順次・並列ルーティング、委任、エスカレーション、状況監視を扱います。

主な機能

  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 などの ServiceNow MCP ツールで承認レコードを調査、設定、処理します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill approval-workflows

インストール後、Claude Code で/approval-workflowsを入力して読み込まれたか確認します。

詳細

サービスカタログの承認ワークフロー

概要

このスキルでは、サービスカタログのアイテムに対する承認管理について説明します。

  • 承認アーキテクチャの理解
  • 承認ルールと条件の設定
  • 複数レベルおよび並列の承認
  • 承認の委任と代理対応
  • タイムアウト、リマインダー、エスカレーションの設定
  • 承認リクエストの監視と管理

使用する場面: カタログアイテムの承認プロセスを設定するとき、承認が滞っている問題をトラブルシューティングするとき、または複雑な承認ルーティングを実装するときです。

前提条件

  • ロール: catalog_admin、approval_admin、または admin
  • アクセス権: sysapproval_approver、sc_ic_aprvl_type_defn、sc_ic_aprvl_defn テーブル
  • 知識: サービスカタログの構造、承認の概念
  • 関連スキル: 事前に catalog/item-creation を完了してください

手順

ステップ 1:承認アーキテクチャを理解する

承認テーブル:

テーブル目的
sysapproval_approver個別の承認レコード(承認者ごとに 1 件)
sysapproval_groupグループベースの承認
sc_ic_aprvl_type_defnカタログ承認タイプの定義
sc_ic_aprvl_defnカタログ固有の承認定義
sys_approval_ruleシステム全体の承認ルール

承認フロー:

Request Submitted
      ↓
Approval Rule Evaluated
      ↓
Approval Records Created (sysapproval_approver)
      ↓
Approvers Notified
      ↓
Approver Takes Action
      ↓
Next Level (if multi-level) OR Complete

承認状態:

状態値説明
未リクエストnot yet requested承認は開始されていません
リクエスト済みrequested承認者の対応待ちです
承認済みapproved承認者が承認しました
却下rejected承認者が却下しました
キャンセル済みcancelled承認はキャンセルされました
重複duplicate重複した承認はスキップされました
不要not_required承認は免除されました
ステップ 2:既存の承認を照会する

リクエストに対する保留中の承認を検索する:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: sysapproval=[ritm_sys_id]
  fields: sys_id,approver,state,due_date,source_table,sys_created_on
  limit: 50

ユーザーに対するすべての保留中の承認を検索する:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: approver=[user_sys_id]^state=requested
  fields: sys_id,sysapproval,document_id,source_table,sys_created_on
  limit: 100

期限超過の承認を検索する:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: state=requested^due_date<javascript:gs.nowDateTime()
  fields: sys_id,approver,sysapproval,due_date,source_table
  limit: 100
ステップ 3:承認ルールを作成する(レガシー方式)

注: これはレガシー承認ルールシステムを使用します。新しい実装では、Flow Designer または Catalog Builder の承認タイプの使用を検討してください。

基本的な承認ルールを作成する:

Tool: SN-Create-Record
Parameters:
  table_name: sys_approval_rule
  data:
    name: "Manager Approval for Hardware > $1000"
    active: true
    table: sc_req_item
    condition: cat_item.price>1000^cat_item.category.title=Hardware
    approval_type: "single"
    approver_field: "opened_by.manager"
    order: 100
ステップ 4:カタログ承認タイプを設定する

カタログ承認タイプでは、再利用可能な承認パターンを定義します。

既存の承認タイプを照会する:

Tool: SN-Query-Table
Parameters:
  table_name: sc_ic_aprvl_type_defn
  query: active=true
  fields: sys_id,name,description,approval_type
  limit: 50

承認タイプ定義を作成する:

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_type_defn
  data:
    name: "Manager Approval"
    description: "Requires approval from requester's manager"
    active: true
    approval_type: "approver_user_field"
    approver_user_field: "requested_for.manager"
    wait_for: "everyone"  # everyone, anyone
    mandatory: true

承認タイプのオプション:

approval_type説明
approver_user_fieldレコードのフィールドから取得するユーザー
approver_group_fieldレコードのフィールドから取得するグループ
specific_user固定のユーザー
specific_group固定のグループ
scriptカスタムスクリプトで承認者を決定
ステップ 5:複数レベルの承認を設定する

複数レベルの承認は、順序に基づいて順番に実行されます。

レベル 1 を作成する — マネージャーの承認:

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [catalog_item_sys_id]
    name: "Manager Approval"
    approval_type_definition: [manager_approval_type_sys_id]
    order: 100
    active: true
    condition: ""  # Always apply

レベル 2 を作成する — ディレクターの承認(高額なリクエストの場合):

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [catalog_item_sys_id]
    name: "Director Approval"
    approval_type_definition: [director_approval_type_sys_id]
    order: 200
    active: true
    condition: "price>5000"  # Only for requests over $5000

レベル 3 を作成する — 財務部門の承認(非常に高額な場合):

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [catalog_item_sys_id]
    name: "Finance Approval"
    approval_type_definition: [finance_approval_type_sys_id]
    order: 300
    active: true
    condition: "price>10000"
ステップ 6:並列承認を設定する

並列承認は、同じレベルで同時に実行されます。

並列承認者を作成する(同じ順序 = 並列):

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [catalog_item_sys_id]
    name: "IT Security Review"
    approval_type_definition: [security_approval_type_sys_id]
    order: 100  # Same order as other parallel approval
    active: true
Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [catalog_item_sys_id]
    name: "Legal Review"
    approval_type_definition: [legal_approval_type_sys_id]
    order: 100  # Same order = parallel execution
    active: true

待機オプション:

  • everyone - すべての承認者による承認が必要です
  • anyone - 最初の承認でレベルが完了します
  • majority - 承認者の過半数による承認が必要です
ステップ 7:グループ承認を設定する

グループベースの承認タイプを作成する:

Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_type_defn
  data:
    name: "Change Advisory Board"
    description: "CAB approval required for major changes"
    active: true
    approval_type: "specific_group"
    approver_group: [cab_group_sys_id]
    wait_for: "everyone"

グループ承認のステータスを照会する:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_group
  query: parent=[ritm_sys_id]
  fields: sys_id,group,approval,sys_created_on
ステップ 8:承認の委任を設定する

委任を使用すると、不在時にユーザーが他のユーザーへ承認権限を割り当てられます。

既存の委任を照会する:

Tool: SN-Query-Table
Parameters:
  table_name: sys_user_delegate
  query: delegate=[user_sys_id]^active=true
  fields: sys_id,user,delegate,starts,ends,approval
  limit: 50

委任レコードを作成する:

Tool: SN-Create-Record
Parameters:
  table_name: sys_user_delegate
  data:
    user: [original_approver_sys_id]
    delegate: [delegate_user_sys_id]
    starts: "2026-02-10"
    ends: "2026-02-24"
    approval: true  # Delegate approvals
    active: true
ステップ 9:タイムアウトとエスカレーションを設定する

期限日付きの承認:

Tool: SN-Update-Record
Parameters:
  table_name: sysapproval_approver
  sys_id: [approval_sys_id]
  data:
    due_date: "2026-02-13 17:00:00"

SLA によるエスカレーションを作成する: SLA 定義(sla)テーブルで設定します。

Tool: SN-Create-Record
Parameters:
  table_name: contract_sla
  data:
    name: "Approval Escalation - 48 Hours"
    table: sysapproval_approver
    condition: "state=requested"
    duration: "2 00:00:00"  # 48 hours
    workflow: [escalation_workflow_sys_id]
    active: true
ステップ 10:プログラムで承認を処理する

リクエストを承認する:

Tool: SN-Update-Record
Parameters:
  table_name: sysapproval_approver
  sys_id: [approval_sys_id]
  data:
    state: "approved"
    comments: "Approved - budget verified and manager confirmed need"

リクエストを却下する:

Tool: SN-Update-Record
Parameters:
  table_name: sysapproval_approver
  sys_id: [approval_sys_id]
  data:
    state: "rejected"
    comments: "Rejected - request exceeds department budget. Please resubmit next quarter."

保留中の承認をキャンセルする:

Tool: SN-Update-Record
Parameters:
  table_name: sysapproval_approver
  sys_id: [approval_sys_id]
  data:
    state: "cancelled"
    comments: "Approval cancelled - request withdrawn by user"
Step 11:承認メトリクスを監視する

グループ別に保留中の承認を数える:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: state=requested^sys_created_on>=javascript:gs.beginningOfLastMonth()
  fields: sys_id,approver.u_group,state
  limit: 1000

承認のボトルネックを見つける:

Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: state=requested^sys_created_onRELATIVELE@dayofweek@ago@5
  fields: sys_id,approver,sysapproval,sys_created_on
  limit: 100

完全な例:複数レベルのハードウェア承認

# 1. Create Manager Approval Type
Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_type_defn
  data:
    name: "Requester Manager"
    description: "Approval from requester's direct manager"
    active: true
    approval_type: "approver_user_field"
    approver_user_field: "requested_for.manager"
    wait_for: "everyone"
    mandatory: true
# Result: sys_id = "type_manager"

# 2. Create IT Director Approval Type
Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_type_defn
  data:
    name: "IT Director"
    description: "IT Director approval for large hardware purchases"
    active: true
    approval_type: "specific_user"
    specific_user: [it_director_sys_id]
    wait_for: "everyone"
    mandatory: true
# Result: sys_id = "type_director"

# 3. Create Level 1 Approval Definition (always required)
Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [hardware_item_sys_id]
    name: "Manager Approval"
    approval_type_definition: "type_manager"
    order: 100
    active: true
    condition: ""

# 4. Create Level 2 Approval Definition (only for > $2000)
Tool: SN-Create-Record
Parameters:
  table_name: sc_ic_aprvl_defn
  data:
    catalog_item: [hardware_item_sys_id]
    name: "IT Director Approval"
    approval_type_definition: "type_director"
    order: 200
    active: true
    condition: "price>2000"

# 5. Verify configuration
Tool: SN-Query-Table
Parameters:
  table_name: sc_ic_aprvl_defn
  query: catalog_item=[hardware_item_sys_id]
  fields: name,approval_type_definition,order,condition,active

承認状態の遷移

                        ┌──────────────────┐
                        │  not yet requested│
                        └─────────┬────────┘
                                  │ Workflow triggers
                        ┌─────────▼────────┐
                        │    requested      │
                        └─────────┬────────┘
                                  │
          ┌───────────────────────┼───────────────────────┐
          │                       │                       │
┌─────────▼────────┐   ┌─────────▼────────┐   ┌─────────▼────────┐
│    approved      │   │    rejected      │   │    cancelled     │
└──────────────────┘   └──────────────────┘   └──────────────────┘
          │
          │ All approvals approved
┌─────────▼──────────────────────┐
│  Request proceeds to fulfillment│
└────────────────────────────────┘

ツールの使用概要

操作MCP ツールテーブル
承認を照会SN-Query-Tablesysapproval_approver
承認を処理SN-Update-Recordsysapproval_approver
承認タイプを作成SN-Create-Recordsc_ic_aprvl_type_defn
承認定義を作成SN-Create-Recordsc_ic_aprvl_defn
委任を設定SN-Create-Recordsys_user_delegate
グループの承認を照会SN-Query-Tablesysapproval_group

ベストプラクティス

  • 承認レベルを最小限にする: 各レベルで遅延が増えるため、適切な場合は条件を使ってスキップします
  • 個人よりグループを使う: グループなら人員の変更に対応できます
  • 期限を設定する: 承認がいつまでも停滞しないようにします
  • エスカレーションを設定する: 期限を過ぎた承認を自動的にエスカレーションします
  • 条件を文書化する: 承認条件を明確にし、監査できるようにします
  • すべての経路をテストする: 承認、却下、キャンセルのフローをテストします
  • メトリクスを監視する: 承認にかかる時間とボトルネックを追跡します
  • 委任を有効にする: PTO 中の業務をカバーできるようにします

トラブルシューティング

承認が生成されない

症状: リクエストを送信しても承認レコードが作成されない 原因:

  1. 承認ルールの条件を満たしていない
  2. 承認タイプが無効になっている
  3. ワークフローで承認アクティビティがトリガーされていない 解決策:
Tool: SN-Query-Table
Parameters:
  table_name: sc_ic_aprvl_defn
  query: catalog_item=[item_sys_id]^active=true
  fields: name,condition,active,order
承認が「Requested」のまま止まっている

症状: 承認が保留中なのに、承認者は処理済みだと主張している 原因:

  1. 複数の承認レコードがある(1 件は承認済み、もう 1 件は保留中)
  2. 承認者が別のレコードを処理した
  3. 複数レベルの承認で、前のレベルの完了を待っている 解決策:
Tool: SN-Query-Table
Parameters:
  table_name: sysapproval_approver
  query: sysapproval=[ritm_sys_id]
  fields: sys_id,approver,state,order,sys_updated_on
リクエストが却下されたのに処理が続く

症状: 却下されたにもかかわらず、リクエストの処理が続く 原因: ビジネスルールまたはワークフローが却下を反映していない 解決策: ワークフローで却下が適切に処理されているか確認します

委任が機能しない

症状: 代理人に承認リクエストが届かない 原因:

  1. 委任レコードが無効になっている
  2. 期間が終了している
  3. approval フラグが設定されていない 解決策:
Tool: SN-Query-Table
Parameters:
  table_name: sys_user_delegate
  query: user=[original_user_sys_id]^active=true
  fields: delegate,starts,ends,approval,active

関連スキル

  • catalog/item-creation - カタログアイテムの作成(前提条件)
  • catalog/request-fulfillment - 承認済みリクエストの処理
  • admin/workflow-creation - 承認ワークフローの構築
  • development/notifications - 承認通知の設定

参考資料

コメント