Your SlideShare is downloading. ×
BP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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


Published on

Do not abandon all hope, ye who enter here! 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 …

Do not abandon all hope, ye who enter here! 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. (Presented at IBM Connect 2014)

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. BP204 It’s Not Infernal: Dante’s Nine Circles of XPages Heaven Paul Withers, Intec Systems Ltd Mike McGarel, Czarnowski Display Services Inc. © 2014 IBM Corporation
  • 2. 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 –
  • 3. 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 3
  • 4. 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”) 4
  • 5. 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 5
  • 6. First Circle: Limbo Mihai Marius Mihu, 6
  • 7. 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 7
  • 8. 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 • 8
  • 9. “Limbo” Property Values  Custom Language <xp:text value= “Database title is #{database.title}, database path is #{javascript: @Subset(@DbName(), -1);}”> </xp:text> 9
  • 10. Demo 10
  • 11. 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! 11
  • 12. Second Circle: Lust Mihai Marius Mihu, 12
  • 13. 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 13
  • 14. Looks Matter  First impressions are key  Better looking “equals” works better  Steve McDonagh’s great series on design principles: 14
  • 15. Interface Makeovers  IBM’s OneUI (v3):  Extension Library / Dojo widgets – XPages Help Application  Twitter Bootstrap:  jQuery Plugins – jQuery UI: 15
  • 16. 16
  • 17. Demo 17
  • 18. Third Circle: Gluttony Mihai Marius Mihu, 18
  • 19. Don’t Make Browsers Eat Too Much!  xsp.resource.aggregate=true 19
  • 20. Temporary Gluttony – For Debugging!  xsp.client.resources.uncompressed=true 20
  • 21. Fourth Circle: Greed 21 Mihai Marius Mihu,
  • 22. Avoid Greed on Server 22
  • 23. Demo 23
  • 24. 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 24
  • 25. 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 25
  • 26. 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) 26
  • 27. 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 27
  • 28. 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 28
  • 29. 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 29
  • 30. 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 30
  • 31. Fifth Circle: Wrath 31 Mihai Marius Mihu,
  • 32. 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) 32
  • 33. 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 33
  • 34. Demo 34
  • 35. Sixth Circle: Heresy 35 Mihai Marius Mihu,
  • 36. Java  “IBM always wanted us to use Java” – NO! 36
  • 37. 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? 37
  • 38. Demo 38
  • 39. OpenNTF Domino API 39
  • 40. 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 40
  • 41. Seventh Circle: Violence 41 Mihai Marius Mihu,
  • 42. 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 42
  • 43. “Strong-Arming” All Events  Dojo Standby Control on OpenNTF – Hijacks partial refreshes – Adds standby message during long-running partial refreshes – 43
  • 44. Eighth Circle: Fraud Mihai Marius Mihu, 44
  • 45. SessionScope  SessionScope is fraudulent – Session only for current application – Browser session, not user session 45
  • 46. HTTPOnly Cookies  Since Domino 9.0 SessionID and DomAuthSessId are now HTTPOnly  Cannot be modified or removed via JavaScript – does not work  Cannot be intercepted 46
  • 47. How To Add Your Own HTTPOnly Cookie  Serdar Basegmez XSnippet  47
  • 48. Ninth Circle: Treachery Mihai Marius Mihu, 48
  • 49. 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  49
  • 50. 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 50
  • 51. 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” 51
  • 52. Other Sessions  SHOW103: Source Control 101: Implementing an End-to-End Solution  SHOW104: Practical Java  AD201: Domino Application Development: Today and Tomorrow  AD202: Get The Best Out of Bootstrap4XPages  AD207: Widgets, LiveText and Now OpenSocial  AD209: Making Your Team More Productive with IBM Domino Designer JMP101: Java for XPages Development  JMP106: Make Your Business Open and Social using IBM Notes Social Edition 9.0.1  BP207: Don’t Reinvent The Wheel – Re(use) Open Source Software from OpenNTF  GURU101: Gurupalooza 52
  • 53. IBM Resources  XPages.Info:  XPages Forum:  Notes/Domino Application Development Wiki:  Collaboration Today:  OpenNTF:  OpenNTF Snippets:  The “XPages trilogy”: – Mastering XPages, 2nd Edition due shortly (IBM Press) – XPages Extension Library (IBM Press) – XPages Portable Command Guide (IBM Press) 53
  • 54. Community Resources  Planet Lotus:  Notes in 9 (videos):  XPages cheat sheets:  YouAtNotes XPages wiki:  Stack Overflow: 54
  • 55.  Access Connect Online to complete your session surveys using any: – Web or mobile browser – Connect Online kiosk onsite Paul Withers Intec Systems Ltd @PaulSWithers 55 Mike McGarel Czarnowski Display Services Inc. @mmcgarel
  • 56. Acknowledgements and Disclaimers Av ailability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all cou ntries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They ar e provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were ma de to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsi ble for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have t he effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the ef fect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. © Copyright IBM Corporation 2014. All rights reserved.  U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.  IBM, the IBM logo,, IBM Collaboration Solutions and IBM Domino are trademarks or registered trademarks of Internation al Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information w ith a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be regi stered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at Illustrations of the Inferno courtesy of Mihai Marius Mihu, 56