Beispiel für statische WSDL-Skript-Includes

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 2 Minuten Lesedauer
  • 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 „initialize“

    Die Funktion „initialize“ übernimmt 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 mit regulären Ausdrücken navigieren.

    Funktion „process“

    Die Funktion „process“ wird vom geskripteten Webservice aufgerufen. Diese Funktion erfasst das erste untergeordnete Element in der XML nach dem Textkörper-Element. 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 „if“ -Anweisungen, mit denen das erste untergeordnete Element auf die verschiedenen Funktionsnamen getestet wurde.

    Funktion „fakeOutTradePriceRequest“

    Die Funktion „fakeOutTradePriceRequest“ ist die Implementierung der einzigen verfügbaren Funktion in der WSDL. Diese Funktion sucht den Benutzer, den die SOAP-Anforderung authentifiziert hat, ruft den user_name ab, und gibt ihn dann an den SOAP-Client zurück. Die Funktion „fakeOutTradePriceRequest“ könnte erweitert werden, um nützliche Aktivitäten auszuführen, beispielsweise das Nachschlagen eines Aktiensymbols und das Zurückgeben des zuletzt gehandelten Preises.

    Funktion „generateSoapFault“

    Die Funktion „generateSoapFault“ gibt einen SOAP-Fehler zurück, der bei Problemen aufgerufen werden kann.