mcpField
R
rpa-bot-generation

rpa-bot-generation

github.com/happy-technologies-llc開発4141 回インストール2 日前に更新
リポジトリ

rpa-bot-generation について

ServiceNow RPA Hubの利用者向けスキルです。自然言語の業務説明からボット定義やアクションを作成し、トリガー、認証情報、実行状況の監視も扱います。APIのないシステムや反復作業の自動化に対応します。

主な機能

  1. 01業務説明からボット定義を作成
  2. 02UI自動化とデータ処理アクションの設定
  3. 03フロー、スケジュール、イベントのトリガー設定
  4. 04認証情報とロボットグループの管理
  5. 05実行記録の検索と障害追跡

活用シーン

  1. 01デスクトップアプリ間のデータ入力を自動化
  2. 02APIのないレガシーシステムと連携
  3. 03ServiceNowのフローやスケジュールからボットを起動
  4. 04ボットの実行状況と失敗を監視

MCP 対応

例ではMCPツールを使い、ServiceNowのRPAプロセス、ボット、アクション、トリガー、認証情報を作成し、実行記録や分析データを検索します。

インストール

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

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill rpa-bot-generation

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

詳細

RPA ボットの生成

概要

このスキルは、自然言語によるプロセスの説明から、ServiceNow RPA Hub でロボティック・プロセス・オートメーション(RPA)ボットを生成します。以下を扱います。

  • ビジネスプロセスの説明を構造化されたボット定義に変換する
  • UI オートメーション、データ抽出、システム連携のためのボットアクションを作成する
  • ServiceNow のワークフロー、スケジュール、イベントからボットを起動するトリガーを設定する
  • 再試行ロジック、例外の捕捉、フォールバック経路を備えたエラー処理戦略を実装する
  • ボットが対象アプリケーションにアクセスするための認証情報を安全に管理する
  • ワークロード分散と高可用性のために、ボットをロボットグループにまとめる
  • パフォーマンス分析と失敗の追跡によって、ボットの実行を監視する

使用する場面:

  • プロセスマイニングで特定された反復的な手作業を自動化する場合
  • API を持たないレガシーシステムをつなぐボットを構築する場合
  • 対象アプリケーションで ServiceNow Integration Hub のスポークを利用できない場合
  • デスクトップアプリケーション間のデータ入力、抽出、検証を自動化する場合
  • エージェントが支援する自動化のシナリオ向けに有人ボットを作成する場合

前提条件

  • ロール: sn_rpa.admin、sn_rpa.designer、sn_rpa.operator、または admin
  • プラグイン: com.sn_rpa(RPA Hub)、com.sn_rpa.designer(RPA Desktop Design Studio)
  • アクセス権: sn_rpa_bot、sn_rpa_action、sn_rpa_process テーブルへの読み取り/書き込みアクセス
  • 知識: RPA の概念(有人ボットと無人ボット、セレクター、記録)、対象アプリケーションの UI 構造、組織の自動化ガバナンスフレームワークに関する理解
  • インフラストラクチャ: ServiceNow RPA agent をインストールした RPA ロボットマシンがプロビジョニングされていること

主な RPA テーブル

テーブル目的主なフィールド
sn_rpa_botボット定義name、description、state、bot_type、process、version、owner、robot_group
sn_rpa_action個々のボットアクション/ステップbot、action_type、order、name、target_application、selector、input_data、output_variable、error_handling
sn_rpa_processビジネスプロセス定義name、description、category、owner、state、estimated_savings、complexity
sn_rpa_credential認証情報ボルトのエントリーname、application、credential_type、username、vault_id、rotation_policy
sn_rpa_triggerボット実行トリガーbot、trigger_type、schedule、flow、event、condition
sn_rpa_executionボット実行ログbot、state、start_time、end_time、duration、status、error_message、robot、transactions_processed
sn_rpa_robot_groupロボットのグループname、description、robots、max_concurrent、priority

手順

ステップ 1:プロセスの説明を分析する

ユーザーのプロセス説明を解析し、以下を特定します。

  • プロセスの範囲: ボットが最初から最後まで自動化する内容
  • 対象アプリケーション: ボットが連携するシステム
  • 入力データ: ボットの開始に必要なデータ(スプレッドシート、レコード、キュー)
  • アクション: 順番に実行するステップ(クリック、入力、読み取り、移動、抽出、検証)
  • 出力: ボットが生成するもの(更新されたレコード、レポート、確認)
  • 例外: 既知のエラーシナリオと想定される処理
