Dieses Beispiel zeigt, wie JavaScript und eine Geschäftsregel verwendet werden, um die Auswahl des Felds „Incident zugewiesen an“ auf Benutzer mit der Rolle itil_admin zu beschränken.
Vorbereitungen
Erforderliche Rolle: personalize_dictionary or admin
Warum und wann dieser Vorgang ausgeführt wird
Sie können itil_admin auch in einer beliebigen anderen Rolle in einem Referenzfeld ändern, das sich auf die Tabelle „Benutzer“ [sys_user] bezieht.
Prozedur
-
Öffnen Sie einen Incident.
-
Klicken Sie in der oberen linken Ecke des Bildschirms auf das Kontextmenü des Formulars, und wählen Sie dann aus .
-
Geben Sie im Feld Referenzqual. den Wert javascript:"sys_idIN"+getRoledUsers("itil_admin").join(",") ein.
-
Speichern Sie den Datensatz.
-
Um die Geschäftsregel des Basissystems anzuzeigen, die dieser JavaScript-Code aufruft, navigieren Sie zu .
-
Öffnen Sie getRoledUsers.
Die Geschäftsregel verwendet den folgenden JavaScript-Code.
// Return an array of sys_ids of the users that have at least one role
// optional parameters allow the exclusion (NOT IN) of some roles or
// look for specific roles (IN)
//
// optional: queryCondition - 'IN' or 'NOT IN'
// optional: roleList - a comma separated list of role names
//
function getRoledUsers(queryCondition, roleList) {
var roleListIds;
if (queryCondition && roleList) {
roleListIds = getRoleListIds(roleList);
}
var users = {};
var now_GR = new GlideRecord('sys_user_has_role');
if (roleListIds) {
now_GR.addQuery('role', queryCondition, roleListIds);
}
now_GR.query();
while (now_GR.next()) {
users[now_GR.user.toString()] = true;
}
var ids = [];
for (var id in users)
ids.push(id);
return ids;
}
// get sys_id's for the named roles
function getRoleListIds(roleList) {
var ids = [];
var now_GR = new GlideRecord('sys_user_role');
now_GR.addQuery('name','IN',roleList);
now_GR.query();
while (now_GR.next()) {
ids.push(now_GR.sys_id.toString());
}
return ids;
}