1
It's Not Infernal: Dante's
Nine Circles of XPages
Heaven
We will start promptly at 10:30 A.M.
2
In Memory of Tim Tripcony…
It’s Not Infernal: Dante’s Nine Circles of XPages Heaven
Tweet about this event: #XPages
and mention us: @teamstudio @TLCC...
@teamstudio
teamstudio.com
@TLCCLTD
tlcc.com
Courtney Carter
Inbound Marketing Specialist
Who We Are
• Our background is in creating tools for collaborative
computing in mid-size and large enterprises,
primarily ...
Teamstudio Unplugged
• Your mobile Domino server: take your Notes apps
with you!
• End-users access Notes applications fro...
Unplugged Templates
• Continuity – Mobile offline access to
BCM programs
• OneView Approvals – Expense
approvals; anywhere...
• Next Wireless Wednesdays webinar: Enhance Your
Enterprise Mobile Application
o June 4, 2014
• Next Teamstudio/TLCC webin...
It's Not Infernal: Dante's Nine Circles of XPages Heaven
3
#XPages
Your Hosts Today:
Howard Greenberg
TLCC
@TLCCLtd
Paul D...
TLCC Courses and Services
• The Leader in Notes and Domino Training since
1997
• Self Paced Distance Learning Courses for
...
5
• Save hundreds and even Thousands of Dollars
on the most popular courses and packages
• Through June 13th
http://www.tl...
Upcoming and Recorded Webinars
6
Webinar Schedule
Bootstrap4XPages – June 17th
www.tlcc.com/xpages-webinar
View Previous W...
Asking Questions
7
Q & A at the end!
Type in your
questions as they
come up
Your Presenters Today:
8
#XPages
Mike McGarel
@mmcgarel
www.bleedyellow.com/blogs/McGarelGramming
Paul Withers, IBM Champi...
Paul Withers
ICS Consultant at Intec Systems Ltd
IBM Champion 2011-2014
Co-Author XPages Extension Library
OpenNTF Dir...
Mike McGarel
Working with Web technologies for over 14 years
Working with IBM Notes® & IBM Domino® since version 4.6
Co...
Dante’s Inferno
Author: Dante Alighieri, 14th Century
Part of Divine Comedy with Purgatorio and Paradiso
Journey by Dan...
The Circles
 First Circle: Limbo
 Second Circle: Lust
 Third Circle: Gluttony
 Fourth Circle: Greed
 Fifth Circle: Wr...