ステップ 2:プロセス定義を作成する

RPA Hub にビジネスプロセスを登録します。

MCP を使用する場合(Claude Code/Desktop):

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_process
  fields:
    name: "Invoice Data Entry Automation"
    description: "Automates entry of approved invoice data from ServiceNow into the legacy ERP system. Process handles single invoice entry including vendor lookup, line item entry, and approval submission."
    category: finance
    owner: [process_owner_sys_id]
    state: design
    estimated_savings: 2400
    complexity: medium
    manual_steps: 15
    avg_manual_time_minutes: 12
    volume_per_month: 200

REST API を使用する場合:

POST /api/now/table/sn_rpa_process
Content-Type: application/json

{
  "name": "Invoice Data Entry Automation",
  "description": "Automates entry of approved invoice data from ServiceNow into the legacy ERP system.",
  "category": "finance",
  "owner": "[process_owner_sys_id]",
  "state": "design",
  "estimated_savings": "2400",
  "complexity": "medium"
}
ステップ 3:ボット定義を作成する

プロセスに関連付けられたボットを定義します。

MCP を使用する場合:

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_bot
  fields:
    name: "Invoice Entry Bot"
    description: "Unattended bot that enters approved invoices into the legacy ERP system"
    state: draft
    bot_type: unattended
    process: [process_sys_id]
    version: "1.0"
    owner: [bot_owner_sys_id]
    robot_group: [robot_group_sys_id]
    max_retries: 3
    timeout_minutes: 30

REST API を使用する場合:

POST /api/now/table/sn_rpa_bot
Content-Type: application/json

{
  "name": "Invoice Entry Bot",
  "description": "Unattended bot for legacy ERP invoice entry",
  "state": "draft",
  "bot_type": "unattended",
  "process": "[process_sys_id]",
  "version": "1.0",
  "max_retries": "3",
  "timeout_minutes": "30"
}
ステップ 4:ボットアクションを定義する

ボットのワークフローを構成する、順次実行されるアクションを作成します。

アクション 1:対象アプリケーションを開く:

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_action
  fields:
    bot: [bot_sys_id]
    action_type: open_application
    order: 100
    name: "Launch ERP Application"
    target_application: "SAP GUI"
    input_data: '{"executable_path": "C:\\Program Files\\SAP\\SAPgui\\saplogon.exe", "connection": "PRD"}'
    timeout_seconds: 30
    error_handling: retry
    retry_count: 2

アクション 2:管理された認証情報でログインする:

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_action
  fields:
    bot: [bot_sys_id]
    action_type: credential_login
    order: 200
    name: "Login to ERP"
    credential: [credential_sys_id]
    selector: '{"username_field": "#txtUser", "password_field": "#txtPassword", "login_button": "#btnLogin"}'
    timeout_seconds: 15
    error_handling: fail
    error_message: "ERP login failed - check credentials in vault"

アクション 3:移動してデータを入力する:

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_action
  fields:
    bot: [bot_sys_id]
    action_type: data_entry
    order: 300
    name: "Enter Invoice Header"
    target_application: "SAP GUI"
    input_data: |
      {
        "transaction": "FB60",
        "fields": {
          "vendor": "{invoice.vendor_number}",
          "invoice_date": "{invoice.invoice_date}",
          "posting_date": "{invoice.posting_date}",
          "amount": "{invoice.total_amount}",
          "currency": "{invoice.currency}",
          "reference": "{invoice.sn_number}"
        }
      }
    timeout_seconds: 20
    error_handling: screenshot_and_fail

アクション 4:検証して送信する:

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_action
  fields:
    bot: [bot_sys_id]
    action_type: validation
    order: 400
    name: "Validate Entry and Submit"
    input_data: |
      {
        "validation_checks": [
          {"field": "status_bar", "expected": "Document posted", "selector": "#statusBar"},
          {"field": "document_number", "not_empty": true, "selector": "#docNumber"}
        ],
        "on_success": "capture_document_number",
        "on_failure": "screenshot_and_rollback"
      }
    output_variable: erp_document_number
    timeout_seconds: 15

