Name
sn_risk.RiskGeneratorStrategyBase
Description
NOTE This script include is deprecated, please use RiskGeneratorV2StrategyBase instead Generates risks when relationships between profiles, profile types, risk frameworks, and risk statements are made
Script
var RiskGeneratorStrategyBase = Class.create();
RiskGeneratorStrategyBase.prototype = Object.extend(new sn_grc.GRCAbstractGeneratorStrategy(),{
itemTable: 'sn_risk_risk',
getContentTable: function() {
return "sn_risk_definition";
},
getDocToProfileTypeTable: function() {
return "sn_risk_m2m_framework_profile_type";
},
getContentToProfileTypeTable: function() {
return "sn_risk_m2m_risk_definition_profile_type";
},
linksDocToProfileType: function(m2mDocumentToProfileType, operation) {
var processingRecords = false;
var content = new GlideRecord('sn_risk_definition');
content.addQuery("document", m2mDocumentToProfileType.sn_grc_document);
content.addActiveQuery();
content.query();
while(content.next()) {
if(operation == 'generate')
this.generateLinksContentToProfileType(m2mDocumentToProfileType.sn_grc_document, content.sys_id, m2mDocumentToProfileType.sn_grc_profile_type);
else if(operation == 'delete')
if(this.deleteLinksContentToProfileType(m2mDocumentToProfileType.sn_grc_document, content.sys_id, m2mDocumentToProfileType.sn_grc_profile_type))
processingRecords = true;
}
if(operation == 'delete')
return processingRecords;
return true;
},
generateLinksContentToProfileType: function(documentId, statementId, profileTypeId, useWorkflow) {
useWorkflow = useWorkflow === undefined ? true : false;
var contentToProfileType = new GlideRecord("sn_risk_m2m_risk_definition_profile_type");
contentToProfileType.addQuery("statement", statementId);
contentToProfileType.addQuery("sn_grc_profile_type", profileTypeId);
contentToProfileType.query();
if(contentToProfileType.next()) {
contentToProfileType.created_one_off = false;
contentToProfileType.update();
}
else {
contentToProfileType.statement = statementId;
contentToProfileType.sn_grc_profile_type = profileTypeId;
contentToProfileType.created_one_off = false;
contentToProfileType.insert();
}
},
deleteLinksContentToProfileType: function(documentId, statementId, profileTypeId, useWorkflow) {
useWorkflow = useWorkflow === undefined ? true : false;
var contentToProfileType = new GlideRecord("sn_risk_m2m_risk_definition_profile_type");
contentToProfileType.addQuery("statement", statementId);
contentToProfileType.addQuery("sn_grc_profile_type", profileTypeId);
contentToProfileType.query();
contentToProfileType.next();
var statement = new GlideRecord("sn_risk_definition");
statement.get(statementId);
// If statement is inactive delete all links
if(contentToProfileType.created_one_off == false || statement.active == false) {
contentToProfileType.setWorkflow(useWorkflow);
contentToProfileType.deleteRecord();
return true;
}
return false;
},
getStatementIds: function(frameworkId) {
var statementIds = [];
var statements = new GlideRecord('sn_risk_definition');
statements.addQuery('document', frameworkId);
statements.addActiveQuery();
statements.query();
while(statements.next())
statementIds.push(statements.getUniqueValue());
return statementIds;
},
getItemsForDoc: function(frameworkId) {
var risk = new GlideRecord('sn_risk_risk');
risk.addQuery('content.document', frameworkId);
risk.addActiveQuery();
risk.query();
return risk;
},
deleteRecords: function(gr, useWorkflow) {
useWorkflow = useWorkflow === undefined ? true : false;
gr.setWorkflow(useWorkflow);
gr.deleteMultiple();
},
updateContents: function(frameworkId, active) {
var statement = new GlideRecord('sn_risk_definition');
statement.addQuery('document', frameworkId);
statement.query();
while(statement.next()) {
statement.active = active;
statement.update();
}
},
getDocumentsIds: function(content) {
var documentIds = [];
documentIds.push(content.document + '');
return documentIds;
},
_setSpecificContentFields: function (content, grItem) {
if(grItem.description == '')
grItem.description = content.description;
},
_setSpecificDocumentFields: function (document, grItem) {
grItem.state = 'draft';
},
_canCreateItems: function(statementId) {
return true;
},
_recordCanCreateItems: function(statement) {
return true;
},
type: 'RiskGeneratorStrategyBase'
});
Sys ID
40c939532f3202007eaf77cfb18c9571