First Circle: Limbo
5
Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Hybrid “Limbo” Applications
Add XPages into traditional Domino web applications
Use existing Domino databases as data so...
SSJS – The “Limbo” Language
Server-side JavaScript leverages pre-existing knowledge
– JavaScript syntax
• NotesDocument.g...
“Limbo” Property Values
Custom Language
<xp:text
value= “Database title is #{database.title}, database path is
#{javascri...
Demo
9
Converting LS to SSJS
Replace “Dim” with “var”
Replace “ As ” with “:”
Add “;”
Remember methods etc are case sensitive...
Second Circle: Lust
11
Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
It’s All About Wants
Users want:
– a familiar “look and feel”
– something easy to use
– to get in and out
You want them ...
Looks Matter
First impressions are key
Better looking “equals” works better
Steve McDonagh’s great series on design pri...
Interface Makeovers
IBM’s OneUI (v3):
http://infolib.lotus.com/resources/oneui/3.0/docPublic/index.htm
Extension Library...
15
Demo
16
Third Circle: Gluttony
17
Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Don’t Make Browsers Eat Too Much!
xsp.resource.aggregate=true
18
Temporary Gluttony – For Debugging!
xsp.client.resources.uncompressed=true
19
Fourth Circle: Greed
20 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Avoid Greed on Server
21
Demo
22
Persistence Options
Keep Pages in Memory
– Remembering, remembering, remembering…
– xsp.persistence.mode=basic
– Best for...
Persistence Options
Keep Only The Current Page in Memory
– Remembering, remembering, remembering…
– Oh, new page? Writing...
Persistence Options
GZip Persisted Files
– xsp.persistence.file.gzip
– Default=false
– Writing…next? You want it again? R...
Persistence Options
Maximum Pages
– xsp.persistence.tree.maxviews
• Default=4
• Remembering, remembering, remembering
• O...
Page Persistence Mode
xsp.persistence.viewstate=fulltree
– Default option, whole component tree persisted
xsp.persistenc...
Page Persistence Mode
xsp.persistence.viewstate=deltaex
– Valid if multiple pages stored in memory
– Stores full componen...
xsp.session.transient
xsp.session.transient=“false” sets XPage stateless
– Default VALUES overridden between requests
– D...
Fifth Circle: Wrath
30 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
More Responsiveness = Less Anger
Partial page refreshes
Client-side processing
– Dojo JavaScript framework (included wit...
Meet the Users’ Expectations
It’s a “mad mad mad mad world”
– Devices
– Locations
– Connectivity
Responsive design optio...
Demo
33
Sixth Circle: Heresy
34 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Java
“IBM always wanted us to use Java” – NO!
35
Why?
#{javascript:…} means parse this string using SSJS rules
Pass commands to VariableResolver
Look for corresponding ...
Demo
37
OpenNTF Domino API
38
OpenNTF Domino API
 Document.replaceItemValue(“myDateField”, new Date());
– Or Document.put(“myDateField”, new Date());
...
Seventh Circle: Violence
40
Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Themes
Themes can force controls to behave consistently
But some elements cannot be manipulated easily
–EventHandlers do...
“Strong-Arming” All Events
Dojo Standby Control on OpenNTF
– Hijacks partial refreshes
– Adds standby message during long...
Eighth Circle: Fraud
43
Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
SessionScope
SessionScope is fraudulent
– Session only for current application
– Browser session, not user session
44
HTTPOnly Cookies
Since Domino 9.0 SessionID and DomAuthSessId are now
HTTPOnly
Cannot be modified or removed via JavaScr...
How To Add Your Own HTTPOnly Cookie
Serdar Basegmez XSnippet
http://openntf.org/XSnippets.nsf/snippet.xsp?id=extended-
c...
Ninth Circle: Treachery
47
Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Beyond Domino Designer
Generate Javadocs
Eclipse Modeling Tools to create UML designs
– Use latest Eclipse for RCP and R...
We climbed, he first, I following his steps,
Till on our view the beautiful lights of heaven
Dawned through a circular ope...
Summary
XPages is a gateway to other worlds
It is a journey – small steps lead to great strides
Learn from what others ...
IBM Resources
 XPages.Info: http://xpages.info
 XPages Forum: http://www-10.lotus.com/ldd/xpagesforum.nsf
 Notes/Domino...
Community Resources
 Planet Lotus: http://planetlotus.org
 Notes in 9 (videos): http://www.notesin9.com
 XPages cheat s...
Questions????
9
Use the Q&A pane in WebEx
to ask questions
We will answer your questions
verbally
Upcoming Events:
6/17 – TLCC XPages Webinar
6/4 - Teamstudio Wireless Wednesdays
6/16-17 – Social Connections in Prague...
Upcoming SlideShare
Loading in …5
×

It's Not Infernal: Dante's Nine Circles of XPages Heaven

1,176 views

Published on

Come join us for this fun but informative webinar on XPages development with Paul Withers and Mike McGarel as they present their session from Connect 2014! Your very own Dante and Virgil will take you through a divine comedy of nine circles that show that XPages is more paradise than perdition. We'll show how XPages and related concepts like OSGi plugins make XPages a modern and vibrant development technology for web, mobile and rich client. On the way we'll guide you past some pitfalls to avoid becoming one of the lost souls. When we re-emerge, you'll see the sky's the limit with star-studded opportunities.

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,176
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

It's Not Infernal: Dante's Nine Circles of XPages Heaven

  1. 1. 1 It's Not Infernal: Dante's Nine Circles of XPages Heaven We will start promptly at 10:30 A.M.
  2. 2. 2 In Memory of Tim Tripcony…
  3. 3. It’s Not Infernal: Dante’s Nine Circles of XPages Heaven Tweet about this event: #XPages and mention us: @teamstudio @TLCCLTD @PaulSWithers @MikeMcGarel May 13, 2014
  4. 4. @teamstudio teamstudio.com @TLCCLTD tlcc.com Courtney Carter Inbound Marketing Specialist
  5. 5. Who We Are • Our background is in creating tools for collaborative computing in mid-size and large enterprises, primarily for IBM Notes • Easy-to-use tools for developers and administrators • 2300+ active customers, 47 countries • Offices in US, UK and Japan • Entered mobile space in 2010 with Unplugged: easy mobilization of Notes apps to Blackberry, Android and iOS
  6. 6. Teamstudio Unplugged • Your mobile Domino server: take your Notes apps with you! • End-users access Notes applications from mobile devices whether online or offline • Leverages existing skills and technology – XPages – a replication model you already know • Unplugged 3.1 recently released
  7. 7. Unplugged Templates • Continuity – Mobile offline access to BCM programs • OneView Approvals – Expense approvals; anywhere, anytime • CustomerView – lightweight CRM framework for field sales and field service teams • Contacts – customer information database • Activities – customer activity log • Media – mobile offline file storage and access
  8. 8. • Next Wireless Wednesdays webinar: Enhance Your Enterprise Mobile Application o June 4, 2014 • Next Teamstudio/TLCC webinar: Bootstrap4XPages o June 17, 2014 • Promotions: o Get our IBM Notes Upgrade Pack by May 31 and receive 5 free Unplugged licenses o Demo Teamstudio Continuity by June 30 to be entered to win an iPad mini
  9. 9. It's Not Infernal: Dante's Nine Circles of XPages Heaven 3 #XPages Your Hosts Today: Howard Greenberg TLCC @TLCCLtd Paul Della-Nebbia TLCC @PaulDN
  10. 10. TLCC Courses and Services • The Leader in Notes and Domino Training since 1997 • Self Paced Distance Learning Courses for Notes/Domino – XPages, Development, and Administration (user too!) • OnSite Private Classes • Mentoring/Consulting Services • Free demo courses – Intro. To XPages Development – Application Development 1 4
  11. 11. 5 • Save hundreds and even Thousands of Dollars on the most popular courses and packages • Through June 13th http://www.tlcc.com/springsale
  12. 12. Upcoming and Recorded Webinars 6 Webinar Schedule Bootstrap4XPages – June 17th www.tlcc.com/xpages-webinar View Previous Webinars (use url above)
  13. 13. Asking Questions 7 Q & A at the end! Type in your questions as they come up
  14. 14. Your Presenters Today: 8 #XPages Mike McGarel @mmcgarel www.bleedyellow.com/blogs/McGarelGramming Paul Withers, IBM Champion @PaulSWithers www.intec.co.uk/blog
  15. 15. Paul Withers ICS Consultant at Intec Systems Ltd IBM Champion 2011-2014 Co-Author XPages Extension Library OpenNTF Director Contributor to OpenNTF Blogger on XPages, IBM Domino® Designer and beyond – http://www.intec.co.uk/blog
  16. 16. Mike McGarel Working with Web technologies for over 14 years Working with IBM Notes® & IBM Domino® since version 4.6 Corporate developer Site developer for MWLUG 2
  17. 17. Dante’s Inferno Author: Dante Alighieri, 14th Century Part of Divine Comedy with Purgatorio and Paradiso Journey by Dante over Easter Weekend 1300 Dante rescued and guided by the Roman poet Virgil “Lasciate ogne speranza, voi ch’intrate” (“Abandon all hope, ye who enter here”) 3
  18. 18. The Circles  First Circle: Limbo  Second Circle: Lust  Third Circle: Gluttony  Fourth Circle: Greed  Fifth Circle: Wrath  Sixth Circle: Heresy  Seventh Circle: Violence  Eighth Circle: Fraud  Ninth Circle: Treachery 4
  19. 19. First Circle: Limbo 5 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  20. 20. Hybrid “Limbo” Applications Add XPages into traditional Domino web applications Use existing Domino databases as data source and new XPages database for user interface Add mobile interface Add XPages for sidebar 6
  21. 21. SSJS – The “Limbo” Language Server-side JavaScript leverages pre-existing knowledge – JavaScript syntax • NotesDocument.getUniversalID() • @DbLookup(@DbName(),“myViewName”,2, “[FAILSILENT]”) – Domino objects use LotusScript names – Many Formula Language @Functions supported • Kathy Brown has blogged which ones are not • http://www.runningnotes.net/index.php/2010/03/25/list- of-formula-not-supported-in-xpages/ 7
  22. 22. “Limbo” Property Values Custom Language <xp:text value= “Database title is #{database.title}, database path is #{javascript: @Subset(@DbName(), -1);}”> </xp:text> 8
  23. 23. Demo 9
  24. 24. Converting LS to SSJS Replace “Dim” with “var” Replace “ As ” with “:” Add “;” Remember methods etc are case sensitive and need () GetAllDocumentsByKey – need to pass key as Vector Full syntax required for interacting with Notes Items RECYCLE! 10
  25. 25. Second Circle: Lust 11 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  26. 26. It’s All About Wants Users want: – a familiar “look and feel” – something easy to use – to get in and out You want them to want your app 12
  27. 27. Looks Matter First impressions are key Better looking “equals” works better Steve McDonagh’s great series on design principles: http://dominoyesmaybe.blogspot.com/2012/09/principals-of- design-1-balance.html 13
  28. 28. Interface Makeovers IBM’s OneUI (v3): http://infolib.lotus.com/resources/oneui/3.0/docPublic/index.htm Extension Library / Dojo widgets http://dojotoolkit.org – XPages Help Application http://xhelp.openntf.org/ Twitter Bootstrap: http://getbootstrap.com jQuery Plugins – jQuery UI: http://jqueryui.com 14
  29. 29. 15
  30. 30. Demo 16
  31. 31. Third Circle: Gluttony 17 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  32. 32. Don’t Make Browsers Eat Too Much! xsp.resource.aggregate=true 18
  33. 33. Temporary Gluttony – For Debugging! xsp.client.resources.uncompressed=true 19
  34. 34. Fourth Circle: Greed 20 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  35. 35. Avoid Greed on Server 21
  36. 36. Demo 22
  37. 37. Persistence Options Keep Pages in Memory – Remembering, remembering, remembering… – xsp.persistence.mode=basic – Best for…quick retrieval, few users Keep Pages on Disk – Writing…next? You want it again? Reading… – xsp.persistence.mode=file – Best for…lots of users, but slower retrieval 23
  38. 38. Persistence Options Keep Only The Current Page in Memory – Remembering, remembering, remembering… – Oh, new page? Writing….and now… – Remembering, remembering, remembering… – xsp.persistence.mode=fileex – Best for…lots of users, quick retrieval of current page 24
  39. 39. Persistence Options GZip Persisted Files – xsp.persistence.file.gzip – Default=false – Writing…next? You want it again? Reading… Persist Files Asynchronously – xsp.persistence.file.async – Default=true – Server busy, remembering. Next? (Writing, writing) 25
  40. 40. Persistence Options Maximum Pages – xsp.persistence.tree.maxviews • Default=4 • Remembering, remembering, remembering • Only applies when xsp.persistence.mode=basic – xsp.persistence.file.maxviews • Default=10 • Writing, retrieving, writing, writing, discarding… • Default folder defined by xsp.persistence.dir.xspstate 26
  41. 41. Page Persistence Mode xsp.persistence.viewstate=fulltree – Default option, whole component tree persisted xsp.persistence.viewstate=nostate –No component tree stored, similar to xsp.session.transient=true xsp.persistence.viewstate=delta – Valid if pages stored in memory – Only stores changes since page loaded 27
  42. 42. Page Persistence Mode xsp.persistence.viewstate=deltaex – Valid if multiple pages stored in memory – Stores full component tree for current page, deltas for others Viewstate property on XPage allows developer to define at page level 28
  43. 43. xsp.session.transient xsp.session.transient=“false” sets XPage stateless – Default VALUES overridden between requests – Default STATES not overridden NOT “Go to next page from current” – INSTEAD “Go to next page from default” NOT “Toggle show detail from previous state” – INSTEAD “Toggle show detail from default” Great for large, read only pages, Websites – no storage 29
  44. 44. Fifth Circle: Wrath 30 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  45. 45. More Responsiveness = Less Anger Partial page refreshes Client-side processing – Dojo JavaScript framework (included with XPages) – jQuery JavaScript framework (easily added) – Other JavaScript frameworks or custom scripts Server-side processing – XAgent (XPage of just code with UI redirect) – Java (design element or WebContentWEB-INFsrc) 31
  46. 46. Meet the Users’ Expectations It’s a “mad mad mad mad world” – Devices – Locations – Connectivity Responsive design options: – Dojo layout container – Bootstrap responsive  Embedded experience 32
  47. 47. Demo 33
  48. 48. Sixth Circle: Heresy 34 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  49. 49. Java “IBM always wanted us to use Java” – NO! 35
  50. 50. Why? #{javascript:…} means parse this string using SSJS rules Pass commands to VariableResolver Look for corresponding variable name Map to a Java object/method So why not go straight to the source? 36
  51. 51. Demo 37
  52. 52. OpenNTF Domino API 38
  53. 53. OpenNTF Domino API  Document.replaceItemValue(“myDateField”, new Date()); – Or Document.put(“myDateField”, new Date());  for (Document doc : dc) {…}  Transactional Processing  SyncHelper  Email Helpers  OpenLog  Document Scanner  Database Listeners 39
  54. 54. Seventh Circle: Violence 40 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  55. 55. Themes Themes can force controls to behave consistently But some elements cannot be manipulated easily –EventHandlers don’t have a default stylekit –They can have a themeId applied though Themes loaded at end of page rendering –getStyleKitFamily() to find default theme id –Or use Mark Leusink’s debug toolbar 41
  56. 56. “Strong-Arming” All Events Dojo Standby Control on OpenNTF – Hijacks partial refreshes – Adds standby message during long-running partial refreshes – http://openntf.org/XSnippets.nsf/snippet.xsp?id=standby- dialog-custom-control 42
  57. 57. Eighth Circle: Fraud 43 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  58. 58. SessionScope SessionScope is fraudulent – Session only for current application – Browser session, not user session 44
  59. 59. HTTPOnly Cookies Since Domino 9.0 SessionID and DomAuthSessId are now HTTPOnly Cannot be modified or removed via JavaScript –http://openntf.org/XSnippets.nsf/snippet.xsp?id=clear- session-whole-server does not work Cannot be intercepted 45
  60. 60. How To Add Your Own HTTPOnly Cookie Serdar Basegmez XSnippet http://openntf.org/XSnippets.nsf/snippet.xsp?id=extended- cookie-implementation-for-httponly-cookies 46
  61. 61. Ninth Circle: Treachery 47 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  62. 62. Beyond Domino Designer Generate Javadocs Eclipse Modeling Tools to create UML designs – Use latest Eclipse for RCP and RAP Developers – Download from Eclipse Marketplace Atlassian SourceTree and Perforce P4Merge SHOW 103 Wednesday 8am http://www.slideshare.net/paulswithers1/beyond-domino- designer 48
  63. 63. We climbed, he first, I following his steps, Till on our view the beautiful lights of heaven Dawned through a circular opening in the cave: Thence issuing we again beheld the stars Dante, Inferno, Canto 34 130-133 49
  64. 64. Summary XPages is a gateway to other worlds It is a journey – small steps lead to great strides Learn from what others have done Be prepared for the “Great Beyond” 50
  65. 65. IBM Resources  XPages.Info: http://xpages.info  XPages Forum: http://www-10.lotus.com/ldd/xpagesforum.nsf  Notes/Domino Application Development Wiki: http://www-10.lotus.com/ldd/ddwiki.nsf  Collaboration Today: http://collaborationtoday.info  OpenNTF: http://openntf.org  OpenNTF Snippets: http://openntf.org/XSnippets.nsf/home.xsp  The “XPages trilogy”: – Mastering XPages, 2nd Edition due shortly (IBM Press) – XPages Extension Library (IBM Press) – XPages Portable Command Guide (IBM Press) 51
  66. 66. Community Resources  Planet Lotus: http://planetlotus.org  Notes in 9 (videos): http://www.notesin9.com  XPages cheat sheets: http://www.xpagescheatsheets.com  YouAtNotes XPages wiki: http://www.xpageswiki.com  Stack Overflow: http://stackoverflow.com/questions/tagged/xpages 52
  67. 67. Questions???? 9 Use the Q&A pane in WebEx to ask questions We will answer your questions verbally
  68. 68. Upcoming Events: 6/17 – TLCC XPages Webinar 6/4 - Teamstudio Wireless Wednesdays 6/16-17 – Social Connections in Prague 8/27-29 – MWLug in Grand Rapids, MI Question and Answer Time! 10 Teamstudio Questions? contactus@teamstudio.com 877-228-6178 TLCC Questions? howardg@tlcc.com paul@tlcc.com 888-241-8522 or 561-953-0095 Howard Greenberg Courtney Carter @PaulSWithers @mmcgarel #XPages @TLCCLtd @Teamstudio @PaulDN Paul Della-Nebbia Paul WithersMike McGarel

×