Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

GlideController functionality in Scoped app

Daniel Peel
Mega Sage

Currently I have an error function in a script include... I'm using in global and I want to move this process into a scoped application... I'm using GlideController to take a passed status value 430, 431 etc and use it to lookup a constant.  This works fine... but how can I do this in a scoped app... the GlideScopedEvaluator() doesn't seem to work the same way.

 

Thanks

//this are constants at the top the SI
ERROR430/*old 415*/ = 'The following required fields are missing: ';
ERROR431/*old 416*/ = 'The following field has an incorrect value: ';
ERROR432/*old 417*/ = 'The following record was not found: ';
ERROR433/*old 419*/ = 'The following error occurred: ';


//this is the function that is called and uses those for standard output.
_errorHandle: function(status,messageAddOn,calledFunction){

var message = '';
var getErrorMessage = GlideController;
var errorConstant = 'ERROR' + status;
var errorMessageFound = getErrorMessage.evaluateString(errorConstant);

if (errorMessageFound){
message = errorMessageFound + messageAddOn;
}
else {
message = messageAddOn;
}
var cmxError = new sn_ws_err.ServiceError();
cmxError.setStatus(status);
cmxError.setMessage(message);
cmxError.setDetail("Failure in: " + calledFunction);
return cmxError;
},

 

15 REPLIES 15

Callum Ridley1
Tera Guru

Hi Daniel,

This code seems a little odd to me. I assume by the trailing comma right at the end that it's in use within a Script Include? If that's the case then you could try refactoring your code a little to something like this.

var MyClass = Class.create();
MyClass.prototype = {
	
	STATIC_PROPERTIES: {
		ERROR430:'The following required fields are missing: ',
		ERROR431:'The following field has an incorrect value: ',
		ERROR432:'The following record was not found: ',
		ERROR433:'The following error occurred: ',
	},
	
	initialize: function() {
	},

	_errorHandle: function(status, messageAddOn, calledFunction){
		var message = '';
		var errorConstant = 'ERROR' + status;
		var errorMessageFound = this.STATIC_PROPERTIES[errorConstant];

		if (errorMessageFound){
			message = errorMessageFound + messageAddOn;
		} else {
			message = messageAddOn;
		}
		var cmxError = new sn_ws_err.ServiceError();
		cmxError.setStatus(status);
		cmxError.setMessage(message);
		cmxError.setDetail("Failure in: " + calledFunction);
		return cmxError;
	},

	type: 'MyClass'
};

If my answer is correct / helpful, please remember to mark it as such so that others can see the information as easily as possible.

Callum

Pranesh072
Mega Sage

try with GlideScopedEvaluator

 

ERROR430/*old 415*/ = 'The following required fields are missing: ';
ERROR431/*old 416*/ = 'The following field has an incorrect value: ';
ERROR432/*old 417*/ = 'The following record was not found: ';
ERROR433/*old 419*/ = 'The following error occurred: ';

_errorHandle: function(status,messageAddOn,calledFunction){

var message = '';
var getErrorMessage = new GlideScopedEvaluator();
var errorConstant = 'ERROR' + status;
var errorMessageFound = getErrorMessage.evaluateString(errorConstant);

if (errorMessageFound){
message = errorMessageFound + messageAddOn;
}
else {
message = messageAddOn;
}
var cmxError = new sn_ws_err.ServiceError();
cmxError.setStatus(status);
cmxError.setMessage(message);
cmxError.setDetail("Failure in: " + calledFunction);
return cmxError;
},

GlideScopedEvaluator does not have a method called evaluateString! There is also no need to be evaluating strings as scripts...

you are right