Discovering Notes 8: Web service enabled script libraries
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...
Re: Discovering Notes 8: Web service enabled script libraries
Im currently trying to wire an database agent and a Sidebar plugin together. I dont know why but I somehow found out that it should work with A WSDL file ( like in composite applications).
Can you tell me if i'm at the good route or that i have to think the complete oppsite way?
Re: Discovering Notes 8: Web service enabled script libraries
Thus far I havent found any information regarding this manner. Is this because its just not possible or?
Re: Discovering Notes 8: Web service enabled script libraries
Nice, short and good demo <span>lekkim. :) The creation of Java Webservices is also very easy, although a bit more verbose.
</span><style type="text/css"></style>
Re: hard coded URL ? put a parameter / Discovering Notes 8: Web service enabled script libraries
I got the confusing message The Script Libarary cannot be saved. The changes made to the generated source code would prevent its proper operation. when saving.
Fortunately its possible to change the NEW like this (and save):
Sub NEW(Service_URL as string)
Call Service.Initialize ("HttpWwwWebserviceXNETStockQuote", _
"StockQuote.StockQuoteSoap", _
Service_URL, _
"StockQuoteSoap_n4")
End Sub
Maybe trivial, but nevertheless, I share this with you.
Re: hard coded URL ? put a parameter / Discovering Notes 8: Web service enabled script libraries
Hi, I get "Not a Sub or Function Name: INITIALIZE" when I try to save. What am I doing wrong? I also tried the gentleman's example above with the same result. I checked and "lsxsd.lss" is in the proper place and being imported...