Name
sn_risk_advanced.ScriptFactorUtilsBase
Description
No description available
Script
var ScriptFactorUtilsBase = Class.create();
ScriptFactorUtilsBase.prototype = Object.extendsObject(AutomatedFactorUtils, {
initialize: function() {},
executeAndGetFactorResponse: function(factorResponse) {
return this._executeAndGetFactorResponse(factorResponse);
},
executeAndSetResponsesForFactor: function(factor) {
this._executeAndSetResponsesForFactor(factor);
},
validateScript: function(factor) {
return this._validateScript(factor);
},
//Executes given factor and updates its score for all applicable responses with given filters
executeFactorFilterResponses: function(factor, entityID, riskID, controlID, objectID) {
this._executeFactorFilterResponses(factor, entityID, riskID, controlID, objectID);
},
createSupportingData: function(responseId, csvData, fileName) {
this._createSupportingData(responseId, csvData, fileName);
},
_executeFactorFilterResponses: function(factor, entityID, riskID, controlID, objectID) {
this._executeAndSetResponsesForFactor(factor, entityID, riskID, controlID, objectID);
},
_executeAndSetResponsesForFactor: function(factor, entityID, riskID, controlID, objectID) {
var factorResponse = this._getResponsesToBeAssessed(factor);
if (new sn_risk_advanced.RiskUtilities().isComplianceInstalled() && controlID)
factorResponse.addQuery('control', controlID);
if (entityID)
factorResponse.addQuery('assessment_instance_id.entity_1', entityID);
if (riskID)
factorResponse.addQuery('assessment_instance_id.risk', riskID);
if (objectID)
factorResponse.addQuery('assessment_instance_id.source_record', objectID);
factorResponse.query();
while (factorResponse.next()) {
if (!this.isFactorOptedOut(factorResponse)) {
this._deleteAttachments('sn_risk_advanced_risk_assessment_instance_response', [factorResponse.getUniqueValue()]);
var result = {};
try {
result = this._executeAndGetFactorResponse(factorResponse);
} catch (ex) {
result.error = ex;
this._setError(result, factor);
}
result.sourceRecordId = factorResponse.getUniqueValue();
result.table = 'sn_risk_advanced_risk_assessment_instance_response';
if (result.error) {
this._createException(result);
continue;
}
this._markExistingExceptionAsResolved(result);
factorResponse.setValue('factor_response', result.score);
factorResponse.update();
}
}
},
_validateScript: function(factor) {
var evaluator = new GlideScopedEvaluator();
evaluator.putVariable('result', {});
if (factor.factor_usage == '1') {
evaluator.putVariable('entity', '');
evaluator.putVariable('risk', '');
if (new sn_risk_advanced.RiskUtilities().isComplianceInstalled())
evaluator.putVariable('control', '');
} else {
evaluator.putVariable('object_id', '');
}
evaluator.putVariable('responseId', '');
evaluator.evaluateScript(factor, 'script', null);
var result = evaluator.getVariable('result');
if (result.error && result.error.message)
result.error = result.error.message;
return result;
},
_executeAndGetFactorResponse: function(factorResponse) {
var result = {};
var evaluator = new GlideScopedEvaluator();
var inputs = {};
if (factorResponse.factor.factor_usage == '1') {
inputs.entity = factorResponse.assessment_instance_id.entity_1 + '';
inputs.risk = factorResponse.assessment_instance_id.risk + '';
evaluator.putVariable('entity', inputs.entity);
evaluator.putVariable('risk', inputs.risk);
if (new sn_risk_advanced.RiskUtilities().isComplianceInstalled()) {
inputs.control = factorResponse.getValue('control');
evaluator.putVariable('control', inputs.control);
}
} else {
inputs.object_id = factorResponse.assessment_instance_id.source_record + '';
evaluator.putVariable('object_id', inputs.object_id);
}
evaluator.putVariable('responseId', factorResponse.getUniqueValue());
evaluator.putVariable('result', {});
var factor = factorResponse.getElement('factor').getRefRecord();
evaluator.evaluateScript(factor, 'script', null);
result = evaluator.getVariable('result');
this._setError(result, factor, inputs);
if (gs.nil(result.error) && factor.user_response == '4')
result.score = this._getReferenceCurrencyCode() + ";" + result.score;
return result;
},
_createSupportingData: function(responseId, csvData, fileName) {
var response = new GlideRecord('sn_risk_advanced_risk_assessment_instance_response');
if (gs.nil(fileName))
fileName = "SupportingData";
fileName += ".csv";
if (response.get(responseId) && !gs.nil(csvData)) {
this._createCSVAttachment(response, csvData, fileName);
}
},
type: 'ScriptFactorUtilsBase'
});
Sys ID
4a92fbb2775300102a272f589a1061f8