MKIが解説するServiceNow開発blog

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

カタログアイテムから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