【ServiceNow】OutboundのSOAPデモ【第2回/全2回】
◆やりたいこと
・ServiceNowから実行するOutboundのSOAPの実装をなんとなく理解したい
・フローデザイナからSOAP stepを実行したい
◆方法
・インスタンス同士でSOAP実行してみる
・アウトバウンド側からインバウンド側のインスタンスにインシデント新規起票できたらOK
・起票する際にアウトバウンド側のインシデント管理番号と簡単な説明(short description)の値をインバウンド側のインシデントに入れてみる
◆流れ
・インバウンド側の設定をする(第1回)
・アウトバウンド側の設定をする(第1回)
・手動でSOAPのテスト実行をする(第1回)
・ビジネスルールからSOAP実行をする(第2回)
・フローデザイナからの実行用にクレデンシャルを作る(第2回)
・SOAP実行するアクションを作成しテストする(第2回)
・フローデザイナからSOAP実行をする(第2回)
→第1回のリンク
◆必要なもの
・URLが異なるインスタンス2つ(PDI)
→メールアドレスが2つあれば作れる
◆前提としている知識
・インポートセットと変換マップの使い方
・ビジネスルールの使い方
・フローデザイナの使い方
分からなくても手順通りにやればできると思いますが、
何をやっているか理解したい場合はDocsや無料のNowlearningをやると良いです。
【手順】ビジネスルールからSOAP実行をする
・第1回で作成したSOAP MessageのInsertを表示する(アウトバウンド側)
・エンドポイントをコピーして退避しておく(フローの時に使う)
・関連リンクのPreview Script Usageをクリックする
・表示されたスクリプトの「try { } 」の中だけをコピーする(赤枠内)
var s = new sn_ws.SOAPMessageV2('SOAP_demo', 'insert');
//override authentication profile
//authentication type ='basic'
//r.setAuthentication(authentication type,profile name);
//set a MID server name if one wants to run the message on MID
//r.setMIDServer('MY_MID_SERVER');
//if the message is configured to communicate through ECC queue, either
//by setting a MID server or calling executeAsync, one needs to set skip_sensor
//to true. Otherwise, one may get an intermittent error that the response body is null
//r.setEccParameter('skip_sensor', true);
s.setStringParameterNoEscape('insert.u_short_description', '1st soap test');
s.setStringParameterNoEscape('insert.u_number', 'INCdemo001');
var response = s.execute();
var responseBody = response.getBody();
var status = response.getStatusCode();
・ビジネスルールを新規作成する
・赤枠内を入力する
・Advancedタブをクリックして、Scriptを下記の通りに入力してSave
※デフォルトのScriptを削除して丸々コピペでOK
(function executeRule(current, previous /*null when async*/) {
var s = new sn_ws.SOAPMessageV2('SOAP_demo', 'insert');
//override authentication profile
//authentication type ='basic'
//r.setAuthentication(authentication type,profile name);
//set a MID server name if one wants to run the message on MID
//r.setMIDServer('MY_MID_SERVER');
//if the message is configured to communicate through ECC queue, either
//by setting a MID server or calling executeAsync, one needs to set skip_sensor
//to true. Otherwise, one may get an intermittent error that the response body is null
//r.setEccParameter('skip_sensor', true);
s.setStringParameterNoEscape('insert.u_number', current.number);
s.setStringParameterNoEscape('insert.u_short_description', current.short_description);
var response = s.execute();
var responseBody = response.getBody();
var status = response.getStatusCode();
gs.addInfoMessage('Record Insert');
})(current, previous);
・テスト用にインスタンスレコードを作成する(アウトバウンド側)
・メッセージが出たらさっき作成したビジネスルールが完了しました。
・インバウンド側のインスタンスのインシデントに期待通りのレコードが起票されたことを確認
・検証後、ビジネスルールが不要な場合は非アクティブ化しておく。
「ビジネスルールからSOAP実行をする」はこれで完了です。
【手順】フローデザイナからの実行用にクレデンシャルを作る
・アウトバウンド側で、まずエイリアスを作成。
・赤枠内のように入力し、Save。
・下部に関連リスト「Credentials」が表示されるので、新規作成。
・「Basic Auth Credentials」をクリック
・Nameに任意の名称を入力。
・User nameとPasswordは「インバウンド側のログイン情報」を入力
「フローデザイナからの実行用にクレデンシャルを作る」はこれで完了です。
【手順】SOAP実行するアクションを作成しテストする
・フローデザイナを開く
・アクションを新規作成
・+ボタンをクリックしてstepを表示
・SOAPを選択
・inputsをクリック
・Create inputをクリック
・ラベルに「incident」と入力
・タイプに「reference.incident」と入力
・SOAP stepをクリック
・Operationまで赤枠内のように入力
※EndpointにはSOAP MessageのInsertのFunctionでコピーしておいた値を張り付ける↓
・スクロールして、「SOAP Envelope」に下記Scriptを入力
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://www.service-now.com/u_demo_soap">
<soapenv:Header/>
<soapenv:Body>
<u:insert>
<!--Optional:-->
<u_number></u_number>
<!--Optional:-->
<u_short_description></u_short_description>
</u:insert>
</soapenv:Body>
</soapenv:Envelope>
※Script貼り付け後、緑のデータピルを図のようにドラッグアンドドロップする
・Outputsをクリック
・Create outputをクリック
・LabelとNameを図のように入力し、Exit Edit Modeをクリック
ラベルは「Error code, Error message, Response body, Response headers,Status code」の5個で、Nameにもコピペする。
・作成したOutputにデータパネルのOutputから同じ名称のデータをドラッグアンドドロップする
・全部入れた状態になったら右上のSaveをクリック
・アクションの作成が完了したのでテストの準備をする
・テスト用のインシデントレコードを作成(アウトバウンド側)
・アクションに戻り、Testボタンをクリック
・作成したレコードを選択し、Run Test
・赤枠内のリンクからテスト結果を確認
・HTTPコードが200ならOK
・インバウンド側のインシデントに期待通りのレコードが作成されていることを確認
・テストが問題なければアクションに戻り「Publish」をクリック
「SOAP実行するアクションを作成しテストする」はこれで完了です。
【手順】フローデザイナからSOAP実行をする
・フローを新規作成
・トリガーを下図のように設定
・先ほど作成したSOAPアクションを追加
・アクションのインプットの欄に、右のデータパネルのトリガー「インシデントレコード」をドラッグアンドドロップで入れる。
・図の通りになったらDoneをクリックしてSave。
・フローの作成が完了したので、テストする
・Testをクリック
・+ボタンをクリックしてテスト用のインシデントレコードを起票
・Run Test
・リンクからテスト結果を確認
・HTTPコードが200であればOK
・インバウンド側に期待通りのレコードが作成されていることを確認
・必要に応じてフローをアクティベートする
「フローデザイナからSOAP実行をする」はこれで完了です。
◆参考にしたもの
・YouTube
→英語ですが画面操作があるのでなんとなく言いたいことが分かりました。
やることの前提条件を教えてくれたりして親切でとても分かりやすかったです。
・ServiceNowのDocs
SOAP web service
Outbound SOAP web service
Create a SOAP message
Test the SOAP message
SOAP step
→実装の画面をyoutubeを見て流れを理解して、基本的な知識はDocsで確認すると理解しやすかったです。Docsは必要な情報はまとまっていますが画面イメージが古いので…。
感想
youtubeを観ながら以前にもやってみたのですが、あまり覚えていなかったので備忘を残しておくことにしました。
youtubeは実際の操作が見ることが出来て分かりやすいのですが、
知りたいことだけ見るときにちょっと不便なので…。
目次をつけてみたので見やすいと良いなと思います。
また、最初はSOAPを全く分からないところからのスタートだったので、SOAPは準備が大変そうだと思っていました。(RESTは割と気軽に試せるサイトがいくつかあったのですが…)
ServiceNow同士だとインスタンスさえあればできるので気軽にできて良かったです。