0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ServiceNow:REST APIを使った外部データ連携

0
Posted at

ServiceNow:REST APIを使った外部データ連携

概要

ServiceNowのRESTメッセージ機能を使って外部APIからデータを取得し、カタログアイテムのフォームに動的に反映する実装パターン。


1. RESTメッセージの設定

項目
エンドポイント https://api.example.com/openapi/${target}/?$top=${top}&$skip=${skip}&$filter=${filter}
target APIキーとして設定(接続先テーブル名を動的に切り替え)

${target} などはRESTメッセージのURLパラメータとして定義し、スクリプトから setStringParameterNoEscape() で値を注入する。


2. スクリプトインクルード(サーバーサイド)

AbstractAjaxProcessor を継承したAjaxクラスとして実装。

共通実装パターン

var r = new sn_ws.RESTMessageV2('接続設定名', 'エンドポイント名');
r.setStringParameterNoEscape('target', targetTable);
r.setStringParameterNoEscape('filter', filterString);
r.setHttpTimeout(150000); // タイムアウトは状況に応じて調整(目安:2分半)
var response = r.execute();

if (response.getStatusCode() == 200) {
    obj["status"] = "Success";
    obj["variables"] = JSON.parse(response.getBody()).value;
} else {
    obj["status"] = "Error";
}
return JSON.stringify(obj);

504エラーが頻発する場合は setHttpTimeout() の値をサーバー負荷に配慮しながら調整する


3. クライアントスクリプト(フロントエンド)

onChange トリガーで検索ボタン押下を検知し、GlideAjaxでサーバー関数を呼び出す。

処理フロー

入力値チェック
→ フォーム初期化(選択肢・値クリア)
→ ローディングメッセージ表示
→ GlideAjaxでサーバー関数呼び出し
→ 結果をSelectBoxのOptionに追加
→ 件数メッセージ表示

まとめ

レイヤー 使用機能 役割
設定 RESTメッセージ 接続先・エンドポイント管理
サーバー Script Include(Ajax) API呼び出し・データ整形
クライアント Client Script(GlideAjax) UI操作・ユーザーフィードバック
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?