Name
sn_grc.GRCAbstractGeneratorV2StrategyBase
Description
Shared item generator strategy utilities
Script
var GRCAbstractGeneratorV2StrategyBase = Class.create();
GRCAbstractGeneratorV2StrategyBase.prototype = {
itemTable: null,
initialize: function() {
},
generate: function() {},
getItemToEntityTypeTable: function() {
return "sn_grc_m2m_item_entity_type";
},
getItemToEntityTable: function() {
/* This method should not return any table name. Risk should have an implementation for this method to return their risk specific table. Item to entity specific logic will not be triggered if this table is empty. This is done so that risk will not face any issues in different usecases where there is an association for entity to item. */
return;
},
canCreateItems: function(contentId) {
return this._canCreateItems(contentId);
},
generateItem: function(entityId, contentId, source) {
if (gs.nil(this.itemTable))
return '';
var itemId = '';
var isItemActivated = false;
var item = new GlideRecord(this.itemTable);
item.addQuery('content', contentId);
item.addQuery('profile', entityId);
item.addQuery('instance', true);
item.setLimit(1);
item.query();
if (item.next()) {
if (!item.retired_manually) {
item.active = true;
item.skipInsertActionToQueue = true;
isItemActivated = true;
}
this._updateSource(item, source);
itemId = item.update();
} else {
item.initialize();
item.profile = entityId;
item.content = contentId;
item.created_one_off = false;
item.instance = true;
item.skipInsertActionToQueue = true;
this._updateSource(item, source);
itemId = item.insert();
isItemActivated = true;
}
if (isItemActivated && itemId) {
var actionParms = {
action: 'activate_item',
source: itemId,
table: item.getTableName(),
item_id: itemId,
};
new sn_grc.IGItemActionHandler(actionParms, this).execute();
}
return itemId;
},
addEntityToItem: function(entityId, itemId, sourceField, source, skipInsertAction) {
return new sn_grc.ItemInheritance().addEntityToItem(entityId, itemId, sourceField, source, skipInsertAction);
},
_updateSource: function(item, source) {
if ((item.source + '').indexOf(source) == -1) {
item.source += source + ',';
}
},
_setGeneralContentFields: function(content, item) {},
_setSpecificContentFields: function(content, item) {},
_setGeneralDocumentFields: function(document, item) {
item.state = document.state;
},
_setSpecificDocumentFields: function(document, item) {},
_canCreateItems: function(contentId) {
return true;
},
recordCanCreateItems: function(record) {
return true;
},
type: 'GRCAbstractGeneratorV2StrategyBase'
};
Sys ID
0975f59907b22010bbc77f04a9d3000d