Script Lab
Script Lab
Script Lab
Temporary Page for Knowledge 11 Advanced Scripting & Debugging Lab
Business Rules
// Debug info
//gs.addInfoMessage("(InfoMessage) Incident state = " +
current.incident_state); //output to app
//gs.log("(Log) Incident state = " + current.incident_state); //output
to system log
//gs.print("(debug print) Incident state = " + current.incident_state);
//output to debug console
current.priority = 1;
try {
Script Lab 2
Client Scripts
if (newValue == "request") {
g_form.setValue("urgency", 3);
jslog("k11 Exercise 5 Request Category client script: Setting
urgency to low for requests");
}
}
Background Scripts
function disableUsers() {
users.query();
gs.print("User query: " + users.getEncodedQuery() + " = " +
users.getRowCount());
while (users.next()) {
//deactivate user
users.active = false;
//users.update();
gs.print(users.getDisplayValue() + " was disabled");
}
}
Script Includes
/*
* new script include that extends TableUtils so we can add our own
logic
*/
var MyTableUtils = Class.create();
MyTableUtils.prototype = Object.extendsObject(TableUtils, {
getTablesArray: function() {
var tables = this.getTables();
return j2js(tables);
},
type: "MyTableUtils"
});
/*
* Testing MyTableUtils getTablesArray from background script
* enumerate javascript array instead of java array list
Script Lab 4
*/
var util = new MyTableUtils("cmdb_ci_server");
//call our new method
var tables = util.getTables();
gs.print("Java list: " + tables);
JSUtil.logObject(tables, "tables");
gs.print("");
var tablesArray = util.getTablesArray();
gs.print(tablesArray);
JSUtil.logObject(tablesArray, "tablesArray");
//what is util object
JSUtil.logObject(util, "util");
AJAX
function onLoad() {
// new GlideAjax object
var gajax = new GlideAjax("CapacityCheckAjax");
// add parameter to call function we need
gajax.addParam("sysparm_name", "checkDevCapacity");
// submit to server, call ajaxResponse function with server response
gajax.getXML(ajaxResponse);
function ajaxResponse(serverResponse) {
var result = serverResponse.responseXML.getElementsByTagName("result");
var inStock = result[0].getAttribute("found_one");
var stockCount = result[0].getAttribute("stock_count");
var reservedComputer = result[0].getAttribute("reserved_computer");
if (inStock != "true") {
alert("We currently don't have any in stock so you order may be
delayed");
return;
}
if (reservedComputer) {
alert("There are currently " + stockCount +
" in stock, we have reserved device " + reservedComputer +
" for you");
} else {
alert("There are currently " + stockCount + " in stock");
Script Lab 5
}
}
/*
* k11 CatalogCapacityCheck script include
* Description - handle catalog client script AJAX request to check
laptop inventory
*/
ajaxFunction_checkDevCapacity : function() {
// add some error handling
gs.log("RUNNING checkDevCapacity");
try {
this._debug("_checkDevCapacity starting");
comp.getEncodedQuery()
+ " returned " + stockCount);
/*
* Hold this computer for this user in case they order should
have job to
* cleanup reserved but never ordered
*/
_allocateComputer : function(/* GlideRecord */computer) {
try {
computer.setValue("install_status", this.RESERVED);
computer.setValue("assigned_to", gs.getUserID());
computer.update();
this._debug("_allocateComputer: reserved "
+ computer.getDisplayValue() + " for " +
gs.getUserName());
return true;
} catch (err) {
gs.log("ERROR - " + this.type + "(" + err + ")");
}
Script Lab 7
},
/*
* Centralized debug logging
*/
_debug : function(msg) {
// exit early if not debugging
if (!this.DEBUG_ENABLED) {
return;
}
gs.log(this.type + ": " + msg);
},
type : "CapacityCheckAjax"
});
/*
* testing AJAX call and response from javascript executor
*/
function ajaxResponse(serverResponse) {
alert(serverResponse.responseText);
}
Jelly
<g2:evaluate var="jvar_session_query_debug">
session.getEncodedQuery() + " = " + session.getRowCount();
</g2:evaluate>
<g2:evaluate var="jvar_session_total_transactions">
session.total_transactions;
</g2:evaluate>
on old problems
*/
/*
* Client Script k11 Exercise 10 - notify on old problems
* problem onLoad
* Description - get data from display business rule and alert user on
old problems
*/
function onLoad() {
//get data from display rule scratchpad
var createdBy = g_scratchpad.created_by;
var daysOld = g_scratchpad.days_old;