Name
sn_nb_action.NextBestActionDAOImpl
Description
A Data Access Object for Recommended Action. All DB operations routed through this class.
Script
var NextBestActionDAOImpl = Class.create();
NextBestActionDAOImpl.prototype = {
initialize: function() {
this._log = new global.GSLog(sn_nb_action.Constants.PROP_LOG_LEVEL, this.type);
},
getRules: function(currentRecord, fields) {
var hasUnsavedChanges = fields && Object.keys(fields).length > 0 ? true : false;
var fieldNames = hasUnsavedChanges ? Object.keys(fields) : [];
var fieldsQuery = '';
if (hasUnsavedChanges) {
for (var j = 0; j < fieldNames.length; j++) {
if (j == 0)
fieldsQuery = '^' + sn_nb_action.Constants.COL_FIELD_AFF_RULE + 'LIKE' + fieldNames[j];
else
fieldsQuery = fieldsQuery + '^OR' + sn_nb_action.Constants.COL_FIELD_AFF_RULE + 'LIKE' + fieldNames[j];
}
}
var currentTable = currentRecord.getTableName();
var tables = new GlideTableHierarchy(currentTable).getTables();
var parentTables = [];
for (var i = 0; i < tables.length; i++) {
if (tables[i] != currentTable)
parentTables.push(tables[i]);
}
var rules = new GlideRecord(sn_nb_action.Constants.TBL_RULE_BASE);
var currentTableQuery = sn_nb_action.Constants.COL_ACTIVE + "=true^" + sn_nb_action.Constants.COL_RULE_CONTEXT + '.' + sn_nb_action.Constants.COL_CONTEXT + "=" + currentTable + fieldsQuery;
var parentTableQuery = sn_nb_action.Constants.COL_ACTIVE + "=true^" + sn_nb_action.Constants.COL_RULE_CONTEXT + '.' + sn_nb_action.Constants.COL_CONTEXT + "IN" + parentTables + "^" + sn_nb_action.Constants.COL_APPLIES_TO_CHILD_TABLES + "=true" + fieldsQuery;
var encodedQuery = currentTableQuery + "^NQ" + parentTableQuery;
rules.addEncodedQuery(encodedQuery);
rules.orderBy(sn_nb_action.Constants.COL_ORDER);
rules.query();
if (rules.hasNext())
return rules;
},
getActionTypes: function() {
var actionTypes = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_TYPE_DEFINITION);
actionTypes.addActiveQuery();
actionTypes.query();
if (actionTypes.hasNext())
return actionTypes;
return false;
},
/*
* Returns a map of action type definition with table name key and action type definition as value
*/
loadActionTypesByTable: function() {
var actionTypesRecord = this.getActionTypes();
if (actionTypesRecord) {
var actionTypes = {};
while (actionTypesRecord.next()) {
var actionType = {};
actionType[sn_nb_action.Constants.COL_SYS_ID] = actionTypesRecord.getUniqueValue();
actionType[sn_nb_action.Constants.COL_NAME] = actionTypesRecord.getValue(sn_nb_action.Constants.COL_NAME);
actionType[sn_nb_action.Constants.COL_TABLE_NAME] = actionTypesRecord.getValue(sn_nb_action.Constants.COL_TABLE_NAME);
var rendererRecord = actionTypesRecord[sn_nb_action.Constants.COL_RENDERER].getRefRecord();
actionType[sn_nb_action.Constants.COL_RENDERER] = rendererRecord.getValue(sn_nb_action.Constants.COL_TAG);
actionTypes[actionTypesRecord.getValue(sn_nb_action.Constants.COL_TABLE_NAME)] = actionType;
}
return actionTypes;
}
return false;
},
/*
* Creates and return recommended action context for the given currentRecord
*/
createContext: function(currentRecord) {
var userId = gs.getUserID();
var context = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_CONTEXT);
context.initialize();
context.setValue(sn_nb_action.Constants.COL_CONTEXT_TABLE, currentRecord.getTableName());
context.setValue(sn_nb_action.Constants.COL_DOCUMENT, currentRecord.getUniqueValue());
context.setValue(sn_nb_action.Constants.COL_USER, userId);
var contextId = "";
try {
contextId = context.insert();
if (!gs.nil(contextId)) {
this._log.debug("Context " + context.getDisplayValue() + " created.");
return context;
}
} finally {
if (gs.nil(contextId))
return this.getContext(currentRecord);
}
return false;
},
getContext: function(currentRecord) {
var userId = gs.getUserID();
var context = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_CONTEXT);
context.addQuery(sn_nb_action.Constants.COL_CONTEXT_TABLE, currentRecord.getTableName());
context.addQuery(sn_nb_action.Constants.COL_DOCUMENT, currentRecord.getUniqueValue());
context.addQuery(sn_nb_action.Constants.COL_USER, userId);
context.orderByDesc(sn_nb_action.Constants.COL_SYS_CREATED_ON);
context.query();
if (context.next())
return context;
return false;
},
getAllContexts: function(currentRecord) {
var context = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_CONTEXT);
context.addQuery(sn_nb_action.Constants.COL_CONTEXT_TABLE, currentRecord.getTableName());
context.addQuery(sn_nb_action.Constants.COL_DOCUMENT, currentRecord.getUniqueValue());
context.orderByDesc(sn_nb_action.Constants.COL_SYS_CREATED_ON);
context.query();
return context;
},
getOldContext: function(currentRecord) {
var context = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_CONTEXT);
context.addQuery(sn_nb_action.Constants.COL_CONTEXT_TABLE, currentRecord.getTableName());
context.addQuery(sn_nb_action.Constants.COL_DOCUMENT, currentRecord.getUniqueValue());
context.addQuery(sn_nb_action.Constants.COL_USER, '');
context.addEncodedQuery('stateNOT INnew,ready');
context.orderByDesc(sn_nb_action.Constants.COL_SYS_CREATED_ON);
context.query();
if (context.next())
return context;
return false;
},
copyOldActionsToNewContext: function(oldContextRecord, newContextRecord) {
var actionDetailgr = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_DETAIL);
actionDetailgr.addQuery(sn_nb_action.Constants.COL_CONTEXT, oldContextRecord.getUniqueValue());
actionDetailgr.addEncodedQuery('stateNOT INnew');
actionDetailgr.query();
while (actionDetailgr.next()) {
if (this.isInProgressGuidance(actionDetailgr))
continue;
actionDetailgr.setValue(sn_nb_action.Constants.COL_CONTEXT, newContextRecord.getUniqueValue());
var inputObj = {};
for (var input in actionDetailgr.action_inputs) {
if (input != "sys_meta" && input != "sys_id") {
inputObj[input] = actionDetailgr.action_inputs[input];
}
}
actionDetailgr.insert();
for (var input1 in actionDetailgr.action_inputs) {
if (input1 != "sys_meta" && input1 != "sys_id") {
actionDetailgr.action_inputs[input1] = inputObj[input1];
}
}
actionDetailgr.update();
}
newContextRecord.setValue(sn_nb_action.Constants.COL_STATE, sn_nb_action.Constants.STATE_IN_USE);
newContextRecord.update();
},
isInProgressGuidance: function(actionDetailgr) {
if (actionDetailgr[sn_nb_action.Constants.COL_STATE] == sn_nb_action.Constants.STATE_IN_PROGRESS && actionDetailgr[sn_nb_action.Constants.COL_RECOMMENDED][sn_nb_action.Constants.COL_SYS_CLASS_NAME] == sn_nb_action.Constants.TBL_GUIDANCE)
return true;
},
setContextState: function(contextRecord, state, refresh, recommendationType) {
if (sn_nb_action.NextBestActionUtil.isValidRecord(contextRecord) &&
sn_nb_action.NextBestActionUtil.isValidContextState(state.toLowerCase())) {
contextRecord.setValue(sn_nb_action.Constants.COL_STATE, state.toLowerCase());
if (refresh) {
if (recommendationType == sn_nb_action.Constants.VAL_FIELD_RECOMMENDATIONS)
contextRecord.setValue(sn_nb_action.Constants.COL_REFRESHED_ON_FIELD_TYPE, new GlideDateTime());
else
contextRecord.setValue(sn_nb_action.Constants.COL_REFRESHED_ON, new GlideDateTime());
}
if (sn_nb_action.NextBestActionUtil.isValidString(contextRecord.update()))
return true;
else
this._log.error("Could not set context state [" + contextRecord.getUniqueValue() + "," + state + "]");
}
return false;
},
addActionDetails: function(contextRecord, actionDetailArr) {
var actCount = 0;
if (sn_nb_action.NextBestActionUtil.isValidRecord(contextRecord) && actionDetailArr && actionDetailArr.length > 0) {
var maxAgeInDateTime = sn_nb_action.NextBestActionUtil.getMaxAge(contextRecord);
for (var i = 0; i < actionDetailArr.length; i++) {
var actionDetail = actionDetailArr[i];
if (actionDetail && typeof actionDetail.isValid === "function" && actionDetail.isValid()) {
var actDetSysId = this._addActionDetail(contextRecord, actionDetail, maxAgeInDateTime);
if (sn_nb_action.NextBestActionUtil.isValidString(actDetSysId)) {
actCount++;
this._log.debug("Action " + actDetSysId + " added for " + actionDetailArr[i].getAction());
} else {
this._log.debug("Failed to add Action " + actionDetailArr[i].getAction());
}
}
}
}
return actCount;
},
_addActionDetail: function(contextRecord, actionDetail, maxAgeInDateTime) {
var actionDetailRecord = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_DETAIL);
actionDetailRecord.initialize();
actionDetailRecord.setValue(sn_nb_action.Constants.COL_CONTEXT, contextRecord.getUniqueValue());
actionDetailRecord.setValue(sn_nb_action.Constants.COL_ACTION_TYPE, actionDetail.getActionType());
actionDetailRecord.setValue(sn_nb_action.Constants.COL_RECOMMENDED, actionDetail.getAction());
actionDetailRecord.setValue(sn_nb_action.Constants.COL_MAX_AGE, maxAgeInDateTime);
var actionDetailRecordId = actionDetailRecord.insert();
var actionInputs = actionDetail.getActionInputs();
var contextSysId = actionDetailRecord.context.document;
var actionSysId = actionDetailRecord.recommended;
var recommendedActionParentId = sn_nb_action.NextBestActionUtil.getHashValue(contextSysId, actionSysId, actionInputs);
actionDetailRecord.setValue(sn_nb_action.Constants.COL_PARENT_RA_ID, recommendedActionParentId);
actionDetailRecord.update();
if (!NextBestActionUtil.isEmptyObject(actionInputs)) {
sn_nb_action.NextBestActionUtil.setGlideVarInputs(actionDetailRecord, sn_nb_action.Constants.COL_ACTION_INPUTS, actionInputs);
actionDetailRecord.update();
}
var actionDetailOrderArr = sn_nb_action.NextBestActionUtil.getObjectValues(actionDetail.getRules());
var actionOrderCount = this.addActionDetailOrders(actionDetailOrderArr, actionDetailRecordId);
this._log.debug("Action Detail Order record added count " + actionOrderCount + " added for Action Detail " + actionDetailRecordId);
return actionDetailRecordId;
},
addActionDetailOrders: function(actionDetailOrderArr, actionDetailRecordSysId) {
var actionOrderCount = 0;
if (actionDetailOrderArr && actionDetailOrderArr.length > 0) {
for (var i = 0; i < actionDetailOrderArr.length; i++) {
var actionDetailOrder = actionDetailOrderArr[i];
var actionDetailRecordId = actionDetailRecordSysId || actionDetailOrder.getActionDetail();
if (actionDetailOrder && typeof actionDetailOrder.isValid === "function" && actionDetailOrder.isValid()) {
var actDetOrderSysId = this._addActionDetailOrder(actionDetailOrder, actionDetailRecordId);
if (sn_nb_action.NextBestActionUtil.isValidString(actDetOrderSysId)) {
actionOrderCount++;
this._log.debug("Action Detail Order" + actDetOrderSysId + " added for Action Detail " + actionDetailRecordId);
} else {
this._log.debug("Failed to add Action Detail Order for Action Detail " + actionDetailRecordId);
}
}
}
}
return actionOrderCount;
},
_addActionDetailOrder: function(actionDetailOrder, actionDetailRecordId) {
var actionDetailOrderRecord = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_ORDER_DETAIL);
actionDetailOrderRecord.initialize();
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_RULE, actionDetailOrder.getRule());
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_NEXT_BEST_ACTION, actionDetailRecordId);
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_INTER_ORDER, actionDetailOrder.getInterOrder());
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_INTRA_ORDER, actionDetailOrder.getIntraOrder());
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_ROLES, actionDetailOrder.getRoles());
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_RECOMMENDATION_HINT, actionDetailOrder.getHint());
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_CONTEXT_GROUPS, actionDetailOrder.getActionGroupsAsCommaSeparatedString());
return actionDetailOrderRecord.insert();
},
updateActionDetailOnUpgrade: function(actionDetailRecord) {
if (actionDetailRecord.getValue(sn_nb_action.Constants.COL_ACTIVE) == 0)
return this.removeRuleFromActionDetail(actionDetailRecord);
var actionDetailOrderObj = sn_nb_action.ActionDetailOrder.createFromRule(actionDetailRecord[sn_nb_action.Constants.COL_RULE] + '', actionDetailRecord[sn_nb_action.Constants.COL_RULE][sn_nb_action.Constants.COL_ORDER], 1, actionDetailRecord[sn_nb_action.Constants.COL_RULE][sn_nb_action.Constants.COL_ROLES] + '');
var actionDetailOrderId = this._addActionDetailOrder(actionDetailOrderObj, actionDetailRecord.getUniqueValue());
if (sn_nb_action.NextBestActionUtil.isValidString(actionDetailOrderId))
return this.removeRuleFromActionDetail(actionDetailRecord);
else
this._log.debug("Failed to add Action Detail Order record for existing Action Detail Record " + actionDetailRecord.getUniqueValue() + "for upgrade scenario");
return false;
},
removeRuleFromActionDetail: function(actionDetailRecord) {
actionDetailRecord.setValue(sn_nb_action.Constants.COL_RULE, '');
var actionDetailId = actionDetailRecord.update();
if (sn_nb_action.NextBestActionUtil.isValidString(actionDetailId))
return true;
else
this._log.debug("Failed to remove rule for existing Action Detail Record " + actionDetailRecord.getUniqueValue() + "for upgrade scenario");
return false;
},
updateActionDetailOrders: function(actionDetailOrderArr) {
var actionOrderCount = 0;
if (actionDetailOrderArr && actionDetailOrderArr.length > 0) {
for (var i = 0; i < actionDetailOrderArr.length; i++) {
var actionDetailOrder = actionDetailOrderArr[i];
if (actionDetailOrder && typeof actionDetailOrder.isValid === "function" && actionDetailOrder.isValid()) {
var actDetOrderSysId = this._updateActionDetailOrder(actionDetailOrder);
if (sn_nb_action.NextBestActionUtil.isValidString(actDetOrderSysId)) {
actionOrderCount++;
this._log.debug("Action Detail Order" + actDetOrderSysId + " updated for Action Detail " + actionDetailOrder.getActionDetail());
} else {
this._log.debug("Failed to update Action Detail Order details for " + actionDetailOrder.getActionDetailOrderId());
}
}
}
}
return actionOrderCount;
},
_updateActionDetailOrder: function(actionDetailOrder) {
var actDetOrderSysId = actionDetailOrder.getActionDetailOrderId();
if (gs.nil(actDetOrderSysId))
return false;
var actionDetailOrderRecord = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_ORDER_DETAIL);
if (!actionDetailOrderRecord.get(actDetOrderSysId))
return false;
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_RULE, actionDetailOrder.getRule());
if (actionDetailOrder.isActive() === true)
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_ACTIVE, true);
else if (actionDetailOrder.isActive() === false)
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_ACTIVE, false);
if (!gs.nil(actionDetailOrder.getInterOrder()))
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_INTER_ORDER, actionDetailOrder.getInterOrder());
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_INTRA_ORDER, actionDetailOrder.getIntraOrder());
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_ROLES, actionDetailOrder.getRoles());
actionDetailOrderRecord.setValue(sn_nb_action.Constants.COL_CONTEXT_GROUPS, actionDetailOrder.getActionGroupsAsCommaSeparatedString());
return actionDetailOrderRecord.update();
},
/*
* Returns GlideRecord of all the recommended actions for the given context
*/
getActionDetail: function(contextRecord, actionSysId) {
if (sn_nb_action.NextBestActionUtil.isValidRecord(contextRecord) && sn_nb_action.NextBestActionUtil.isValidString(actionSysId)) {
var actionDetail = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_DETAIL);
actionDetail.addActiveQuery();
actionDetail.addQuery(sn_nb_action.Constants.COL_CONTEXT, contextRecord.getUniqueValue());
actionDetail.addQuery(sn_nb_action.Constants.COL_RECOMMENDED, actionSysId);
actionDetail.query();
if (actionDetail.next())
return actionDetail;
}
return false;
},
getActionDetailBySysId: function(actionDetailSysId) {
if (sn_nb_action.NextBestActionUtil.isValidString(actionDetailSysId)) {
var actionDetail = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_DETAIL);
if (actionDetail.get(actionDetailSysId))
return actionDetail;
}
return false;
},
/*
* Returns GlideRecord of all the recommended actions for the given context
*/
getAllActionDetails: function(contextRecord, states, recommendationType) {
if (sn_nb_action.NextBestActionUtil.isValidRecord(contextRecord)) {
var actionDetails = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_DETAIL);
if (states)
actionDetails.addQuery(sn_nb_action.Constants.COL_STATE, states);
if (recommendationType) {
if (recommendationType == sn_nb_action.Constants.VAL_FIELD_RECOMMENDATIONS)
actionDetails.addQuery(sn_nb_action.Constants.COL_ACTION_TYPE, sn_nb_action.Constants.VAL_ACTION_TYPE_FIELD_RECOMMENDATION);
else
actionDetails.addQuery(sn_nb_action.Constants.COL_ACTION_TYPE, '!=', sn_nb_action.Constants.VAL_ACTION_TYPE_FIELD_RECOMMENDATION);
}
actionDetails.addQuery(sn_nb_action.Constants.COL_CONTEXT, contextRecord.getUniqueValue());
actionDetails.orderByDesc(sn_nb_action.Constants.COL_SYS_CREATED_ON);
actionDetails.query();
if (actionDetails.hasNext())
return actionDetails;
}
},
//Returns Gliderecord of all Action Detail Order records for a given context
getActionDetailOrdersFromContext: function(contextRecord, onlyActive, limit) {
if (sn_nb_action.NextBestActionUtil.isValidRecord(contextRecord)) {
var actionDetailOrders = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_ORDER_DETAIL);
if (onlyActive)
actionDetailOrders.addQuery(sn_nb_action.Constants.COL_ACTIVE, true);
actionDetailOrders.addQuery(sn_nb_action.Constants.COL_NEXT_BEST_ACTION + "." + sn_nb_action.Constants.COL_CONTEXT, contextRecord.getUniqueValue());
if (limit)
actionDetailOrders.setLimit(limit);
actionDetailOrders.query();
if (actionDetailOrders.hasNext())
return actionDetailOrders;
}
return false;
},
// Returns Gliderecord of all Action Detail Order records for a given recommended action.
getActionDetailOrders: function(actionDetailRecord, onlyActive) {
if (sn_nb_action.NextBestActionUtil.isValidRecord(actionDetailRecord)) {
var actionDetailOrders = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_ORDER_DETAIL);
if (onlyActive)
actionDetailOrders.addActiveQuery();
actionDetailOrders.addQuery(sn_nb_action.Constants.COL_NEXT_BEST_ACTION, actionDetailRecord.getUniqueValue());
actionDetailOrders.orderBy(sn_nb_action.Constants.COL_INTRA_ORDER);
actionDetailOrders.query();
if (actionDetailOrders.hasNext())
return actionDetailOrders;
}
return false;
},
setActionState: function(actionDetailRecord, state) {
if (sn_nb_action.NextBestActionUtil.isValidRecord(actionDetailRecord) && sn_nb_action.NextBestActionUtil.isValidActionState(state.toLowerCase())) {
actionDetailRecord.setValue(sn_nb_action.Constants.COL_STATE, state.toLowerCase());
if (sn_nb_action.NextBestActionUtil.isValidString(actionDetailRecord.update()))
return true;
else
this._log.error("Could not set action state" + [actionDetailRecord.getUniqueValue(), state]);
}
return false;
},
setActionAttribute: function(actionDetailRecord, attribute) {
if (actionDetailRecord && actionDetailRecord.isValidRecord() &&
attribute && attribute != null) {
actionDetailRecord.setValue(sn_nb_action.Constants.COL_ATTRIBUTE, JSON.stringify(attribute));
if (sn_nb_action.NextBestActionUtil.isValidString(actionDetailRecord.update()))
return true;
else
this._log.error("Could not update action attribute " + [actionDetailRecord, attribute]);
}
return false;
},
getRuleContext: function(contextTable) {
var ruleContextGr = new GlideRecord(sn_nb_action.Constants.TBL_RULE_CONTEXT);
ruleContextGr.addQuery(sn_nb_action.Constants.COL_CONTEXT, contextTable);
ruleContextGr.query();
if (ruleContextGr.next()) {
return ruleContextGr;
}
return false;
},
getRulesFromContext: function(ruleContext) {
var rules = new GlideRecord(sn_nb_action.Constants.TBL_RULE_BASE);
rules.addQuery(sn_nb_action.Constants.COL_RULE_CONTEXT, ruleContext.getValue(sn_nb_action.Constants.COL_SYS_ID));
rules.query();
return rules;
},
/**
* To fetch states and attributes of all RAexecution records based on parentRA of current RAexecution
*/
getStatesAttributesListFromActionDetails: function(hash, actionDetailRecord) {
var detailList = [];
var actionDetail = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_DETAIL);
actionDetail.addQuery(sn_nb_action.Constants.COL_PARENT_RA_ID, hash);
actionDetail.addQuery(sn_nb_action.Constants.COL_SYS_ID, "!=", actionDetailRecord.getUniqueValue());
actionDetail.addQuery(sn_nb_action.Constants.COL_RECOMMENDED, actionDetailRecord.recommended);
actionDetail.addQuery(sn_nb_action.Constants.COL_CONTEXT_DOCUMENT_ID, actionDetailRecord.context.document);
actionDetail.query();
while (actionDetail.next()) {
var detailObj = {
state: actionDetail.getValue(sn_nb_action.Constants.COL_STATE),
attributes: actionDetail.getValue(sn_nb_action.Constants.COL_ATTRIBUTE)
};
detailList.push(detailObj);
}
return detailList;
},
/**
* For deletion of all RAexecution in new state only for current user based on RAcontext.
*/
deleteRAByContext: function(contextRecordId, recommendationType) {
var rowCount = 0;
var raExecutionGr = new GlideRecord(sn_nb_action.Constants.TBL_ACTION_DETAIL);
raExecutionGr.addQuery(sn_nb_action.Constants.COL_CONTEXT, contextRecordId);
raExecutionGr.addQuery(sn_nb_action.Constants.COL_STATE, sn_nb_action.Constants.STATE_NEW);
if (recommendationType) {
if (recommendationType == sn_nb_action.Constants.VAL_FIELD_RECOMMENDATIONS)
raExecutionGr.addQuery(sn_nb_action.Constants.COL_ACTION_TYPE, sn_nb_action.Constants.VAL_ACTION_TYPE_FIELD_RECOMMENDATION);
else
raExecutionGr.addQuery(sn_nb_action.Constants.COL_ACTION_TYPE, '!=', sn_nb_action.Constants.VAL_ACTION_TYPE_FIELD_RECOMMENDATION);
}
raExecutionGr.query();
if (raExecutionGr.hasNext()) {
rowCount = raExecutionGr.getRowCount();
raExecutionGr.deleteMultiple();
}
return rowCount;
},
type: 'NextBestActionDAOImpl'
};
Sys ID
883e11393bfa1010c24e870044efc4bb