アクション 5:ServiceNow レコードを更新する:

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_action
  fields:
    bot: [bot_sys_id]
    action_type: servicenow_update
    order: 500
    name: "Update Invoice Record in ServiceNow"
    input_data: |
      {
        "table": "ap_invoice",
        "sys_id": "{invoice.sys_id}",
        "fields": {
          "erp_reference": "{erp_document_number}",
          "state": "posted",
          "work_notes": "Bot: Invoice posted to ERP. Document: {erp_document_number}"
        }
      }
ステップ 5:認証情報の管理を設定する

ボット認証用の認証情報を安全に保存するよう設定します。

MCP を使用する場合:

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_credential
  fields:
    name: "ERP Service Account - Invoice Bot"
    application: "SAP ERP"
    credential_type: username_password
    username: svc_rpa_invoice
    vault_id: [credential_vault_id]
    rotation_policy: 90_days
    owner: [security_team_sys_id]
ステップ 6:ボットのトリガーを設定する

ボットを実行するタイミングと方法を設定します。

MCP を使用する場合:

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_trigger
  fields:
    bot: [bot_sys_id]
    trigger_type: flow
    flow: [flow_sys_id]
    condition: "invoice.state == 'approved' && invoice.erp_reference == ''"
    description: "Trigger bot when invoice is approved and not yet posted to ERP"
    active: true
    priority: normal

スケジュールベースのトリガー:

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_trigger
  fields:
    bot: [bot_sys_id]
    trigger_type: schedule
    schedule: "0 */2 * * 1-5"
    description: "Run every 2 hours on weekdays to process queued invoices"
    active: true
    max_batch_size: 50
ステップ 7:ボットの実行を監視する

パフォーマンスとエラーの追跡のために、実行ログを照会します。

MCP を使用する場合:

Tool: SN-Query-Table
Parameters:
  table_name: sn_rpa_execution
  query: bot=[bot_sys_id]^ORDERBYDESCstart_time
  fields: sys_id,bot,state,start_time,end_time,duration,status,error_message,robot,transactions_processed
  limit: 50

実行分析を生成する:

Tool: SN-Execute-Background-Script
Parameters:
  script: |
    var analytics = {
      period: 'Last 30 days',
      total_executions: 0,
      successful: 0,
      failed: 0,
      avg_duration_seconds: 0,
      total_transactions: 0,
      success_rate: 0,
      common_errors: {},
      time_saved_hours: 0
    };

    var ga = new GlideAggregate('sn_rpa_execution');
    ga.addQuery('start_time', '>=', gs.daysAgo(30));
    ga.addAggregate('COUNT');
    ga.addAggregate('AVG', 'duration');
    ga.addAggregate('SUM', 'transactions_processed');
    ga.query();
    if (ga.next()) {
      analytics.total_executions = parseInt(ga.getAggregate('COUNT'));
      analytics.avg_duration_seconds = Math.round(parseFloat(ga.getAggregate('AVG', 'duration')) || 0);
      analytics.total_transactions = parseInt(ga.getAggregate('SUM', 'transactions_processed')) || 0;
    }

    var success = new GlideAggregate('sn_rpa_execution');
    success.addQuery('start_time', '>=', gs.daysAgo(30));
    success.addQuery('status', 'success');
    success.addAggregate('COUNT');
    success.query();
    if (success.next()) {
      analytics.successful = parseInt(success.getAggregate('COUNT'));
      if (analytics.total_executions > 0)
        analytics.success_rate = Math.round((analytics.successful / analytics.total_executions) * 100);
    }
    analytics.failed = analytics.total_executions - analytics.successful;

    // Estimate time saved (12 min manual per transaction)
    analytics.time_saved_hours = Math.round((analytics.total_transactions * 12) / 60);

    gs.info('RPA EXECUTION ANALYTICS:\n' + JSON.stringify(analytics, null, 2));
  description: "RPA: Generate bot execution analytics for last 30 days"

ツールの使用

操作MCP ツールREST エンドポイント
プロセスの作成SN-Create-RecordPOST /api/now/table/sn_rpa_process
ボットの作成SN-Create-RecordPOST /api/now/table/sn_rpa_bot
アクションの作成SN-Create-RecordPOST /api/now/table/sn_rpa_action
トリガーの作成SN-Create-RecordPOST /api/now/table/sn_rpa_trigger
実行の照会SN-Query-TableGET /api/now/table/sn_rpa_execution
認証情報の管理SN-Create-RecordPOST /api/now/table/sn_rpa_credential
分析SN-Execute-Background-ScriptPOST /api/now/table/sys_trigger

ベストプラクティス

  • プロセスを最初に: ボットを構築する前に、必ず手動プロセスを完全に文書化してください。プロセスへの理解不足は、ボットが失敗する最大の原因です
  • アクションのモジュール化: ボットを小さく再利用可能なアクションに分割してください。100 以上のステップを含む巨大なボットは作成しないでください
  • エラー時のスクリーンショット: デバッグに役立つよう、重要なアクションすべてで失敗時にスクリーンショットを撮影する設定にしてください
  • 認証情報のローテーション: 自動ローテーションを備えた認証情報ボルトを使用してください。ボット定義にパスワードをハードコードしないでください
  • 冪等性: ボットを安全に再実行できるよう設計してください。処理の前に、作業がすでに完了しているか確認してください
  • スロットリング: 対象アプリケーションへの負荷を避けるため、アクション間に遅延を加えてください。レート制限を守ってください
  • ロボットグループ: 大量のプロセスでは、複数のロボットに作業負荷を分散してください
  • 監視アラート: 特にビジネスクリティカルなプロセスでは、ボットの失敗時に通知されるよう設定してください
  • バージョン管理: 変更のたびにボットのバージョンを更新し、ロールバックできる状態を維持してください
  • 人間による確認: リスクの高いプロセス(財務、コンプライアンス)では、最終送信の前に人間による承認ステップを追加してください

トラブルシューティング

ボットが対象アプリケーションを起動できない

症状: 最初のアクションが「application not found」または「timeout」で失敗する 原因: ロボットのマシンに対象アプリケーションがインストールされていないか、パスが間違っています 解決策: ロボットのマシンで実行可能ファイルのパスを確認してください。RPA エージェントサービスが実行中であることを確認してください。ロボットユーザーにアプリケーションの起動権限があることを確認してください。

セレクターが見つからないエラー

症状: ボットが対象アプリケーション内の UI 要素を見つけられない 原因: アプリケーションの UI が変更されています(アップデート、パッチ、動的な要素 ID) 解決策: RPA Desktop Design Studio を使用してセレクターを再記録してください。動的なセレクター(実行時 ID)よりも、安定したセレクター(name、automationId)を使用してください。要素を操作する前に待機条件を追加してください。

認証情報ボルトへのアクセスが拒否される

症状: ボットがボルトから認証情報を取得できない 原因: ロボットのサービスアカウントにボルトへのアクセス権がないか、認証情報レコードが無効です 解決策: ロボットのサービスアカウントに sn_rpa.credential_user ロールがあることを確認してください。認証情報レコードの状態が有効で、正しいロボットグループに割り当てられていることを確認してください。

ボット実行キューの滞留

症状: ボットの実行がキューに入るものの、開始されない 原因: グループ内のすべてのロボットがビジー状態、オフライン、または同時実行数の上限に達しています 解決策: sn_rpa_robot_group でロボットの稼働状況を確認してください。リソースに余裕があれば max_concurrent を増やしてください。水平スケーリングのため、グループにロボットを追加してください。

例

例 1:従業員のオンボーディングボット

シナリオ: 3 つのシステムにわたる新入社員アカウントの作成を自動化する

プロセス定義:

  • 入力:ServiceNow から承認済みの人事オンボーディング申請
  • ステップ 1:Active Directory アカウントを作成する
  • ステップ 2:Exchange にメールボックスを作成する
  • ステップ 3:レガシー人事システムでアクセス権を付与する
  • ステップ 4:ServiceNow のオンボーディングタスクを完了として更新する
例 2:レポート生成ボット

シナリオ: レガシーシステムから週次コンプライアンスレポートを生成して配信します

Tool: SN-Create-Record
Parameters:
  table_name: sn_rpa_bot
  fields:
    name: "Weekly Compliance Report Bot"
    description: "Logs into compliance portal, generates report, downloads PDF, attaches to ServiceNow task"
    bot_type: unattended
    state: draft
    version: "1.0"

トリガー: 毎週月曜日の午前 6:00 にスケジュールされています

関連スキル

  • genai/flow-generation - RPA をほかの自動化と連携させるための Flow Designer
  • genai/playbook-generation - ボットをトリガーする Process Automation のプレイブック
  • genai/spoke-generation - RPA に代わる API ファーストの選択肢としての Integration Hub スポーク
  • admin/workflow-creation - RPA トリガーとのワークフロー連携
  • development/scheduled-jobs - ボット実行のスケジュール設定

コメント