Name

sn_hr_integrations.HRIntegrationsTransformer

Description

No description available

Script

var hrIntegrationUtils = new global.HRIntegrationsUtils();
var HR_INT_SERVICE = 'sn_hr_integrations_service';
var hrIntegrationsHelper = new HRIntegrationsHelper();

var HRIntegrationsTransformer = Class.create();

HRIntegrationsTransformer.prototype = {
  initialize: function() {
  	// do nothing
  },
  
  startIntegrationServiceTransform : function(jobId, externalSourceId) {
  	var dryRun = hrIntegrationsHelper.isDryRun(externalSourceId);
  	var intServices = new GlideRecord(HR_INT_SERVICE);
  	intServices.addActiveQuery();
  	intServices.orderBy("order");
  	intServices.query();
  	while (intServices.next()) {
  		var tracker = hrIntegrationsHelper.getIntegrationServiceTracker(intServices.sys_id, jobId);
  		if (tracker) {
  			if (tracker.getValue("total") == 0 || tracker.getValue("inserts") == 0) {
  				hrIntegrationsHelper.logDebug("Pull didn't get any data, So Ignore");
  				gs.warn("No data pulled for the service " + intServices.name);
  				hrIntegrationsHelper.updateTracker(tracker, { state:"complete" });
  				continue;
  			}
  			hrIntegrationsHelper.logDebug("**********#########Import Set ID " + tracker.getValue("set"));
  			var importSetGR = new GlideRecord("sys_import_set");
  			if (importSetGR.get(tracker.getValue("set")) && importSetGR.getValue('state') == "loaded") {
  				//if dryRun set all the rows state to ignored
  				if (dryRun) {
  					hrIntegrationsHelper.logDebug("Dry Run is true, hence ignoring all rows " +intServices.getValue("staging_table"));
  					this.setImportSetRowsState(importSetGR.sys_id, intServices.getValue("staging_table"), "ignore");
  				}
  				tracker.setValue("transform_started_at" , new GlideDateTime().getDisplayValue());
  				tracker.setValue("state" , "running");
  				var trackerId = tracker.update();
  				hrIntegrationsHelper.logDebug("Starting the transformation for " +intServices.getValue("staging_table"));
  				hrIntegrationUtils.transformImportSet(importSetGR.getValue("sys_id"));
  				hrIntegrationsHelper.logDebug("Completed the transformation for " +intServices.getValue("staging_table"));
  				this._postProcessAllRecords(intServices.getValue("staging_table"),importSetGR.getValue("sys_id"));
  				hrIntegrationsHelper.logDebug("Completed the Post Processing of all records for " + intServices.getValue("staging_table"));
  				tracker.get(trackerId);
  				importSetGR.get(tracker.getValue("set"));
  				if (importSetGR.getValue("state") == "processed") {
  					var impRun = new GlideRecord("sys_import_set_run");
  					impRun.addQuery("set", importSetGR.sys_id);
  					impRun.query();
  					impRun.next();
  					tracker.setValue("state" , impRun.getValue("state"));
  				}
  				tracker.setValue("transform_ended_at", new GlideDateTime().getDisplayValue());
  				tracker.update();
  			} else
  				gs.warn("No data pulled for the service " + intServices.name);
  		} else
  			gs.error("*********************************#####################TRACKER NOT FOUND############################" + intServices.name + " Job Id:  " +  jobId);
  	}
  },
  
  setImportSetRowsState: function(importSetId, stagingTable, state){
  	var importSetRun = new GlideRecord(stagingTable);
  	importSetRun.addQuery("sys_import_set", importSetId);
  	importSetRun.query();
  	while(importSetRun.next()) {
  		importSetRun.setValue("sys_import_state", state);
  		importSetRun.update();
  	}
  },
  
  getIntegrationServiceJobTracker : function (integrationServiceId, jobId, externalSourceId) {
  	var tracker = new GlideRecord(hrIntegrations.SERVICE_JOB_TRACKER_TABLE);
  	tracker.addQuery("hr_integration_service", integrationServiceId);
  	tracker.addQuery("hr_integrations_job_tracker", jobId);
  	tracker.addQuery("hr_external_source", externalSourceId);
  	tracker.query();
  	tracker.next();
  	return tracker;
  },
  
  _postProcessAllRecords: function(importTable, importSetId) {
  	if (importTable == hrIntegrations.HR_WORKER_STAGING) {
  		var helper =new HRIntegrationsWorkerTransformHelper();
  		helper.postProcessAllRecords(importSetId);
  	}
  },

  type: 'HRIntegrationsTransformer'
};

Sys ID

bd8f96999f2432003be01050a57fcfe7

Offical Documentation

Official Docs: