LoginSignup
2
1

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-06-02

※本投稿は過去に弊社のHatena blog MKIが解説するServiceNow開発blog に掲載した内容を再編集したものです。

はじめに

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

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をクリックします。
image.png

Nameにcsvファイル名、Import set table nameに中間テーブル名を入力し保存します。
image.png

フォーマットとなるcsvファイルを添付します。
image.png

csvファイルをロードし、中間テーブルを作成します。
image.png

② Table Transform Map
Data Sourcesの関連リストにあるTransformsタブのNewをクリックしてください。
image.png

NameにTable Transform Mapの名前、Source tableにData Sourcesの登録時に設定した中間テーブル、Target tableにインポート先のテーブルを設定し保存します。
image.png

Mapping Assistから項目のマッピングを行います。
image.png
image.png
image.png

③ Scheduled Data Import
Scheduled Import Sets配下にあるScheduled Importsを選択し、Newをクリックします。
image.png

NameにScheduled Data Importの名前、Data Sourceに①で作成したData Sourceを設定します。
今回はFlow Designerのタイミングでのみ実行するのでActiveをFalseに設定します。
image.png

④ Flow Designer
③で作成したScheduled Data Importを実行するためのアクションを作成します。
NameとCategoryを設定します。
image.png

Inputに設定する引数を設定します。
参照先のテーブルはScheduled Data Importテーブルを設定します。
image.png
image.png

Scriptのアクションを追加します。
image.png

Input Variables にInputsで設定したScheduled Data ImportのデータのSys ID を設定します。
image.png

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

(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のアクションの作成は省略しております
image.png

Flowを作成し、TriggerにはService Catalogを設定します。
ActionからGet Catalog Variablesを選択します。
image.png

Submitted RequestにはTriggerのRequest Itemを指定します。
image.png

Template Catalog Itemに申請に使用するカタログアイテムを選択します。
image.png

次に、申請の添付ファイルの情報を取得するための処理を実装します。
ActionからLook Up Attachmentを選択します。
image.png

Source RecordにはTriggerのRequest Itemを指定します。
image.png

次に、申請の添付ファイルの情報をもとにAttachmentテーブルから情報を取得するための処理を実装します。
ActionからLook Up Attachmentを選択します。
image.png

TableにはAttachmentテーブル、ConditionにはSys IDが一つ前のActionで取得した申請の添付ファイルのSys IDと一致するように設定します。
image.png

次に、すでにSource Recordに添付されているファイルを現在の申請の添付ファイルを複製する前に削除する処理を実装します。
ActionからDelete Attachmentを選択します。
image.png

Source Recordには①で作成したData Sourceのレコード、TableにはData Sourceテーブルを設定します。
Delete All Attachments?はTrueにします。
image.png

次に、申請の添付ファイルをData Sourceのレコードに複製を行います。
ActionからCopy Attachmentを選択します。
image.png

Source Attachment Recordには二つ前のActionで取得したAttachmentテーブルでの申請の添付ファイルのレコード、Target Recordには①で作成したData Sourceのレコード、TableにはData Sourceテーブルを設定します。
image.png

最後に、Scheduled Data Importを実行するアクションを追加します。
Actionから④の最初に作成したアクションを選択します。
image.png

Scheduled Data Importには、③で作成したScheduled Data Importを選択します。
image.png

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

おわりに

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

三井情報株式会社
ソリューション技術本部
ITマネジメント技術部
第一技術室
甲田善寛

2
1
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
2
1