SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Downloaden Sie, um offline zu lesen
© 2014 IBM Corporation
BP204 It’s Not Infernal:
Dante’s Nine Circles of
XPages Heaven
Paul Withers, Intec Systems Ltd
Mike McGarel, Czarnowski Display Services Inc.
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
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
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
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
First Circle: Limbo
6
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 source and new
XPages database for user interface
Add mobile interface
Add XPages for sidebar
7
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/
8
“Limbo” Property Values
Custom Language
<xp:text
value= “Database title is #{database.title}, database path
is #{javascript: @Subset(@DbName(), -1);}”>
</xp:text>
9
Demo
10
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
Second Circle: Lust
12
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 to want your app
13
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
14
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
15
16
Demo
17
Third Circle: Gluttony
18
Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Don’t Make Browsers Eat Too Much!
xsp.resource.aggregate=true
19
Temporary Gluttony – For Debugging!
xsp.client.resources.uncompressed=true
20
Fourth Circle: Greed
21
Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Avoid Greed on Server
22
Demo
23
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
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
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
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
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
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
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
Fifth Circle: Wrath
31 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
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
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
Demo
34
Sixth Circle: Heresy
35
Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
Java
“IBM always wanted us to use Java” – NO!
36
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
Demo
38
OpenNTF Domino API
39
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
Seventh Circle: Violence
41
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 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
“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
43
Eighth Circle: Fraud
44
Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
SessionScope
SessionScope is fraudulent
– Session only for current application
– Browser session, not user session
45
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
46
How To Add Your Own HTTPOnly Cookie
Serdar Basegmez XSnippet
http://openntf.org/XSnippets.nsf/snippet.xsp?id=extended-
cookie-implementation-for-httponly-cookies
47
Ninth Circle: Treachery
48
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 RAP Developers
– Download from Eclipse Marketplace
Atlassian SourceTree and Perforce P4Merge
SHOW 103 Wednesday 8am
http://www.slideshare.net/paulswithers1/beyond-domino-
designer
49
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
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
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
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)
53
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
54
 Access Connect Online to complete your session surveys using any:
– Web or mobile browser
– Connect Online kiosk onsite
55
Mike McGarel
Czarnowski Display Services Inc.
mcgarelgramming@gmail.com
http://www.bleedyellow.com/blogs/McGarelGramming/
@mmcgarel
Paul Withers
Intec Systems Ltd
pwithers@intec.co.uk
http://www.intec.co.uk/blog
@PaulSWithers
56
Acknowledgements and Disclaimers
© 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.com, IBM Collaboration Solutions and IBM Domino are trademarks or registered trademarks of International 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 with 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 registered or common law trademarks in other countries. A
current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml
Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates.
The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are 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 made 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 responsible 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 the 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 effect of, stating or implying that any activities undertaken by you
will result in any specific sales, revenue growth or other results.
Illustrations of the Inferno courtesy of Mihai Marius Mihu, http://www.flickr.com/photos/mihiamariusmihu/

Weitere ähnliche Inhalte

Was ist angesagt?

UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
Ulrich Krause
 
Maven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafeMaven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafe
Holasz Kati
 

Was ist angesagt? (20)

UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
 
AD201 - IBM Domino Application Development Today And Tomorrow
AD201 - IBM Domino Application Development Today And TomorrowAD201 - IBM Domino Application Development Today And Tomorrow
AD201 - IBM Domino Application Development Today And Tomorrow
 
Java and XPages
Java and XPagesJava and XPages
Java and XPages
 
MWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVCMWLUG 2015 - An Introduction to MVC
MWLUG 2015 - An Introduction to MVC
 
Automated ui-testing
Automated ui-testingAutomated ui-testing
Automated ui-testing
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
An Introduction to Maven Part 1
An Introduction to Maven Part 1An Introduction to Maven Part 1
An Introduction to Maven Part 1
 
Log management (elk) for spring boot application
Log management (elk) for spring boot applicationLog management (elk) for spring boot application
Log management (elk) for spring boot application
 
Maven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafeMaven Presentation - SureFire vs FailSafe
Maven Presentation - SureFire vs FailSafe
 
BDD using Cucumber JVM
BDD using Cucumber JVMBDD using Cucumber JVM
BDD using Cucumber JVM
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
Java Builds with Maven and Ant
Java Builds with Maven and AntJava Builds with Maven and Ant
Java Builds with Maven and Ant
 
Apache Maven In 10 Slides
Apache Maven In 10 SlidesApache Maven In 10 Slides
Apache Maven In 10 Slides
 
Jenkins
JenkinsJenkins
Jenkins
 
Using Maven 2
Using Maven 2Using Maven 2
Using Maven 2
 
