T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language...
Transcript of T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language...
![Page 1: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/1.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Spicing Up XPages with
Classic Notes Development
Ben Langhinrichs
![Page 2: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/2.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Introduction: Ben Langhinrichs
• President - Genii Software Ltd.
– Founded in 1992 (OS/2 utilities)
– First Notes product in 1995
– IBM/Lotus Business Partner since 1995
– Based in Cleveland, Ohio, U.S.A.
– Customers in 49 countries
• Author, poet, book reviewer
![Page 3: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/3.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Genii Software – Current Products
Coexistence Solutions
• CoexEdit: Notes/Web editing coexistence
• CoexLinks: Notes/Outlook e-mail coexistence
Rich Text Tools
• Midas Rich Text LSX
• Midas Rich Text C++ API
• @Midas Lookups (free)
![Page 4: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/4.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Agenda
• Formula language – Why it’s still relevant
• LotusScript – Not Dead Yet
• C API Extensions – Pining for the fjords
• @Formulas in XPages
• Formula language in XPages
• LotusScript agents in XPages
• C API with XPages
![Page 5: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/5.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Formula language
• Actions, buttons, action hotspots, popups, etc.
• Agents
• Column formulas
• Computed fields
• Computed images
• Computed section titles
• Computed text
![Page 6: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/6.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Formula language (continued)
• Default field values
• Hide/when formulas
• Input translation and validation formulas
• View Selection formulas
• Window titles
and on and on
![Page 7: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/7.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Formula language – obsolete?
• Q: How many of these functions are no longer
needed in an XPages-only environment?
• Q: How many of you believe that you will have
even one XPages-only customer within five years?
• A: Formula language will be needed for a while
![Page 8: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/8.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Formula language - strengths
• List manipulation features and functions
• Ease-of-use functions such as @Success/@Failure
• Powerful functions like @Sort and @Transform
• UI functions
• Nested function evaluation
• Built-in Notes understanding
![Page 9: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/9.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Formula language - lists
• List addition
• @Unique
• @Implode
• Put it together to build HTML
![Page 10: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/10.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Demo: Building HTML with Lists
![Page 11: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/11.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Formula language - validation
• @Success will allow a refresh or save to continue
• @Failure will cause a refresh or save to fail, and put
the cursor in the failed field if it is not hidden.
• Validation of one field or several.
• @If (@ThisValue != “”; @Success; @Failure
(“Please enter a value.”))
![Page 12: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/12.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Formula language - validation
• Either enter your @Formula in the input validation
event for each field,
• Or validate several at once with:@If (( field1 = “” |
field2 = “” | field3 = “”); @Failure (“Please enter all
of the required fields.”); @Success)
• This later avoids repeated prompts for the user who
hasn’t filled out any of a few different fields.
![Page 13: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/13.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Formula language - validation
• @ThisValue can be used in field formula to get the
value of that field
• @ThisName provides the name of the current field
![Page 14: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/14.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Formula language - replacements
• @ReplaceSubstring performs find and replace on
substrings, while @Replace replaces whole
elements in an array
• @ReplaceSubstring (@ThisValue; “\” ; “/”)
• @Replace (names; “Vince Schuurman”; “Ben
Langhinrichs”)
![Page 15: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/15.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Formula language - @Transform
@Unique(@Trim(@Transform(Speaker; "S";
@If(S = "TBD":"" | @Contains(S; "TBD"); "TBD";
@Do(R:=@Transform(@Explode(S; " "); "W";
@If(@Matches(W; "{a-z}*");
W+@RightBack(S; W)+", "+@LeftBack(S; W);
@Nothing)); @If (@Trim(R) != ""; @Trim(R)[1];
@RightBack(S; " ")+", "+@LeftBack(S; " ")))))))
![Page 16: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/16.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
@Transform (a tiny bit) simpler
@Transform(names; "S";
@Do(R:=@Transform(@Explode(S; " "); "W";
@If(@Matches(W; "{a-z}*");
W+@RightBack(S; W)+", "+@LeftBack(S; W);
@Nothing)); @If (@Trim(R) != ""; @Trim(R)[1];
@RightBack(S; " ")+", "+@LeftBack(S; " "))))
![Page 17: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/17.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Demo: Transforming Names
![Page 18: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/18.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
@Random
• @Random generates random number between 0 and 1
• To get a random number between two others, use
(y – x) * @Random + x
![Page 19: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/19.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
@Random
• @Text allows converting values to a string with a
specified format.
• Dates, numbers, etc. The format value is powerful, if
difficult to learn well.
![Page 20: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/20.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
@Matches and @Contains
• @Matches is very handy for pattern matching as a way
of validating format for a field entry
• Several wildcard characters are available for @Matches
• Lists can be passed in as both the parameter to be
checked, and the parameter containing the pattern for
which to check
• @Contains similar, but based on substrings
• Similar to @Replace/@ReplaceSubstring
![Page 21: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/21.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
@Formula in XPages
• Simulated versions of formula functions is included
with server-side JavaScript in 8.5.2
• Syntax is slight different, but the functions that are
included are very closely matched.
• Commas instead of semicolons
• Always need parentheses, as in @Random()
• Lower learning curve for Notes developers
![Page 22: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/22.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
@Formula in XPages
• Many functions missing, but mostly those having to
do with UI
• No @Command or @DbCommand
![Page 23: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/23.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Code Peek
![Page 24: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/24.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
LotusScript – Not dead yet
• LotusScript is not available inside XPages, but can
be used along with XPages
• Web doesn’t understand LotusScript, but WQO and
WQS agents could use LotusScript
![Page 25: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/25.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
LotusScript – Not dead yet
• LotusScript can be used to create a web page using
Print statement
• LotusScript can work with formula language using
Evaluate
![Page 26: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/26.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
LotusScript – inside XPages
• Web doesn’t understand LotusScript, but WQO and
WQS agents can use LotusScript
• LotusScript agents can be called using
agent.runWithDocumentContext
![Page 27: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/27.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
More information
• http://twitter.com/blanghinrichs
• http://GeniiSoft.com – Company website
• http://GeniiSoft.com/showcase.nsf/EC2011
• http://GeniiSoft.com/showcase.nsf/GeniiBlog
• http://MyComfyChair.blogspot.com – reviews
of books for kids
![Page 28: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/28.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
My Sessions:EntwicklerCamp 2011
• #1: Web Editors - CKEditor and Others
(Montag 13.45-15.15)
• #2: Spicing Up XPages with Classic Notes Development
(Mittwoch 09.00-10.30)
![Page 29: T2S7-Spicing Up XPages with Classic Notes Dev · • LotusScript can work with formula language using Evaluate. Den nächste Schritt zum Erfolg : Domino&Notes 8.5 Powered by Bundled-KnowHow](https://reader033.fdocuments.us/reader033/viewer/2022060720/608043abd6017157d0749fd0/html5/thumbnails/29.jpg)
Den nächste Schritt zum Erfolg : Domino&Notes 8.5Powered by
Bundled-KnowHow
Q&A: Are we done yet?