Name
sn_install_base.AssetIBSynchronizer
Description
No description available
Script
var AssetIBSynchronizer = Class.create();
AssetIBSynchronizer.prototype = {
initialize: function() {},
syncRecord: function(source, sourceBaseTable) {
var assetIBIntegrationUtils = new AssetIBIntegrationUtils();
if(!assetIBIntegrationUtils.canPerformSync(source, sourceBaseTable))
return;
var syncField = this._getSyncField(sourceBaseTable);
var destinationSysId = source.getValue(syncField);
if (!destinationSysId)
return;
var destinationBaseTable = this._getDestinationBase(sourceBaseTable);
var destBaseGr = new GlideRecord(destinationBaseTable);
destBaseGr.get(destinationSysId);
var destination = new GlideRecord(destBaseGr.sys_class_name);
destination.get(destinationSysId);
var update = false;
var fieldMap = assetIBIntegrationUtils.getFieldMap(sourceBaseTable, destinationBaseTable);
for(var sourceField in fieldMap){
var destinationField = fieldMap[sourceField];
if(!source.isValid(sourceField) || !destination.isValid(destinationField))
continue;
var sourceValue = source.getValue(sourceField);
var destinationValue = destination.getValue(destinationField);
if(sourceValue != destinationValue){
if(gs.nil(sourceValue)){
destination.setValue(destinationField, '');
}
else{
destination.setValue(destinationField, sourceValue);
}
update = true;
}
}
if (update) {
this._setSkipSyncVariable(destination, destinationBaseTable);
try{
var result = destination.update();
if(result < 0){
gs.error('AssetIBSynchronizer: Unable to sync fields for install base record with sys_id ' + destination.getUniqueValue());
}
}
catch(e){
gs.error('AssetIBSynchronizer: Exception while performing sync for install base record with sys_id ' + destination.getUniqueValue() + ' ' + e);
}
}
},
_getSyncField: function(baseTable){
if(baseTable == AssetIBIntegrationConstants.INSTALL_BASE_TABLE)
return AssetIBIntegrationConstants.ASSET_FIELD_ON_IB;
if(baseTable == AssetIBIntegrationConstants.ASSET_TABLE)
return AssetIBIntegrationConstants.IB_FIELD_ON_ASSET;
},
_setSkipSyncVariable: function(destination, destinationBaseTable){
if(destinationBaseTable == AssetIBIntegrationConstants.INSTALL_BASE_TABLE)
destination.skip_sync = true;
if(destinationBaseTable == AssetIBIntegrationConstants.ASSET_TABLE)
destination.skip_sync_to_ib = true;
},
_getDestinationBase: function(sourceBaseTable){
if(sourceBaseTable == AssetIBIntegrationConstants.INSTALL_BASE_TABLE)
return AssetIBIntegrationConstants.ASSET_TABLE;
if(sourceBaseTable == AssetIBIntegrationConstants.ASSET_TABLE)
return AssetIBIntegrationConstants.INSTALL_BASE_TABLE;
},
type: 'AssetIBSynchronizer'
};
Sys ID
911962ea874aa910d3230e19dabb358b