MKIが解説するServiceNow開発blog

ServiceNow にまつわるMKIナレッジを紹介いたします。

Virtual Agentの初期設定および基本的な使い方

はじめに

みなさんこんにちは、三井情報株式会社です。

今回はVirtual Agentの初期設定および基本的な使い方についてご紹介致します。

 

設定方法

プラグインよりGlide Virtual Agentをインストールすることで利用可能です。

※Virtual Agentの利用にはITSM ProfessionalまたはEnterpriseライセンスが必要です。

f:id:mki-blog:20220121170159p:plain

 

  • 挨拶の設定

始めにサービスポータル上でVirtual Agentを開いた時の挨拶の文章を編集します。

フィルタナビゲータに「sys_properties.list」と記入しEnterキーを押下します。

システムプロパティが開くので「新規」を押下します。

f:id:mki-blog:20220121170225p:plain

 

新規レコードを以下のように設定し、「送信」を押下します。

名前:com.glide.cs.general.welcome_message

説明:Welcome Message

タイプ:文字列(自動入力)

値:こんにちは!

f:id:mki-blog:20220121170400p:plain

 

もう一つ新規レコードを以下のように設定して、「送信」を押下します。

名前:com.glide.cs.general.top_selection_message

説明:Top selection message

タイプ:文字列(自動入力)

値:何かお困りでしょうか?

f:id:mki-blog:20220121170418p:plain

 

ここで設定した値がサービスポータルでチャットボットを開いた時に最初に表示されるメッセージになります。

f:id:mki-blog:20220121170435p:plain

 

  • 自社カスタムおよびチャットメニュー

 

フィルタナビゲータにて「Conversational Interfaces」で検索し、「自社カスタム設定およびチャットメニュー」を選択し、リストから「Default Branding」を選択します。

f:id:mki-blog:20220121170628p:plain

 

ここではチャットボットの画面のヘッダーやロゴ、背景色などが変更できます。

試しに以下のヘッダーの文章とその背景色を変更します。

チャットヘッダー:Now Support → チャットボット

チャットヘッダーバックグラウンド:#4E7D88 → #FF7315

f:id:mki-blog:20220121170650p:plain

 

サービスポータル側で変更が確認できます。

f:id:mki-blog:20220121170708p:plain

 

  • 仮想エージェントデザイナー(Virtual Agent Designer)

ここからVirtual Agentでの会話のやりとり(以下、フロー)を作成していきます。

フィルタナビゲータから「仮想エージェント」で検索し、Conversational Interfaces配下にある「仮想エージェント>デザイナー」を選択してデザイナーのページを開きます。「+作成」を押下して新規作成します。

f:id:mki-blog:20220121170726p:plain

 

「+作成」を押下すると「トピックのプロパティ」のページが表示されるため、名前、説明、タイプ:「トピック」、キーワードを設定し、「作成」を押下します。

※プロパティは後からでも編集可能です。

「i記号」を押下するとそれぞれの機能の使い方のヒントが確認できます。

f:id:mki-blog:20220121170753p:plain

 

左側のコンポーネントドラッグアンドドロップで開始と終了の間に持ってくることでフローの中に追加することが可能です。コンポーネントには以下の3種類があります。

・ユーザー入力:Virtual Agent上でユーザーが入力する。青色アイコン

・ボット応答:Virtual Agentが自動で回答する。橙色アイコン

・ユーティリティ:フローの分岐やスクリプトなどの設定が可能。黒色アイコン。

f:id:mki-blog:20220121170915p:plain

 

テキストコンポーネントドラッグアンドドロップで追加し、このコンポーネントの基本情報を設定します。アスタリスクが付いている項目は必ず設定する必要があります。

・名前:設定すると自動で下の変数名が設定されます。名前に入力された文字が英語でない場合、変数名は「__」となります。

・テキスト入力形式:デフォルトの「テキスト」以外にメールやURLなども設定可能です。

・プロンプト:チャットボット上でユーザーから見える文章になります。

f:id:mki-blog:20220121170955p:plain

 

入力が完了したら右上の「保存」を押下して「テスト」を押下し、動作確認します。

f:id:mki-blog:20220121171013p:plain

 

「ここに回答を入力してください」にカーソルを当てて回答を入力し、Enterキーまたは右向きの三角ボタンを押下して送信します。

