View
332
Download
2
Category
Preview:
DESCRIPTION
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.
Citation preview
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 @TLCCLTD
@PaulSWithers @MikeMcGarel May 13, 2014
@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 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
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
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
• 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
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
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
5
• Save hundreds and even Thousands of Dollars on the most popular courses and packages
• Through June 13th
http://www.tlcc.com/springsale
Upcoming and Recorded Webinars
6
Webinar Schedule Bootstrap4XPages – June 17th
www.tlcc.com/xpages-webinar
View Previous Webinars (use url above)
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 Champion @PaulSWithers www.intec.co.uk/blog
Paul Withers
ICS Consultant at Intec Systems Ltd IBM Champion 2011-2014Co-Author XPages Extension LibraryOpenNTF DirectorContributor to OpenNTFBlogger 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
2
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
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
First Circle: Limbo
5Mihai 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
6
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
“Limbo” Property Values
Custom Language<xp:textvalue= “Database title is #{database.title}, database path is #{javascript: @Subset(@DbName(), -1);}”></xp:text>
8
Demo
9
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
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 to want your app
12
Looks MatterFirst 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
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
15
Demo
16
Third Circle: Gluttony
17Mihai 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…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
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
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
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
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
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
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
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 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 WebContent\WEB-INF\src)
31
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
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 variable name
Map to a Java object/method
So why not go straight to the source?
36
Demo
37
OpenNTF Domino API
38
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 Listeners39
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 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
“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
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 JavaScript–http://openntf.org/XSnippets.nsf/snippet.xsp?id=clear- session-whole-server does not work
Cannot be intercepted
45
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
Ninth Circle: Treachery
47Mihai 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
48
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 starsDante, Inferno, Canto 34 130-133
49
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
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
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
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 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 Withers Mike McGarel
Recommended