13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ズンドコキヨシ with ServiceNow - ServiceNowアプリの作り方

Last updated at Posted at 2017-08-14

夏休みなので、久しぶりにズンドコする。

ネタは、今仕事で担当しているServiceNow

ServieNowとは

ServiceNowはITサービス管理のSaaS。
世界的にはITサービス管理のデファクトスタンダードとなっているが、日本ではこれから盛り上がりそうといった感じ。

アプリケーションを開発するプラットフォームとしての側面もあり、JavaScript(ブラウザ側とサーバ側両方)でServiceNowの機能を拡張し、他システムと連携させたり処理を自動化したりできる。

ServieNowでのズンドコ

ServieNowは非常に多機能なので、ズンドコするにも色々やりかたがある。

ワークフローをくるくる回してズンドコしたり、RESTメッセージをズンドコ送ったり、ズンドコイベントを発生させたり、フォームのジャーナルフィールドでズンドコしたり、UI Page作ってフロントエンドズンドコしたり。

今回は実装が一番簡単そうだった、UI Actionとg_form.addInfoMessage()でズンドコすることにする。

ServiceNowインスタンス取得

ServiceNowインスタンスは普通に買うと年間数百万円くらいするが、調査目的とかであれば無料でディベロッパインスタンスを取得できる。
その手順は、

  1. ServiceNowアカウント作成
    ServiceNowのディベロッパサイトに行って、右上のREGISTERからアカウントを作成する。
    無料。

    sn_dev_site.png

  2. インスタンス取得申請
    ServiceNowのディベロッパサイトに行って、作ったアカウントでログインして、
    トップページのRequest Instanceボタンを押す。
    無料。
    request_instance.png

  3. インスタンスバージョン選択
    インスタンスバージョンを選択する。
    特別な意図がないなら最新版で。今ならJakarta。
    jakarta.png

これだけで即使えるようになる。
ログイン情報は、ユーザIDがadminで、パスワードとインスタンスのURLは、インスタンス申請完了時にディベロッパサイトのトップページに表示される。

パスワードを忘れてログインできなくなったら、Manage Instanceボタンで開く画面の先でパスワードリセットできる。

my_instance.png

アプリ作成

ServiceNowインスタンスにログインすると以下のような画面が出る。
servicenow.png

左上のFilter navigatorのところに「studio」と入力して出てくるメニューをクリックすると、ServiceNowアプリケーションのIDEであるStudioが開く。

studio.png

ここで「Zundoko Kiyoshi」というアプリケーションを作成し、ZundokoGeneratorというScript Includeと、Zundoko KiyoshiというUI Actionを作成。

ZundokoGenerator (Script Include)

zundoko-generator.png

Script Includeはサーバサイドで動く、再利用可能なモジュール。
ServiceNowでは今のところ、サーバサイドJavaScriptはRhino 1.7 R5ベースのエンジンで実行される。
ECMAScript5準拠。
クラスは(多分)Prototype.jsのやつ。

ZundokoGeneratorの作成フォームでは、Client callableにチェックして、Scriptには以下を記入。

var ZundokoGenerator = Class.create();
ZundokoGenerator.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
	
	generate: function() {
		var random = GlideSecureRandomUtil.getSecureRandomIntBound(100);
		return random >= 50 ? 'ズン' : 'ドコ';
	},
	
	type: 'ZundokoGenerator'
});

ZundokoGenerator.generate()で、「ズン」か「ドコ」をランダムに取得できる。

Zundoko Kiyoshi (UI Action)

zundoko-kiyoshi.png

UI Actionは、リストビューやフォームにボタンやリンクを追加して、それを押したときに実行されるサーバサイドかクライアントサイドの処理を定義できる。

Zundoko Kiyoshiの作成フォームでは、Tableに「Incident」を入れて、Show updateClientForm buttonにチェックして、Onclickに「startZundoko()」を入れて、Scriptには以下を記入。

function startZundoko() {
	var zundokoGenerator = new GlideAjax('ZundokoGenerator');
	zundokoGenerator.addParam('sysparm_name', 'generate');
	zundokoGenerator.getXML(showZundoko);
}

var zunCount = 0;
function showZundoko(response) {
	var answer = response.responseXML.documentElement.getAttribute('answer');
	g_form.addInfoMessage(answer);
	
	if (answer == 'ズン') {
		zunCount++;
	} else {
		var isTimeToKiyoshi = zunCount === 4;
		zunCount = 0;
		if (isTimeToKiyoshi) {
			g_form.addInfoMessage('キ・ヨ・シ!');
		}
	}
}

Clientにチェックしたので、このコードはクライアントサイドで動く。
GlideAjaxを使って、さっき作ったZundokoGenerator.generate()をサーバサイドで実行して、レスポンスをshowZundoko()で処理する。

showZundoko()では、ZundokoGenerator.generate()の戻り値をg_form.addInfoMessage()によってフォーム上部に表示し、「ズン」が4回来た後に「ドコ」が来たら「キ・ヨ・シ!」を表示する。

アプリ動作確認

アプリは、Studioで作成したら即使えるようになる。

UI ActionのZundoko KiyoshiのTableに「Incident」と入れたので、IncidentフォームにZundoko Kiyoshiボタンが追加されたはずだ。
Filter navigatorに「incident.list」と入力してEnter押して出てくるIncidentリストビューで、適当なレコードをクリックするとそのフォームが開く。

zundoko-kiyoshi-button.png

右上に件のボタンが。
これを一回押すと「ズン」か「ドコ」が一つ表示される。

doko.png

何回も押していくと…

zundoko.png

勝った。

GitHub連携

作成したアプリはGitHubのリポジトリとリンクさせて、Studioから直接pushしたりできる。
まずGitHubに空のリポジトリを作成して、Studioのメニューバーの、Source ControlLink To Source Controlから、そのリポジトリのURLとGitHubのクレデンシャルを入力するとリンクできる。

今回作ったZundoko Kiyoshiアプリとリンクしたリポジトリはこれ

Studioからタグも作れるので、0.0.1というタグを作って、そこにアプリのUpdate Setを載せておいた。
これをインポートすれば、どのServiceNowインスタンスでもズンドコできる。

13
15
3

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
13
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?