f:id:mki-blog:20220121171034p:plain

 

「-------」のような点線が表示されたら、フローが終了した合図です。

 

橙色は自動応答です。以下のように設定してテストしてみます。

名前:wait a moment

応答メッセージ:少々お待ちください。

f:id:mki-blog:20220121171050p:plain

 

「保存」して「テスト」を押下して確認します。

f:id:mki-blog:20220121171111p:plain

 

ユーザー入力の「静的選択」とユーティリティの「決定」を用いて分岐を設定します。

静的選択では「はい」「いいえ」を設定し、決定では「+」を押下して矢印を増やし、矢印をクリックして分岐条件を設定します。

f:id:mki-blog:20220121171129p:plain

f:id:mki-blog:20220121171201p:plain

 

「保存」して「テスト」して分岐していることを確認します。

f:id:mki-blog:20220121171216p:plain

 

全てのコンポーネントを紹介しきれないため、ここでは割愛させていただきます。

 

 

おわりに

今回はVirtual Agentの基本的な使い方をご紹介させていただきました。

最後まで読んでいただき、ありがとうございました。

 

三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
下村光輝

 

www.mki.co.jp

Rome検証①リンクの展開

はじめに

みなさんこんにちは、三井情報株式会社です。

今回から、昨年10月にリリースされたNow Platformの最新版「Rome」についてご紹介していきます。特に、VirtualAgentの新機能について特集します。

 

VirtualAgentとは?

人工知能を活用した会話形式のチャットボットです。情報を取得したり、意思決定を行ったり、一般的な作業の実行を支援します。最大のメリットは、昼夜を問わずすぐにチャットボットの支援を受けられる点です。

 

今回は、VirtualAgentで「リンク」コンポーネントを使用すると、リンク先の画像や動画のプレビューが表示されることを検証しました。

 

 

リンクの展開(プレビュー)

RomeバージョンからVirtualAgentでリンクコンポーネントを使用するとプレビューが表示されるようになりました。ここではその設定方法を記載します。

 

 

「ホスト名許可リスト」にホスト名やドメイン名を追加

①フィルターナビゲーターで「sys_cs_hostname_allow.list」と検索し、「新規」を押下。

 ※既にインスタンスやServiceNow HP、YouTubeの5件は設定されています。

f:id:mki-blog:20220114130343p:plain

 

②プレビューしたいリンクのホスト名かドメイン名のレコードを新規作成する。

f:id:mki-blog:20220114130433p:plain

f:id:mki-blog:20220114130438p:plain

 

 

仮想エージェントデザイナーに移動し、トピックを作成

①仮想エージェント>デザイナー を開き、トピックを選択または新規作成する

f:id:mki-blog:20220114130513p:plain

 

②トピックを開き、コンポーネントのボット応答から「リンク」をノードに追加する

f:id:mki-blog:20220114130537p:plain

 

③応答プロパティで各項目を設定する

f:id:mki-blog:20220114130613p:plain

f:id:mki-blog:20220114130619p:plain

 

④項目の設定が完了したら公開し、サービスポータルで確認

f:id:mki-blog:20220114130639p:plain


⑤プレビューが表示されました!

f:id:mki-blog:20220114130740p:plain

YouTubeのような動画のリンクではチャットボットのウィンドウ内で再生・一時停止などの操作が可能です。



注意事項

利用する上で注意が必要な点をこちらにまとめています。

  1. プレビューが表示できるのはドメイン名が「.com」のリンクのみです。
  2. リンク先ページにHTMLのOGタグが設定されている必要があり、VirtualAgentでは画像・ビデオ・テキストのみ対応しています。
  3. YouTube動画の埋め込み部分では、日本語やハイフンなどの特殊文字は文字化けします。

※ServiceNow UIページにOGタグをつける方法やリンクの展開(プレビュー)を無効化する方法は公式ドキュメントをご参照ください。

 

おわりに

いかがでしたでしょうか。プレビューが表示されることによりユーザーの興味や関心を惹きやすくなるので、研修の動画やナレッジなど閲覧させたいものに目を通してもらいやすくなります。また、動画についてはチャットボットのウィンドウ内で閲覧が可能なため、迅速に次の会話につなげることができます。ぜひ利用してみてください。

 

 

三井情報株式会社

ソリューション技術本部

クラウドソリューション部

第四技術室

野口 唯

