Name
sn_hr_integrations.HRIntegrationsSyncHandler
Description
No description available
Script
var hrIntegrationsHelper = new HRIntegrationsHelper();
var HRIntegrationsSyncHandler = Class.create();
HRIntegrationsSyncHandler.prototype = {
initialize: function() {
// do nothing
},
startSync : function(externalSourceName, jobId) {
var LOG_PREFIX = externalSourceName + "-" + jobId ;
var logSource = hrIntegrations.HR_INT_LOADER_LOG + "_" + externalSourceName;
var localStartTime = new GlideDateTime();
hrIntegrationsHelper.logDebug(LOG_PREFIX + " - Sync Started at" + localStartTime, logSource);
var externalSource = new GlideRecord(hrIntegrations.HR_INT_SOURCE);
externalSource.addActiveQuery();
externalSource.addQuery("name", externalSourceName);
externalSource.query();
var retriever;
if (externalSource.next()) {
retriever = hrIntegrationsHelper.getRetriever(externalSourceName);
retriever = retriever.preProcess(jobId,externalSource);
} else {
gs.error(LOG_PREFIX + " Invalid source name" ,logSource);
hrIntegrationsHelper.jobCompleted(externalSourceName, jobId);
}
},
startIntegrationServicesLoad : function(externalSourceId, jobId){
var externalSourceGr = new GlideRecord(hrIntegrations.HR_INT_SOURCE );
externalSourceGr.get(externalSourceId);
var LOG_PREFIX = externalSourceGr.name + "-" +jobId ;
var logSource = hrIntegrations.HR_INT_LOADER_LOG +"_"+ externalSourceGr.name;
hrIntegrationsHelper.logDebug(LOG_PREFIX + " Start Integration Service Load" , logSource);
var retriever = hrIntegrationsHelper.getRetriever(externalSourceGr.name);
retriever.startIntegrationServicesLoad(jobId, externalSourceGr);
},
integrationServicesLoadCompleted : function(jobId, intServiceId) {
var tracker = hrIntegrationsHelper.getIntegrationServiceTracker(intServiceId, jobId);
hrIntegrationsHelper.logDebug("************TRACKER********* " + tracker.sys_id + " " + tracker.hr_external_source.name);
var externalSourceName = tracker.hr_external_source.name;
var LOG_PREFIX = externalSourceName + "-" + jobId ;
var logSource = hrIntegrations.HR_INT_LOADER_LOG + "_" + externalSourceName;
hrIntegrationsHelper.logDebug(LOG_PREFIX + " Integration service load completed for " + tracker.hr_integration_service.name, logSource);
var retriever = hrIntegrationsHelper.getRetriever(tracker.hr_external_source.name);
retriever.integrationServicesLoadCompleted(tracker);
},
integrationServicesLoadFailed : function(jobId, intServiceId, errorReason) {
var tracker = hrIntegrationsHelper.getIntegrationServiceTracker(intServiceId, jobId);
var externalSourceName = tracker.hr_external_source.name;
var LOG_PREFIX = externalSourceName + "-" + jobId ;
var logSource = hrIntegrations.HR_INT_LOADER_LOG + "_" + externalSourceName;
gs.error(LOG_PREFIX + " Integration service load failed for " + tracker.hr_integration_service.name+ " " + errorReason, logSource);
var retriever = hrIntegrationsHelper.getRetriever(tracker.hr_external_source.name);
retriever.integrationServicesLoadFailed(tracker, errorReason);
},
jobFailed : function(jobId, errorReason) {
var jobTrackerAfter = new GlideRecord(hrIntegrations.JOB_TRACKER_TABLE);
if (jobTrackerAfter.get(jobId)) {
jobTrackerAfter.setValue("state","failed");
jobTrackerAfter.setValue("error_message", errorReason);
jobTrackerAfter.setValue("job_ended_at", new GlideDateTime().getDisplayValue());
jobTrackerAfter.update();
} else
gs.error( "Invalid Job ID "+ jobId , hrIntegrations.HR_INT_LOADER_LOG );
},
retryExternalInterfaceErrors : function(){
var externalInterfaceGr = new GlideRecord(hrIntegrations.HR_INT_EXTERNAL_INTERFACE);
externalInterfaceGr.addQuery('status','error');
externalInterfaceGr.addQuery('retry_maxout',false);
externalInterfaceGr.addQuery('hr_integration_service_mapping.hr_external_source.active',true);
externalInterfaceGr.addNotNullQuery('error_code');
externalInterfaceGr.query();
while(externalInterfaceGr.next()){
try{
var currentRetryCount = externalInterfaceGr.retry_count + 1;
var sourceRetryCount = externalInterfaceGr.hr_integration_service_mapping.hr_external_source.outbound_push_retry_cnt;
if(sourceRetryCount<=0)
continue;
if(gs.nil(sourceRetryCount) || currentRetryCount >= sourceRetryCount )
externalInterfaceGr.setValue('retry_maxout',true);
externalInterfaceGr.setValue('status','pending');
externalInterfaceGr.setValue('retry_count',currentRetryCount);
externalInterfaceGr.update();
}catch(error){
gs.error( "Error in retry "+externalInterfaceGr.getUniqueValue()+ " error "+ error , hrIntegrations.HR_INT_EXTERNAL_INTERFACE );
}
}
},
type: 'HRIntegrationsSyncHandler'
};
Sys ID
daf836d29fb032003be01050a57fcf17