The CreatorCon Call for Content is officially open! Get started here.

Shantharao
Kilo Sage

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

Comments
Matt Cordero1
Tera Guru

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.

Version history
Last update:
‎01-23-2019 10:12 PM
Updated by: