Name
global.DataSourceDataStreamAjax
Description
When the Data Stream Action input is changed, get the list of dynamic action input variables
Script
var DataSourceDataStreamAjax = Class.create();
DataSourceDataStreamAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
/*
* To check if for the given data source record has a data stream action associated with action inputs
* input : data source record sys_id
* output : object with property hasActionInputs true or false
*/
hasDSActionInputs: function() {
var currentDataSourceRecord = this.getParameter('sysparam_ds_record_sys_id');
if (!gs.nil(currentDataSourceRecord))
return this._hasActionInputs(currentDataSourceRecord);
return '';
},
/*
* To get action inputs for the data stream action associated with data source
* input : data source record sys_id
* ouput : object with property dsActionInputs array and dsActionDBValue and dsSnapshotValue
*/
getDSActionInputs: function() {
var currentDataSourceRecord = this.getParameter('sysparam_ds_record_sys_id');
if (!gs.nil(currentDataSourceRecord))
return this._getActionInputs(currentDataSourceRecord);
return '';
},
/*
* To get options to override the connection and credential specified in the action, if any
*/
getConnectionAliases: function() {
var currentDataSourceRecord = this.getParameter('sysparam_ds_record_sys_id');
if (!gs.nil(currentDataSourceRecord))
return this._getConnectionAliases(currentDataSourceRecord);
return '';
},
_hasActionInputs: function(currentDataSourceRecord) {
var response = {
hasActionInputs: false
};
var dsActionInputObj = JSON.parse(this._getActionInputs(currentDataSourceRecord));
if (dsActionInputObj) {
for (var i = 0; i < dsActionInputObj.dsActionInputs.length; i++) {
if (!dsActionInputObj.dsActionInputs[i].isHidden)
response.hasActionInputs = true;
}
}
return JSON.stringify(response);
},
_getActionInputs: function(currentDataSourceRecord) {
var arrayUtil = new ArrayUtil();
var response = {
dsActionInputs: [],
dsActionDBValue: '',
dsSnapshotValue: ''
};
var currentRecord = this._getCurrentDSActionRecord(currentDataSourceRecord);
var glideVariableRecord = this._getGlideVariableRecord(currentRecord);
var glideVariableNames = this._getVariableNames(currentRecord);
if (this._isValidCurrentRecord(currentRecord)) {
response.dsActionDBValue = currentRecord.data_stream_action.toString();
response.dsSnapshotValue = currentRecord.data_stream_action.master_snapshot.toString();
if (!gs.nil(glideVariableRecord)) {
var elementsList = glideVariableRecord.getElements();
for (var i = 0; i < elementsList.size(); i++) {
if (!arrayUtil.contains(glideVariableNames, elementsList.get(i).getName()))
continue;
var inputVar = {
name: elementsList.get(i).getName(),
isMandatory: elementsList.get(i).getED().isMandatory(),
isHidden: elementsList.get(i).getAttribute('visible_in_ui') === 'false'
};
response.dsActionInputs.push(inputVar);
}
}
}
return JSON.stringify(response);
},
_getCurrentDSActionRecord: function(currentDataSourceRecord) {
var dsGr = new GlideRecord('sys_data_source');
if (dsGr.get(currentDataSourceRecord))
return dsGr;
return null;
},
_getConnectionAliases: function(currentDataSourceRecord) {
var currentRecord = this._getCurrentDSActionRecord(currentDataSourceRecord);
var connectionAlias = new sn_impex.FlowActionConnectionUtility().forFlowAction(currentRecord.data_stream_action);
if (!connectionAlias) {
return JSON.stringify({noAlias: currentDataSourceRecord});
}
// Resolve the parent alias to get its name and add to drop-down
var parent = new GlideRecord('sys_alias');
if (!parent.get(connectionAlias)) {
return JSON.stringify({noAlias: true});
}
var response = {
aliases: [
{
name: gs.getMessage("{0} (Default Connection)", parent.name.toString()),
sysId: parent.sys_id.toString(),
isDefault: true
}
]
};
var child = new GlideRecord('sys_alias');
child.addQuery('parent', connectionAlias);
child.query();
while(child.next()) {
response.aliases.push({
name: child.name.toString(),
sysId: child.sys_id.toString(),
isDefault: false
});
}
response.aliases.sort(function(alias1, alias2) {
if (alias1.name < alias2.name) return -1;
if (alias2.name < alias1.name) return -1;
return 0;
});
return JSON.stringify(response);
},
_getGlideVariableRecord: function(currentRecord) {
var glideVariableRecord = null;
if (this._isValidCurrentRecord(currentRecord)) {
glideVariableRecord = currentRecord.data_stream_action_inputs.getVariablesRecord();
}
return glideVariableRecord;
},
_getVariableNames: function(currentRecord) {
var glideVariableNames = [];
if (this._isValidCurrentRecord(currentRecord)) {
var names = currentRecord.data_stream_action_inputs.getVariableNames();
for (var i = 0; i < names.length; i++) {
glideVariableNames.push(names[i]);
}
}
return glideVariableNames;
},
_getNonSystemVariableNames: function(currentRecord) {
var variableNames = this._getVariableNames(currentRecord);
var nonSystemVariableNames = [];
for (var i = 0; i < variableNames.length; i++) {
var name = variableNames[i];
if (!name.startsWith("sys_") && !name.startsWith("dynamic_hidden_input_")) {
nonSystemVariableNames.push(name);
}
}
return nonSystemVariableNames;
},
_isValidCurrentRecord: function(currentRecord) {
return (!(gs.nil(currentRecord) && gs.nil(currentRecord.data_stream_action) && gs.nil(currentRecord.data_stream_action_input)));
},
type: 'DataSourceDataStreamAjax'
});
Sys ID
86c06c937341101057f131d7caf6a7d3