- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-03-2019 04:18 AM
Hi All,
I am trying to write a Business Rule that compares to the Planned Start Date on a new Change Request. If this Planned Start Date falls within the span of a given schedule then I am marking the Change Request to require CAB approval.
I was under the impression that I would be able to achieve this using the GlideSchedule.isInSchedule method, but the Business Rule throws up an error stating
function checkWithinSchedule () {
var g = new GlideRecord('cmn_schedule');
g.addQuery('name', '8-5 weekdays');
g.query();
if (g.next()) {
var sched = new GlideSchedule(g.sys_id);
var d = new GlideDateTime();
d.setDisplayValue("2019-06-03 12:00:00");
if (sched.isInSchedule(d)) {
gs.info("Is in the schedule");
return true;
} else {
gs.info("Is NOT in the schedule");
return false;
}
}
}
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-04-2019 06:01 AM
Found it! I converted this.start_time/end_time to GlideDateTime() and passed that to isInSchedule()... No more error.
var CABApprovalRequired = Class.create();
CABApprovalRequired.prototype = {
initialize: function(start_time, end_time) {
this.start_time = start_time;
this.end_time = end_time;
},
getErrorMsg: function (err) {
// gs.addErrorMessage('Error: '+ current.name);
gs.addErrorMessage('Error: ' + err);
},
checkSchedule : function() {
try {
var schedGr = new GlideRecord('cmn_schedule');
schedGr.addQuery('name','8-5 weekdays');
schedGr.query();
gs.info(schedGr.getRowCount() + ' rows');
if (schedGr.next()) {
var schedObj = new GlideSchedule(schedGr.sys_id);
var start = new GlideDateTime(this.start_time.getDisplayValue());
var end = new GlideDateTime(this.end_time.getDisplayValue());
if (schedObj.isInSchedule(start) || schedObj.isInSchedule(end)) {
return true;
}
}
return false;
} catch (err) {
this.getErrorMsg(err);
}
},
type: 'CABApprovalRequired'
};
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-10-2023 06:52 AM - edited 05-10-2023 06:53 AM
Hello,
I am using the same script as given,
var schedObj = new GlideSchedule(schedGr.sys_id); var start = new GlideDateTime(this.start_time.getDisplayValue()); var end = new GlideDateTime(this.end_time.getDisplayValue()); if (schedObj.isInSchedule(start) || schedObj.isInSchedule(end)) { return true; }
Passed schedule sys id inside the GlideSchedule but its not going inside the if block.
Can you please help me with that.
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-10-2023 06:55 AM
We need to calculate the duration between these start and end below is my code snippet,
var taskCreated = grTask.sys_created_on;
var firstUpdated = grTask.work_start;
var schedObj = new GlideSchedule('1b499f9cf78e6d105ef541b84851e048');
var start = new GlideDateTime(taskCreated.getDisplayValue());
var end = new GlideDateTime(firstUpdated.getDisplayValue());
if (schedObj.isInSchedule(start) || schedObj.isInSchedule(end)) {
var duration = schedObj.duration(start ,end);
gs.info("dur-->"+duration);
}
But its not going inside if block also its giving wrong duration.
Can you please help me with that.
Thanks