Exemple d’include de script WSDL statique
Cet exemple illustre l’include de script FakeStockValue qui implémente une grande partie du comportement WSDL statique.
var FakeStockValue = Class.create();
FakeStockValue.prototype = {
initialize : function(requestXML) {
//Use some backend XML utilities...you could use string tools if you wish
this.xmlutil = Packages.com.glide.util.XMLUtil;
//converting the string to an XML Document
this.fSoapDoc = new XMLDocument(requestXML);
},
process : function() {
var soapBody = this.fSoapDoc.getNode("/Envelope/Body");
//Our WSDL was formatted to have the only first child element be the function
var funcNode = this.xmlutil.getFirstChildElement(soapBody);
var nodeName = this.xmlutil.getNodeNameNS(funcNode);
//If the function for this SOAP request is TradePriceRequest, perform the necessary actions
if (nodeName == "TradePriceRequest") {
return this.fakeOutTradePriceRequest(funcNode);
}
//Couldn't find any supported functions in this SOAP request
return this.generateSoapFault("un-supported API call: " + nodeName);
},
fakeOutTradePriceRequest : function (funcNode) {
//Create the beginnings of our XML response
var r = new XMLDocument("<GetLastTradePriceOutput xmlns='https://www.service-now.com/vws/FakeStockValue'/>");
//Do the necessary actions here...we're going to get the USER ID of the user
//used to make this SOAP call. Then we will return the
//stock symbol they were asking about
var usersysid = gs.getUserID();
var now_GR = new GlideRecord("sys_user");
gr.get(usersysid);
var username = gr.user_name;
var quoteSymbol = this.xmlutil.getText(funcNode);
//Create a "message" element to store our response message
r.createElement("message", username + ", You were looking for a quote on "+quoteSymbol);
return r.getDocumentElement();
},
generateSoapFault : function (str) {
var f = "<SOAP-ENV:Fault>" +
"<faultcode xsi:type='xsd:string'>SOAP-ENV:FakeStockValue</faultcode>" +
"<faultstring xsi:type='xsd:string'>" + str +
"</faultstring>" +
"</SOAP-ENV:Fault>"
var s = new XMLDocument(f);
return s.getDocumentElement();
}
}
fonction d’initialisation
La fonction d’initialisation prend la chaîne de requête XML et la convertit en un objet de document XML dans lequel vous pouvez naviguer et manipuler à l’aide de bibliothèques. Vous pouvez également laisser la requête XML sous forme de chaîne et y accéder à l’aide d’expressions régulières.
Fonction de processus
La fonction de processus est appelée par le service Web scripté. Cette fonction récupère le premier élément enfant du XML après l’élément body. WSDL utilise cet élément enfant pour déterminer la fonction à utiliser. Dans ce WSDL, il n’y a qu’une seule fonction possible, mais la plupart des WSDL fournissent de nombreuses fonctions. Si plus de fonctions étaient disponibles, il y aurait plus d’instructions « if » qui testaient le premier élément enfant pour les différents noms de fonctions.
Fonction fakeOutTradePriceRequest
La fonction fakeOutTradePriceRequest est l’implémentation de la seule fonction disponible dans le WSDL. Cette fonction recherche l’utilisateur sous lequel la requête SOAP s’est authentifiée et récupère le user_name puis le renvoie au client SOAP. La fonction fakeOutTradePriceRequest peut être étendue pour effectuer des activités utiles, telles que la recherche d’un symbole boursier et le renvoi du dernier prix négocié.
Fonction generateSoapFault
La fonction generateSoapFault renvoie une erreur SOAP qui peut être appelée en cas de problème.