みなさん、こんにちは。エンタープライズ・ソリューション開発部のももです。
ServiceNowのWorkspaceを新規構築した時、画面遷移時のパラメータの受け渡しが簡単に実装できる方法が判明しましたので、忘れないように書いておこうと思います。
はじめに
画面遷移のシチュエーションはいろいろありますが、親レコードから子レコードの新規登録画面へ遷移する処理はよくあるパターンです。今回はサンプルとして、インシデントから子インシデントを登録する処理を作成します。
インシデントから子インシデントの登録処理
下記の例のように、OOTBの関連リストの「New」ボタンから遷移した場合、親インシデントの情報を初期値として子インシデントに自動的に設定されている項目もあれば、「Short description」のように引き継がれない項目もあります。「Short description」も親から設定する方法について、説明していきたいと思います。
実現する方法の一例として、下記UI Action(New Child)を作成します。
・ServerSideで実行するため、「Client」をチェックしない。
・レコード新規登録時は非表示にするので、「Show insert」をチェックしない
・Workspaceにも表示するため、「Format for Configurable Workspace」、
「Workspace Form Button」をチェックする
Scriptはこんな感じ。
// 子レコードのobjectを生成し、渡したいパラメータを初期値として設定var inc = new GlideRecord("incident");inc.newRecord();inc.parent_incident = current.sys_id;inc.short_description = current.short_description;
// 子レコード登録画面へ遷移action.openGlideRecord(inc);
// 親レコードに戻れるようreturn URLを設定しておくaction.setReturnURL(current);
実行してみました。インシデントのフォーム画面に「New Child」が出ていますね。
「New Child」を押したら、子インシデントの新規登録画面に遷移し、
「Short description」、「Parent Incident」が引き継がれています。
キーポイントのまとめ
最後に、キーポイントを纏めてみましょう。
- 画面遷移の処理はOOTBを含め、「action.setURLParameter」が多用されているが、Next Experience UIで使えなくなったケースがあるので、「action.openGlideRecord」で簡単に代替可能
- ServerSideで実行されるため、Workspaceだけでなく、Core UI側も正常に稼働するので、UIごとにscriptを用意する手間を省く
- 「action.setURLParameter」で実装した場合、受け取るClient Scriptも場合によって必要ですが、こちらの方法はUI Actionだけで完結するので、作成する資材が減る
以上、Workspaceの画面でのパラメータ受け渡し方法の紹介でした。
この記事を書いた人
ニックネーム:もも
趣味:スノーボード。昔からやっていますが、近年中毒になって、年間10回以上滑っても足りない。
去年一番楽しかったスキー場:志賀焼額山スキー場