Bootstrap4XPages
Bootstrap4XPagesBootstrap4XPages
Bootstrap4XPages
 
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
Get the best out of Bootstrap with Bootstrap4XPages - Engage 2014
 
Maven Overview
Maven OverviewMaven Overview
Maven Overview
 
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)Get the best out of Bootstrap with Bootstrap4XPages (AD202)
Get the best out of Bootstrap with Bootstrap4XPages (AD202)
 

Andere mochten auch

BP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @FormulaBP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @Formula
Kathy Brown
 

Andere mochten auch (6)

BP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven
BP204 It's Not Infernal: Dante's Nine Circles of XPages HeavenBP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven
BP204 It's Not Infernal: Dante's Nine Circles of XPages Heaven
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
 
Learning To Run - XPages for Lotus Notes Client Developers
Learning To Run - XPages for Lotus Notes Client DevelopersLearning To Run - XPages for Lotus Notes Client Developers
Learning To Run - XPages for Lotus Notes Client Developers
 
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
Ad108 - XPages in the IBM Lotus Notes Client - A Deep Dive!
 
BP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @FormulaBP208 Fabulous Feats with @Formula
BP208 Fabulous Feats with @Formula
 
What's New and Next in OpenNTF Domino API (ICON UK 2014)
What's New and Next in OpenNTF Domino API (ICON UK 2014)What's New and Next in OpenNTF Domino API (ICON UK 2014)
What's New and Next in OpenNTF Domino API (ICON UK 2014)
 

Ähnlich wie IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven

Aucd ppt
Aucd pptAucd ppt
Aucd ppt
icidemo
 
Using Web Simulations
Using Web SimulationsUsing Web Simulations
Using Web Simulations
foriocorp
 

Ähnlich wie IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven (20)

May 2014-webinar
May 2014-webinarMay 2014-webinar
May 2014-webinar
 
It's Not Infernal: Dante's Nine Circles of XPages Heaven
It's Not Infernal: Dante's Nine Circles of XPages HeavenIt's Not Infernal: Dante's Nine Circles of XPages Heaven
It's Not Infernal: Dante's Nine Circles of XPages Heaven
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 
Do Try This at Home! Extend IBM Connections using IBM Worklight
Do Try This at Home! Extend IBM Connections using IBM WorklightDo Try This at Home! Extend IBM Connections using IBM Worklight
Do Try This at Home! Extend IBM Connections using IBM Worklight
 
Progressive Web Apps / GDG DevFest - Season 2016
Progressive Web Apps / GDG DevFest - Season 2016Progressive Web Apps / GDG DevFest - Season 2016
Progressive Web Apps / GDG DevFest - Season 2016
 
Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)Techniques For A Modern Web UI (With Notes)
Techniques For A Modern Web UI (With Notes)
 
UXDev Summit Keynote : A real world story of Angular and Apache Unomi integra...
UXDev Summit Keynote : A real world story of Angular and Apache Unomi integra...UXDev Summit Keynote : A real world story of Angular and Apache Unomi integra...
UXDev Summit Keynote : A real world story of Angular and Apache Unomi integra...
 
Aucd ppt
Aucd pptAucd ppt
Aucd ppt
 
A report on mvc using the information
A report on mvc using the informationA report on mvc using the information
A report on mvc using the information
 
Professional web development with libraries
Professional web development with librariesProfessional web development with libraries
Professional web development with libraries
 
Microservice pitfalls
Microservice pitfalls Microservice pitfalls
Microservice pitfalls
 
Electron - Build cross platform desktop apps
Electron - Build cross platform desktop appsElectron - Build cross platform desktop apps
Electron - Build cross platform desktop apps
 
Using Web Simulations
Using Web SimulationsUsing Web Simulations
Using Web Simulations
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
ICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To AppICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To App
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 
micro-frontends-with-vuejs
micro-frontends-with-vuejsmicro-frontends-with-vuejs
micro-frontends-with-vuejs
 
Wireless Wednesdays: Part 2
Wireless Wednesdays: Part 2Wireless Wednesdays: Part 2
Wireless Wednesdays: Part 2
 
Ob Essay
Ob EssayOb Essay
Ob Essay
 
Proper Connections Development for Proper Domino Developers
Proper Connections Development for Proper Domino DevelopersProper Connections Development for Proper Domino Developers
Proper Connections Development for Proper Domino Developers
 

Mehr von Paul Withers

Mehr von Paul Withers (20)

Engage 2019: Introduction to Node-Red
Engage 2019: Introduction to Node-RedEngage 2019: Introduction to Node-Red
Engage 2019: Introduction to Node-Red
 
Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications
 
