UI ルーティングアクションの作成
このソリューションを使用すると、インシデントまたは要求アイテムのどちらであるかを知らなくても、サービスデスクでレコードを作成できます。その後、サービスデスクはレコードを適切なテーブルにルーティングできます。
このタスクについて
注:
ここで説明する機能には、admin ロールが必要です。
UI ルーティングアクションの作成方法:
手順
-
タスクテーブルを拡張する新しいテーブルを作成します (「新規コール」など)。 - 新しい新規コールレコードを作成するモジュールを作成します。
-
新規コールテーブルに必要なフィールドを作成します。
新規コールをインシデントまたは要求アイテムのどちらにルーティングするかを決定するために必要なフィールドのみが必要とされます。フォームに、インシデントまたは要求アイテムに渡すフィールドが含まれていることを確認します。この例では、フォームに次のものが作成されます。
- 要求元 (参照)
- 場所 (参照)
- コールタイプ (インシデントと要求の 2 つの値を持つ選択肢)
- 要求アイテム (
sc_cat_itemアイテムテーブルへの参照)
- いくつかの UI ポリシーを追加して、いくつかのフィールドを必須に設定し、[コールタイプ] の選択に基づいて [要求アイテム] フィールドを非表示にします。
- 不要なボタンや機能をフォームから削除します。
-
新しい UI アクションボタンを作成します。
このボタンにより、ユーザーはインシデントまたは要求にリダイレクトされます。また、インシデントレコードが作成され、インシデントと要求アイテムフォームに値がコピーされます。
var reqItem = current.u_item; var requestedFor = current.u_requested_for; var location = current.location; if(current.u_incident_request == 'Incident'){ //Create a new incident record and redirect to the new incident var rec = new GlideRecord('incident'); rec.initialize(); rec.caller_id = requestedFor; rec.location = location; rec.insert(); action.setRedirectURL(rec); } if(current.u_incident_request == 'Request'){ //Build the url and route the user to the request item var url = ''; if(current.u_item.sys_class_name == 'sc_cat_item_guide'){ url = 'com.glideapp.servicecatalog_cat_item_guide_view.do?sysparm_initial=true&sysparm_guide=' + reqItem + '&sysparm_user=' + requestedFor + '&sysparm_location=' + location; } else{ url = 'com.glideapp.servicecatalog_cat_item_view.do?sysparm_id=' + reqItem + '&sysparm_user=' + requestedFor + '&sysparm_location=' + location; } action.setRedirectURL(url); } -
前の例の [ルーティング] ボタンは、URL の [要求元] と [場所] の値を [要求アイテム] フォームに渡します。
次のクライアントスクリプトを使用して、これらの値をマッピングするアイテム、レコードプロデューサー、または注文ガイドに requested_for および location と呼ばれる変数があることを確認します。URL の長さには制限があるため、渡すことができる情報の量には制限があります。この方法を使用して長いテキストフィールドからの情報は送信しないでください。
function onLoad() { var url = document.location.toString(); var userKey = 'sysparm_user='; var locKey = 'sysparm_location='; var userPosition = url.indexOf(userKey); var locPosition = url.indexOf(locKey) if (userPosition != -1) { var user = url.substr(userPosition+userKey.length, 32); g_form.setValue('requested_for',user); } if (locPosition != -1) { var loc = url.substr(locPosition+locKey.length, 32); g_form.setValue('location',loc); } }