Exemplo de inclusão de script WSDL estático

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 2 min. de leitura
  • Este exemplo demonstra a inclusão de script FakeStockValue que implementa grande parte do comportamento WSDL estático.

    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();
      }
    }
    

    função de inicialização

    A função de inicialização usa a cadeia de caracteres de solicitação XML e a converte em um objeto de documento XML que você pode navegar e manipular usando bibliotecas. Como alternativa, você pode deixar a solicitação XML como uma cadeia de caracteres e navegar por ela usando expressões regulares.

    função de processo

    A função de processo é chamada pelo serviço web com script. Esta função captura o primeiro elemento secundário no XML após o elemento corpo. O WSDL usa este elemento secundário para determinar qual função usar. Neste WSDL há apenas uma função possível, mas a maioria dos WSDLs fornece muitas funções. Se mais funções estivessem disponíveis, haveria mais declarações "if" que testaram o primeiro elemento secundário para os vários nomes de função.

    Função fakeOutTradePriceRequest

    A função fakeOutTradePriceRequest é a implementação da única função disponível no WSDL. Esta função pesquisa o usuário com o qual a solicitação SOAP foi autenticada e recupera user_name Em seguida, retorna-o para o cliente SOAP. A função fakeOutTradePriceRequest pode ser expandida para executar atividades úteis, como pesquisar um símbolo de ação e retornar o último preço negociado.

    Função generateSoapFault

    A função generateSoapFault retorna um erro SOAP que pode ser chamado se houver problemas.