- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 01-23-2019 10:12 PM
Hello, FYI
These lines of code may be helpful on workflow restart or refresh, after submission on RITM later you did any modifications on RITM variable tab.
var wf = new Workflow();
wf.restartWorkflow(current);
wf.runFlows(current, "update"); // the update is just going to look for your changes and will
gs.addInfoMessage('Change approvals and workflow reset for ' + current.number + '.');
gs.addInfoMessage("tetsing rollback");
Thanks
- 1,552 Views
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Here's an example using the above code snippets. In this scenario, we want to mark (update) approvals approved when an approver's approval is necessary multiple times (based on approval groups).
NOTE: In this example, current is the Change Request table.
var sysapproval_approver = new GlideRecord('sysapproval_approver');
sysapproval_approver.addQuery('sysapproval', current.sys_id); // Filter the approval for this Change Request's sys_id
sysapproval_approver.addQuery('state', 'approved'); // Filter for approval records in the "approved" state
sysapproval_approver.orderByDesc('sys_updated_on'); // Order by Descending order (get latest)
sysapproval_approver.setLimit(1); // Set limit to 1 record (TOP 1 result)
sysapproval_approver.query();
if (sysapproval_approver.next()) {
// Get the most recent Approver for this Change Request record
var approver = sysapproval_approver.approver; // sys_id of the approver from the sysapproval_approver table
sysapproval_approver = new GlideRecord('sysapproval_approver');
sysapproval_approver.addQuery('sysapproval', current.sys_id); // Filter the approval for this Change Request's sys_id
sysapproval_approver.addQuery('approver', approver); // Filter the approval records for this approver
sysapproval_approver.addQuery('state', 'requested'); // Filter for approval records in the "requested" state
sysapproval_approver.query();
while (sysapproval_approver.next()) {
sysapproval_approver.state = 'approved';
sysapproval_approver.autoSysFields(false); // Skip auto system update fields.
sysapproval_approver.setWorkflow(false); // Skip/Prevent workflow from running.
sysapproval_approver.setUseEngines(false); // Bypass data policies for updating read-only fields.
sysapproval_approver.update(); // Update the record.
}
var wf = new Workflow();
wf.runFlows(current, "update"); // the update is just going to look for your changes.
}
Using the above script we were able to achieve the desired result of having an approver's approval marked as approved, upon approval. Even when that approver's approval was required multiple times.