Exemplo de inclusão de script WSDL estático
Este exemplo demonstra a inclusão de script FakestockValue que implementa grande parte do comportamento estático do WSDL.
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();
}
}
inicializar função
A função de inicialização obtém 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 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 do corpo. O WSDL usa esse 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 falseOutTradePriceRequest
A função falseOutTradePriceRequest é a implementação da única função disponível no WSDL. Esta função pesquisa o usuário para o qual a solicitação SOAP foi autenticada, recupera o user_name e o retorna para o cliente SOAP. A função falseOutTradePriceRequest 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.