Skip to content

Commit fd29954

Browse files
authored
Create WorkLoad_Balancer.js
1 parent e026d5b commit fd29954

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
(function executeRule(current, previous /*null when async*/) {
2+
3+
// Add your code here
4+
if (!current.assignment_group || current.assigned_to)
5+
return;
6+
7+
var userWorkload = {};
8+
var grp = current.assignment_group;
9+
var grMember = new GlideRecord('sys_user_grmember');
10+
grMember.addQuery('group', grp);
11+
grMember.query();
12+
while (grMember.next()) {
13+
var userId = grMember.user.toString();
14+
var inc = new GlideAggregate('incident');
15+
inc.addAggregate('COUNT');
16+
inc.addQuery('assigned_to', userId);
17+
inc.addQuery('state', 'NOT IN', '6,7'); // not resolved or closed
18+
inc.query();
19+
20+
if (inc.next()) {
21+
userWorkload[userId] = parseInt(inc.getAggregate('COUNT'), 10);
22+
} else {
23+
userWorkload[userId] = 0;
24+
}
25+
}
26+
27+
// Find user with minimum workload
28+
var minUser = null;
29+
var minCount = Number.MAX_VALUE;
30+
for (var u in userWorkload) {
31+
if (userWorkload[u] < minCount) {
32+
minCount = userWorkload[u];
33+
minUser = u;
34+
}
35+
}
36+
37+
if (minUser) {
38+
current.assigned_to = minUser;
39+
gs.info('Auto-assigned incident to user: ' + minUser);
40+
}
41+
42+
})(current, previous);

0 commit comments

Comments
 (0)