Engage 2019: AI What Is It Good For
Engage 2019: AI What Is It Good ForEngage 2019: AI What Is It Good For
Engage 2019: AI What Is It Good For
 
Social Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open SourceSocial Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open Source
 
ICONUK 2018 - Do You Wanna Build a Chatbot
ICONUK 2018 - Do You Wanna Build a ChatbotICONUK 2018 - Do You Wanna Build a Chatbot
ICONUK 2018 - Do You Wanna Build a Chatbot
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClass
 
IBM Think Session 3249 Watson Work Services Java SDK
IBM Think Session 3249 Watson Work Services Java SDKIBM Think Session 3249 Watson Work Services Java SDK
IBM Think Session 3249 Watson Work Services Java SDK
 
GraphQL 101
GraphQL 101GraphQL 101
GraphQL 101
 
GraphQL 101
GraphQL 101GraphQL 101
GraphQL 101
 
OpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentOpenNTF Domino API (ODA): Super-Charging Domino Development
OpenNTF Domino API (ODA): Super-Charging Domino Development
 
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XP...
 
ICON UK 2015 - ODA and CrossWorlds
ICON UK 2015 - ODA and CrossWorldsICON UK 2015 - ODA and CrossWorlds
ICON UK 2015 - ODA and CrossWorlds
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
 
OpenNTF Domino API - Overview Introduction
OpenNTF Domino API - Overview IntroductionOpenNTF Domino API - Overview Introduction
OpenNTF Domino API - Overview Introduction
 
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
From XPages Hero to OSGi Guru: Taking the Scary out of Building Extension Lib...
 
Engage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API SlidesEngage 2014 OpenNTF Domino API Slides
Engage 2014 OpenNTF Domino API Slides
 
Embracing the power of the notes client
Embracing the power of the notes clientEmbracing the power of the notes client
Embracing the power of the notes client
 
Beyond Domino Designer
Beyond Domino DesignerBeyond Domino Designer
Beyond Domino Designer
 
DanNotes 2013: OpenNTF Domino API
DanNotes 2013: OpenNTF Domino APIDanNotes 2013: OpenNTF Domino API
DanNotes 2013: OpenNTF Domino API
 
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPagesBP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Kürzlich hochgeladen (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

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

  • 1. © 2014 IBM Corporation BP204 It’s Not Infernal: Dante’s Nine Circles of XPages Heaven Paul Withers, Intec Systems Ltd Mike McGarel, Czarnowski Display Services Inc.
  • 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 – http://www.intec.co.uk/blog
  • 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 6 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  • 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 • http://www.runningnotes.net/index.php/2010/03/25/list- of-formula-not-supported-in-xpages/ 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
  • 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 12 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  • 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: http://dominoyesmaybe.blogspot.com/2012/09/principals-of- design-1-balance.html 14
  • 15. 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 15
  • 16. 16
  • 18. Third Circle: Gluttony 18 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  • 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, http://www.flickr.com/photos/mihaimariusmihu/
  • 22. Avoid Greed on Server 22
  • 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, http://www.flickr.com/photos/mihaimariusmihu/
  • 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
  • 35. Sixth Circle: Heresy 35 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  • 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
  • 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, http://www.flickr.com/photos/mihaimariusmihu/
  • 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 – http://openntf.org/XSnippets.nsf/snippet.xsp?id=standby- dialog-custom-control 43
  • 44. Eighth Circle: Fraud 44 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  • 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 –http://openntf.org/XSnippets.nsf/snippet.xsp?id=clear- session-whole-server does not work Cannot be intercepted 46
  • 47. How To Add Your Own HTTPOnly Cookie Serdar Basegmez XSnippet http://openntf.org/XSnippets.nsf/snippet.xsp?id=extended- cookie-implementation-for-httponly-cookies 47
  • 48. Ninth Circle: Treachery 48 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/
  • 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 http://www.slideshare.net/paulswithers1/beyond-domino- designer 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: 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) 53
  • 54. 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 54
  • 55.  Access Connect Online to complete your session surveys using any: – Web or mobile browser – Connect Online kiosk onsite 55 Mike McGarel Czarnowski Display Services Inc. mcgarelgramming@gmail.com http://www.bleedyellow.com/blogs/McGarelGramming/ @mmcgarel Paul Withers Intec Systems Ltd pwithers@intec.co.uk http://www.intec.co.uk/blog @PaulSWithers
  • 56. 56 Acknowledgements and Disclaimers © 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.com, IBM Collaboration Solutions and IBM Domino are trademarks or registered trademarks of International 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 with 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 registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are 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 made 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 responsible 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 the 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 effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. Illustrations of the Inferno courtesy of Mihai Marius Mihu, http://www.flickr.com/photos/mihiamariusmihu/