www.mki.co.jp

REST APIを使用してDocuSignの申請データを作成

はじめに

みなさんこんにちは、三井情報株式会社です。

DocuSign連携シリーズ第二弾としてREST APIを使用してDocuSignの申請データ(エンベロープ)を作成する方法をご紹介します。
前回ご紹介した方法では申請直後のみの連携でしたが、今回ご紹介するRESTメッセージを活用するとフローの好きなタイミングでエンベロープが作成できるようになります。
ServiceNow上で最終承認まで下りた後に正式な電子署名ドキュメントを作成したい、という時に活用できると考えています。

また認証設定をしたり、REST APIを呼び出したりと汎用性のある実装方法なので是非目を通していただけたらと思います。

~DocuSign連携シリーズ~

カタログアイテムからDocuSignへ遷移
REST APIを使用してDocuSignの申請データを作成 ←今回
③DocuSignでのフローの進行状況を取得

連携時の動き

今回ご紹介する連携時の動作は以下のとおりです。
1. ServiceNowでワークフローを承認。
2. DocuSignのREST API(Create an Envelope)を呼び出し、申請内容をもとにエンベロープを作成する
3. DocuSignから承認者へ依頼メールが送信される。承認作業はDocuSign上で行う。
f:id:mki-blog:20220107175741p:plain

使用する機能

今回使用する機能は以下です。
図中の番号順に設定方法を解説します。
f:id:mki-blog:20220107175813p:plain

①テンプレート(DocuSign)

DocuSignでテンプレートを事前に作成し、テンプレートIDを控えておきます。
詳しい作成方法はこちらのDocuSign eSignatureユーザーガイドを参照してください。
作成する際には [受信者情報]に必ず申請者と承認者欄を作成してください。
[役割名]は必須、[名前]と[メール]はREST APIから取得する場合は空白で構いません。
f:id:mki-blog:20220107174415p:plain

➁アプリとインテグレーションキーの作成(DocuSign)

ServiceNowとの認証設定を行います。
【操作方法】
1. DocuSign eSignature[設定]タブで[アプリとキー]>>[アプリ/インテグレーションキーの追加] >>アプリ名を入力>>アプリの作成 の順にクリックします。
2. 各項目を以下のように入力します。
f:id:mki-blog:20220107175934p:plain
※ServiceNowのアプリケーションレジストリの設定については「③認証設定」で解説します。

【画面イメージ】
f:id:mki-blog:20220107175946p:plain

③認証設定(Servicenow)

アプリケーションレジストリ

DocuSignとの認証設定を行います。
【操作方法】
1. システムOauth>>アプリケーションレジストリ>>新規>>サードパーティ OAuth プロバイダーに接続します をクリックし、新規作成画面を起動します。
2. 各項目を以下のように入力します。
f:id:mki-blog:20220107180011p:plain
【画面イメージ】
f:id:mki-blog:20220107180030p:plain

