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:
Const n4 = "http://www.webserviceX.NET/"
Class StockQuoteSoap_n4 As PortTypeBase
Call Service.Initialize ("HttpWwwWebserviceXNETStockQuote", _
Function GetQuote(symbol As XSD_STRING) As XSD_STRING
Set GetQuote = Service.Invoke("GetQuote", symbol)
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:
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
Print "Using symbol: " + symbol
Dim sh As New XSD_STRING()
Set sh = sq.GetQuote(sh)
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…