ナビゲーションハンドラー
ナビゲーションハンドラーはスクリプト化された表示ルールで、指定されたテーブルのデータがフォームビューで要求されるたびに実行されます。
次のスクリプトは、HR プラグインに含まれるナビゲーションハンドラーからのものです。このスクリプトは、ロールを持たないユーザーには ESS ビューを使用し、他のすべてのユーザーにはデフォルトビューを使用するよう、[ Table ] フィールドのテーブルのレコードを強制します。
var now_GR = new GlideRecord(hr.TABLE_CASE);
if (gr.get(g_uri.get('sys_id'))) {
if (!gs.getUser().hasRoles())
g_uri.set('sysparm_view', 'ess');
else
g_uri.set('sysparm_view', '');
}
answer = g_uri.toString('hr_case.do');
表示ルールの前または後にナビゲーションハンドラーを実行する
glide.ui.view_rule.check_after_nav_handlerシステムプロパティを使用して、ビュールールとナビゲーションハンドラーが適用される順序を制御します。ナビゲーションハンドラーの後にビュールールを処理するには、プロパティ値を True に設定します。システムプロパティがインスタンスに存在しない場合は、ナビゲーションハンドラーが常に優先されます。
システムプロパティは、ナビゲーションハンドラースクリプト関数が回答を返さない場合にのみ、ナビゲーションハンドラーを上書きします。上記のスクリプト例では、このプロパティは無効です。これは、 回答 行が if ステートメントの外側にあるため、このナビゲーション ハンドラーが常に回答を返すためです。
前の例のナビゲーションハンドラースクリプトでビュールールを強制的に遵守させるには、次の手順を実行します。
この例は、前のスクリプトを変更したバージョンです。この場合、 回答 行は、ユーザーがロールを持っていない場合にのみ発生します。ユーザーにロールがある場合、 回答 に達することはなく、同じテーブルのビュールール (存在する場合) が適用されます。
var now_GR = new GlideRecord(hr.TABLE_CASE);
if (gr.get(g_url.get('sys_id'))) {
if (!gs.getUser().hasRoles()) {
g_url.set('sysparm_view'),'ess');
answer = g_url.toString('hr_case.do');
}
}