アクセス制御(ACL

OOTBではアプリケーションレジストリを登録したユーザ以外はトークンを使用できません。
そのためACLを追加することで全ユーザが今回登録したトークンを使用できるように設定します。
【操作方法】
1. ログインユーザのロールを昇格(security_adminを一時的に付与)します。
2. システムセキュリティ>>アクセス制御(ACL)>>新規 をクリックし、新規作成画面を起動します。
3. 各項目を以下のように入力します。

Oauth資格情報[oauth_credential]

f:id:mki-blog:20220107180055p:plain
【画面イメージ】
f:id:mki-blog:20220107180107p:plain

Oauth資格情報[oauth_credential] - トーク

f:id:mki-blog:20220107180129p:plain
【画面イメージ】
f:id:mki-blog:20220107180144p:plain

REST APIの設定(ServiceNow)

RESTメッセージ(親)

DocuSignのREST API(Envelopes:Create)のリクエストを作成します。

【操作方法】
1. システムWebサービス>>RESTメッセージ の順にクリックし、新規作成画面を起動する。
2. 各項目を以下のように入力します。
f:id:mki-blog:20220107180231p:plain
【画面イメージ】
f:id:mki-blog:20220107180244p:plain
3. 画面上部で右クリック>>保存 をクリックし、画面中央部の関連リンク-Oauthトークンの取得 をクリックします。

RESTメッセージ(子)

リクエスト本文を作成していきます。
【操作方法】
1. システムWebサービス>>RESTメッセージ>>RESTメッセージ関数>>新規 の順にクリックし、新規作成画面を起動します。
2. 各項目を以下のように入力します。
f:id:mki-blog:20220107180313p:plain
【画面イメージ】
f:id:mki-blog:20220107180325p:plain

[HTTP要求-コンテンツ]にリクエストボディをJSON形式で記載してきます。
詳しくはDouSignのAPI Referenceを参照してください。

{
   "status": "sent", ※1
    "templateId": “XXXXXXXXX",
    "templateRoles": [ ※2
        {roleName”: “●●●",
            "email": "${email_1}",
            "name": "${name_1}",
            "routingOrder": "1"
        },
        {roleName”: “▲▲▲",
            "email": "${email_2}",
            "name": "${name_2}",
            "routingOrder": "2"
        },
        {roleName”: “■■■",
            "email": "${email_3}",
            "name": "${name_3}",
            "routingOrder": "3"
        }
    ]
}


※1. status:createdまたはsentを指定する。createdはエンベロープを下書き保存するステータスのため、エンベロープ作成直後に承認依頼を出したい今回はsentとする。
※2. templateRoles:テンプレートで設定している受信者情報を指定する。受信者の数だけ記載する。サンプルスクリプトは受信者3名のケース。
  ・roleName:テンプレートの受信者の役割を指定。
  ・email:受信者の「メール」を指定。ServiceNowの申請画面で指定した値を指定する場合は、変数とするため${email_1}といった書き方をする。今回は変数にセットする値はFlow Designerで指定する。
  ・name:受信者の「名前」を指定。Emailと同じく変数としたい場合は${name_1}といった書き方をする。
  ・routingOrder:受信者のルーティング順序を指定する。

⑤ワークフローエディタ

ワークフローから④で作成したRESTメッセージを呼び出します。
【操作方法】
1. ワークフロー>>ワークフローエディタ をクリックします。
2. 右上の「新規ワークフロー」ボタンを押下して、フローを作成します。
作成方法は公式ドキュメントを参照してください。
3. REST APIを呼び出したいノードに「スクリプトを実行」アクティビティを配置します。
f:id:mki-blog:20220107180458p:plain
4. 以下のようにスクリプトを記載します。

var requestBody;
var responseBody;
var status;
var sm;
try{
	
 sm = new sn_ws.RESTMessageV2("docusign", "Envelopes_create"); ※1
 sm.setStringParameterNoEscape(email_1 ', currentEmail); ※2
 sm.setStringParameterNoEscape(name_1 ', currentName); ※2
 var response = sm.execute();
 responseBody1 = response.haveError() ? response.getErrorMessage() : response.getBody();

} catch(ex) {
 responseBody2 = ex.getMessage();
 status = '500';
} finally {
 requestBody = sm ? sm.getRequestBody():null;
}

<スクリプトの補足>
※1. RESTMessageV2(“name", "methodName")
name :RESTメッセージ(親)の名前
methodName :RESTメッセージ(子)の名前

※2. setStringParameterNoEscape (“name", “value")
name :RESTメッセージのコンテンツ内に定義した変数名
value :変数に割り当てる値

設定は以上です。
キャプチャのようにフローを作成すると、申請→承認が完了するとDocuSign上にエンベロープが作成されます。

おわりに

いかがでしたでしょうか。
フローを作成するまでの事前設定が複数あるので難しく感じますが、特に認証設定は一度設定するだけで完了する便利な機能です。
興味のある方はぜひ試してみてください。
最後まで読んでいただき、ありがとうございました。


三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
佐久間 衣歩
www.mki.co.jp

ServiceNowにWebhookでデータ連携

はじめに

みなさんこんにちは、三井情報株式会社です。
ServiceNowにWebhookでデータ連携する際の機能について紹介したいと思います。
Webhookに関しては、以前「HMAC-SHA256を利用したwebhookメッセージの検証方法」というタイトルで投稿しているため、気になる方はご確認ください。

Script REST APIs

今回紹介させていただく機能はServiceNowにてAPIを作成するための機能です。

ServiceNow Docs 「Scripted REST APIs」:
https://docs.servicenow.com/bundle/rome-application-development/page/integrate/custom-web-services/concept/c_CustomWebServices.html

Scripted REST APIsを使い、他のシステムからデータ受信し、ServiceNowのテーブルにレコードを作成する検証を実施しました。本題に入る前に、ご存知の方が多いと思いますが、簡単にAPIやRESTAPIについて記載します。

APIとは?

Application Programming Interfaceの略
・ソフトウェアやプログラム、Webサービスの間をつなぐインターフェースのこと

REST APIとは?

・RESTの設計原則に基づいて設計されたAPIのこと

RESTの設計原則とは?

URI(HTTPのパス)が名詞形であること
・リソースの操作(作成/閲覧/変更/削除)をHTTPのメソッドにより指定できること
・レスポンス形式がJSONもしくはXMLであること



次に、具体的なServiceNowでの設定項目と検証結果について記載します。

Script REST APIs 設定項目

System Web Service > Scripted Web Services > Scripted REST APIs > New
f:id:mki-blog:20211224094727p:plain

Name:APIの名前
API ID:サービスのIDを設定
入力後Submitすると下記のような画面に遷移します。先ほど指定したIDからBase API pathが自動で作成されます。
f:id:mki-blog:20211224094749p:plain

画面下部のタブResourcesのNewを押下すると下記の画面になります。
この画面で、作成したいAPIメソッドやスクリプトを作成します。
f:id:mki-blog:20211224094805p:plain

検証では、HTTP methodをPOSTにしました。スクリプトは、POSTされたデータを指定したテーブルのレコードとして新規挿入するようにしてみました。

スクリプトイメージ

var req_data = request.body.dataString;
	
	var now_GR = new GlideRecord("レコードを挿入したいTable名");
	now_GR.initialize();
	
	for (var i = 0; i < data.length; i++){
		
		var data_2 = data[i].split(",");
		
		if( data[i].indexOf("Hatena") > -1 ){
			now_GR.u_test_column1 = data_2[1];
		}else{
			now_GR.u_test_column2 = data_2[1];
		}
		
	}
	
	now_GR.insert();

Script REST APIs 検証結果

想定通り、POSTで受けとったデータの情報を基に、レコードを作成することができました!!

おわりに

いかがでしたでしょうか。標準で用意されているREST APIではできない処理を外部システムから起動する際に、是非利用してみてください。今回の検証では、認証を検証しませんでしたが、API実行時にACLでユーザー認証を実施できるようなので、今後は認証の検証にも挑戦したいです。
最後まで読んでいただき、ありがとうございました。

三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
鈴木 聡太
www.mki.co.jp

Workflowアクティビティ一括検索データベースビューについて

はじめに

みなさんこんにちは、三井情報株式会社です。

 

突然ですが、ServiceNowのWorkflowでどんなアクティビティが存在するか、指定したスクリプトが使われているアクティビティがどれかを調べるのに苦労したことはありませんか?

基本的には1つ1つアクティビティを開かないと確認できず、複数のアクティビティを一括で検索するツールも標準では用意されていません。

そこで、今回は現在PublishとなっているWorkflowに含まれるアクティビティを一覧表示するDatabase Viewを作成し、Workflowに使用されているアクティビティやそのアクティビティで設定されている値やスクリプトを検索する方法をご紹介させて頂きます。

 

今回利用する機能

Database View

 

テーブル構成

Workflowの情報は複数のテーブルで管理されており、今回利用するテーブルとテーブル同士の関係性は以下になっております。

 

f:id:mki-blog:20211217115020p:plain

wf_workflow_version

 Workflowの特定のバージョン (公開されたバージョンまたはチェックアウトされたバージョン)を管理する

 

wf_activity

 Workflowで使用されているアクティビティを管理する

 

sys_variable_value

 様々なテーブルの変数(WorkflowやFlow Designerなどに設定された情報)を管理する

 

設定方法

Database View全体としては以下となり、View Tableを4つ使用しています。

f:id:mki-blog:20211217115139p:plain

 

Orderが100となっているwf_workflow_versionのView Tableは以下の設定となっています。

f:id:mki-blog:20211217115224p:plain

 

Orderが200となっているwf_workflow_versionのView Tableは以下の設定となっています。ここで再度wf_workflow_versionのView Tableを作成している理由は、wf_workflow_versionのレコードのうちpublish=trueのみというフィルターをかけたいのですが、View Table単体では使用できないため、同一テーブルを参照したView Tableを2つ作成してjoinしています。

f:id:mki-blog:20211217115310p:plain

 

wf_activityのView Tableは以下の設定となっています。

WorkflowとWorkflowで使用しているアクティビティを結びつけています。

f:id:mki-blog:20211217115351p:plain

 

sys_variable_valueのView Tableは以下の設定となっています。

Workflowアクティビティと変数を結びつけています。

f:id:mki-blog:20211217115519p:plain

 

これでDatabase Viewの作成は完了です。Database Viewを実行し、Workflow名や指定したスクリプトでフィルタリングしてWorkflowで使用しているアクティビティがヒットすれば成功です。

以下は弊社インスタンスで稟議申請の中でBoxと連携を行っているスクリプトを含んでいるアクティビティをフィルタリングした結果になります。

f:id:mki-blog:20211217115625p:plain

 

おわりに

今回の検証により、Database Viewを利用しWorkflowに存在するアクティビティを調査することができるようになりました。

最後まで読んでいただき、ありがとうございました。

 

三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
甲田善寛

www.mki.co.jp

Flow Designerによるcsvファイル自動インポートフロー

はじめに
みなさんこんにちは、三井情報株式会社です。

ServiceNowのCatalog Itemでは、申請者側に可変的な情報を入力してもらうために Multi-row variable set(以下、MRVS)を使用するケースがあります。
しかし、 MRVS は1件ずつ登録や編集する形式ですので、入力してもらう情報が何十件、何百件となると申請者側へ負担がかかってしまいます。
そこで、申請者側の負担を軽減する方法として、申請者側 はcsvファイルに申請情報を登録し、そのcsvファイルをServiceNow内でインポートする形式を考え、今回Catalog Itemに添付されたcsvファイルを自動でインポートする処理を検証しましたのでご紹介したいと思います。
本記事では、添付されたcsvファイルの内容を会社テーブルにインポートする処理を例に説明させて頂きます。

今回利用する機能
Data Sources
Table Transform Map
Scheduled Data Imports
Flow Designer

設定方法
① Data Sources
System Import Sets配下にあるData Sourcesを選択し、Newをクリックします。
f:id:mki-blog:20211210111441p:plain

Nameにcsvファイル名、Import set table nameに中間テーブル名を入力し保存します。
f:id:mki-blog:20211210111521p:plain

フォーマットとなるcsvファイルを添付します。
f:id:mki-blog:20211210111533p:plain

csvファイルをロードし、中間テーブルを作成します。
f:id:mki-blog:20211210111548p:plain

② Table Transform Map
Data Sourcesの関連リストにあるTransformsタブのNewをクリックしてください。
f:id:mki-blog:20211210111604p:plain

NameにTable Transform Mapの名前、Source tableにData Sourcesの登録時に設定した中間テーブル、Target tableにインポート先のテーブルを設定し保存します。
f:id:mki-blog:20211210111617p:plain

Mapping Assistから項目のマッピングを行います。
f:id:mki-blog:20211210111632p:plain

f:id:mki-blog:20211210111645p:plain

f:id:mki-blog:20211210111659p:plain

③ Scheduled Data Import
Scheduled Import Sets配下にあるScheduled Importsを選択し、Newをクリックします。
f:id:mki-blog:20211210111720p:plain

NameにScheduled Data Importの名前、Data Sourceに①で作成したData Sourceを設定します。
今回はFlow Designerのタイミングでのみ実行するのでActiveをFalseに設定します。
f:id:mki-blog:20211210111736p:plain

④ Flow Designer
③で作成したScheduled Data Importを実行するためのアクションを作成します。
NameとCategoryを設定します。
f:id:mki-blog:20211210111750p:plain

Inputに設定する引数を設定します。
参照先のテーブルはScheduled Data Importテーブルを設定します。
f:id:mki-blog:20211210111805p:plain

f:id:mki-blog:20211210111828p:plain

Scriptのアクションを追加します。
f:id:mki-blog:20211210111839p:plain

Input Variables にInputsで設定したScheduled Data ImportのデータのSys ID を設定します。
f:id:mki-blog:20211210111853p:plain

Scriptには以下の通り設定し保存します。

(function execute(inputs, outputs) {
  var exportGr = new GlideRecord('scheduled_import_set');
  exportGr.addQuery('sys_id', inputs.scheduledDataImport);
  exportGr.query();
  
  if (exportGr.next()) {
    gs.executeNow(exportGr);
  }

})(inputs, outputs);

アクションの作成が完了したら、次はフローの作成を行います。
全体としては以下の通りですが、Action 2のCreate Catalog Taskは運用担当者が申請内容を確認する想定で追加したもので、自動インポートの処理に関わるものではありませんので省略しても問題ありません。
※本記事ではCreate Catalog Taskのアクションの作成は省略しております
f:id:mki-blog:20211210112117p:plain

Flowを作成し、TriggerにはService Catalogを設定します。
ActionからGet Catalog Variablesを選択します。
f:id:mki-blog:20211210112132p:plain

Submitted RequestにはTriggerのRequest Itemを指定します。
f:id:mki-blog:20211210112148p:plain

Template Catalog Itemに申請に使用するカタログアイテムを選択します。
f:id:mki-blog:20211210112203p:plain

次に、申請の添付ファイルの情報を取得するための処理を実装します。
ActionからLook Up Attachmentを選択します。
f:id:mki-blog:20211210112219p:plain

Source RecordにはTriggerのRequest Itemを指定します。
f:id:mki-blog:20211210112241p:plain

次に、申請の添付ファイルの情報をもとにAttachmentテーブルから情報を取得するための処理を実装します。
ActionからLook Up Attachmentを選択します。
f:id:mki-blog:20211210112352p:plain

TableにはAttachmentテーブル、ConditionにはSys IDが一つ前のActionで取得した申請の添付ファイルのSys IDと一致するように設定します。
f:id:mki-blog:20211210112409p:plain

次に、すでにSource Recordに添付されているファイルを現在の申請の添付ファイルを複製する前に削除する処理を実装します。
ActionからDelete Attachmentを選択します。
f:id:mki-blog:20211210112423p:plain

Source Recordには①で作成したData Sourceのレコード、TableにはData Sourceテーブルを設定します。
Delete All Attachments?はTrueにします。
f:id:mki-blog:20211210112514p:plain

次に、申請の添付ファイルをData Sourceのレコードに複製を行います。
ActionからCopy Attachmentを選択します。
f:id:mki-blog:20211210112528p:plain

Source Attachment Recordには二つ前のActionで取得したAttachmentテーブルでの申請の添付ファイルのレコード、Target Recordには①で作成したData Sourceのレコード、TableにはData Sourceテーブルを設定します。
f:id:mki-blog:20211210112550p:plain

最後に、Scheduled Data Importを実行するアクションを追加します。
Actionから④の最初に作成したアクションを選択します。
f:id:mki-blog:20211210112608p:plain

Scheduled Data Importには、③で作成したScheduled Data Importを選択します。
f:id:mki-blog:20211210112626p:plain

実装は以上になりますので、実際にサービスカタログから申請を行い、自動でインポートされていれば成功です。

おわりに
今回の検証により、 Catalog Item で可変的な情報を申請する方法として、MRVS以外にcsvファイルでのインポートも採用できるようになりました。
最後まで読んでいただき、ありがとうございました。

三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
甲田善寛
www.mki.co.jp

カタログアイテムからDocuSignへ遷移

はじめに

みなさんこんにちは、三井情報株式会社です。

突然ですがDocuSignという製品をご存知ですか?
DocuSignとは、世界シェアNo.1・グローバルスタンダードの電子署名サービス「DocuSign eSignature」をコア製品とする、「ビジネスの合意形成」のためのクラウドプラットフォームです。
各企業でテレワークが導入されペーパーレス化が求められている今、大活躍間違いなしの製品ですね。
三井情報でも取り扱いがあるので、ぜひ専用ページをご覧ください。


今回からDocuSign連携シリーズとして下記の3本立てでご紹介していきます。
①カタログアイテムからDocuSignへ遷移 ←今回
➁DocuSignのREST APIを使用して申請データを作成
③DocuSignでのフローの進行状況を取得

今回はServiceNowのカタログアイテムで申請を起票→DocuSign上でワークフローを回すための連携方法をご紹介します。

連携時の動き

今回ご紹介する連携時の動作は以下のとおりです。
1. ServiceNowのカタログアイテムで申請概要、承認者を指定する。
2. カタログアイテムで[送信]をクリックするとDocuSignの申請フォーム(PowerForm)へ遷移する。
3. DocuSignの申請フォーム(PowerForm)で申請内容を入力し[完了]をクリックする。
4. 後続の承認者へDocuSignから承認依頼メールが送付される。承認作業はDocuSign上で行う。

使用する機能

今回使用する機能は以下です。
図中の番号順に設定方法を解説します。
f:id:mki-blog:20211203175522p:plain

①PowerForm(DocuSign)

カタログアイテムからの遷移先フォームを作成します。
詳しい作成方法はこちらのDocuSign eSignatureユーザーガイドを参照してください。
作成する際には [受信者情報]に必ず申請者と承認者欄を作成してください。
[役割名]は必須、[名前]と[メール]はカタログアイテムから取得する場合は空白で構いません。
f:id:mki-blog:20211203170623p:plain

また、PowerFormを作成するとURLが生成されます。ServiceNow側の処理で使用するため、控えておきましょう。
f:id:mki-blog:20211203170707p:plain

➁カタログアイテム

カタログアイテムでServiceNowでの申請画面を作成します。
詳しい作成方法はServiceNowの製品ドキュメントを参照してください。

③カタログクライアントスクリプト

カタログアイテムで[送信]をクリックした際の処理を作成します。
今回は
① [onSubmit]のタイミングでHTML要素を作成
② DocuSignのPowerFormを別タブで開く
という処理にします。

画面上部での設定内容は以下のとおりです。
f:id:mki-blog:20211203171949p:plain


次に[スクリプト]欄にスクリプトを記載します。

function onSubmit() {
//カタログの入力値をDocuSignへパスするためHTML要素を生成
  var form = this.document.createElement('form');
  this.document.body.appendChild(form);
  var input = this.document.createElement('input’);

//PowerForm署名者情報
  input = input.cloneNode(false);
  input.setAttribute('name', '作成者_UserName'); ※1
  input.setAttribute('value', g_form.getValue('sakuseisya')); ※2
  form.appendChild(input);
  input = input.cloneNode(false);
  input.setAttribute('name', '作成者_Email');
  input.setAttribute('value', g_form.getValue('email'));
  form.appendChild(input);

//PowerForm入力フォーム
  input = input.cloneNode(false);
  input.setAttribute('name', 'kenmei'); ※3
  input.setAttribute('value', g_form.getValue('kenmei')); ※4
  form.appendChild(input);
  input = input.cloneNode(false);
  input.setAttribute('type', 'hidden'); ※5
  input.setAttribute('name', 'kyokaNo');
  input.setAttribute('value', '12345');
  form.appendChild(input);

//リダイレクト先(PowerFormのURL)
  var url = ‘https://~~~~~’;

//Submit
  form.setAttribute(‘target’, ‘newtab’); 
  form.setAttribute('action', url);
  form.setAttribute('method', 'post’);
  form.submit();
}
スクリプトに関する補足

「PowerForm署名者情報」について
※ 1. name:受信者の役割_UserNameと、役割_Emailを指定
※ 2. value:パスする値を指定
・ 「PowerForm署名者情報」にはUserNameとEmailをPowerFormで設定した受信者の数だけ記載します。
・ また、役割名はDocuSignのテンプレート編集画面で入力させた値と一致させてください。
f:id:mki-blog:20211203172353p:plain


「PowerForm入力フォーム」について
※ 3. name:DocuSignで設定している入力フィールドのデータラベル名を指定
※ 4. value:パスする値を指定
※ 5. type,hidden:値はパスするが直後の承認では表示したくない場合に使用する(例:1番目ではなく2番目の承認者の作業タイミングで使用したい場合)。
f:id:mki-blog:20211203172617p:plain

設定は以上です。

カタログアイテムで入力した申請者や承認者、その他申請内容がonSubmitのスクリプトによりDocuSignのPowerFormにパスされることでServiceNowとDocuSignの連携が実現できました。

おわりに

今回の連携処理はDocuSignの電子署名サービスを利用したいけれど申請の入り口はServiceNowが良い、という場合に活用できるのではと思っています。
次以降の投稿で、DocuSignのREST APIを使用した連携方法や、DocuSignでのフローの進行状況をServiceNowから確認するための実装方法もご紹介する予定です。

最後まで読んでいただき、ありがとうございました。

三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第二技術室
佐久間 衣歩

www.mki.co.jp