Beispiel für statische WSDL-Skript-Includes
In diesem Beispiel wird das Skript „FakeStockValue“ veranschaulicht, das einen Großteil des statischen WSDL-Verhaltens implementiert.
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();
}
}
Funktion initialisieren
Die Initialisierungsfunktion verwendet die XML-Anforderungszeichenfolge und konvertiert sie in ein XML-Dokumentobjekt, das Sie mithilfe von Bibliotheken navigieren und bearbeiten können. Alternativ können Sie die XML-Anforderung als Zeichenfolge belassen und sie mit regulären Ausdrücken navigieren.
Prozessfunktion
Die Prozessfunktion wird vom geskripteten Webservice aufgerufen. Diese Funktion greift das erste untergeordnete Element in der XML nach dem Textkörper-Element ab. Die WSDL verwendet dieses untergeordnete Element, um zu bestimmen, welche Funktion verwendet werden soll. In dieser WSDL gibt es nur eine mögliche Funktion, die meisten WSDLs bieten jedoch viele Funktionen. Wenn mehr Funktionen verfügbar wären, gäbe es mehr „wenn“-Anweisungen, die das erste untergeordnete Element für die verschiedenen Funktionsnamen getestet haben.
FakeOutTradePriceRequest-Funktion
Die Funktion fakeOutTradePriceRequest ist die Implementierung der einzigen verfügbaren Funktion in der WSDL. Diese Funktion sucht nach dem Anwender, als dem die SOAP-Anforderung authentifiziert wurde, und ruft ab Anwendername Gibt sie dann an den SOAP-Client zurück. Die Funktion fakeOutTradePriceRequest könnte erweitert werden, um nützliche Aktivitäten auszuführen, z. B. nach einem Aktiensymbol suchen und den zuletzt gehandelten Preis zurückgeben.
GenerateSoapFault-Funktion
Die Funktion generateSoapFault gibt einen SOAP-Fehler zurück, der bei Problemen aufgerufen werden kann.