In a recent edition of the LotusUsergroup.org newsletter Julian listed some of the new AppDev features of Notes 8. Among them were the new web service enabled script libraries.
Basically what you do is simply pointing a script library to a WSDL file and some stub code is automatically generated for you. Then when you use the script library from agents etc. the methods you call will automatically be forwarded to the actual web service without you worrying about SOAP, HTTP etc. It actually is that easy!
To test it out I found an example of a public stock quote web service (http://www.webservicex.net/stockquote.asmx?WSDL) and used that for an example.
Start by creating a new empty LotusScript script library. Now click the “WSDL…” button at the bottom of Domino Designer and simply select “Import WSDL”. Now paste the above URL into the filename field and click Open (it’s really nice that you can actually simply paste the WSDL URL into the dialog instead of first saving the WSDL to a local file). Now your script library should look like this:
%INCLUDE "lsxsd.lss" Const n4 = "http://www.webserviceX.NET/" Class StockQuoteSoap_n4 As PortTypeBase Sub NEW Call Service.Initialize ("HttpWwwWebserviceXNETStockQuote", _ "StockQuote.StockQuoteSoap", _ "http://www.webservicex.net/stockquote.asmx", _ "StockQuoteSoap_n4") End Sub Function GetQuote(symbol As XSD_STRING) As XSD_STRING Set GetQuote = Service.Invoke("GetQuote", symbol) End Function End Class
Now save the script library and call it “Stock quote”.
Create a LotusScript agent and in Options import the script library (Use “Stock quote”). Now we want to call the script library which is done using code like this:
Sub Initialize Dim ws As New NotesUIWorkspace Dim sq As New StockQuoteSoap_n4() Dim symbol As String Dim symbols(2) As String symbols(0) = "IBM" symbols(1) = "JAVA" symbols(2) = "AAPL" symbol = ws.Prompt(4, "Stock symbol", _ "Select stock for quote...", "", symbols) If symbol = "" Then Exit Sub Else Print "Using symbol: " + symbol End If Dim sh As New XSD_STRING() Call sh.setValueFromString(symbol) Set sh = sq.GetQuote(sh) Msgbox sh.getValueAsString() End Sub
Now when you run the agent and you select a stock symbol it will actually automatically go out to the web service, get the quote and return it to the caller. All this with the code I just showed you. Nice!
Stand by for a post on the nitty, gritty details…