56
© 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.

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

Embed Size (px)

DESCRIPTION

Session slides for BP204 at IBM Connect 2014

Citation preview

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

© 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.

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

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

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

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

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

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

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

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

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

First Circle: Limbo

6 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/

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

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

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

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

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

“Limbo” Property Values

Custom Language

<xp:text

value= “Database title is #{database.title}, database path

is #{javascript: @Subset(@DbName(), -1);}”>

</xp:text>

9

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

Demo

10

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

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

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

Second Circle: Lust

12

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/

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

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

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

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

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

16

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

Demo

17

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

Third Circle: Gluttony

18 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/

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

Don’t Make Browsers Eat Too Much!

xsp.resource.aggregate=true

19

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

Temporary Gluttony – For Debugging!

xsp.client.resources.uncompressed=true

20

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

Fourth Circle: Greed

21 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/

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

Avoid Greed on Server

22

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

Demo

23

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

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

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

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

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

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

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

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 28: IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven

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 29: IBM Connect 2014 BP204: It's Not Infernal: Dante's Nine Circles of XPages Heaven

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

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

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

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

Fifth Circle: Wrath

31 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/

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

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)

32

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

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

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

Demo

34

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

Sixth Circle: Heresy

35 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/

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

Java

“IBM always wanted us to use Java” – NO!

36

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

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

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

Demo

38

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

OpenNTF Domino API

39

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

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

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

Seventh Circle: Violence

41 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/

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

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

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

Eighth Circle: Fraud

44

Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/

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

SessionScope

SessionScope is fraudulent

– Session only for current application

– Browser session, not user session

45

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

Ninth Circle: Treachery

48 Mihai Marius Mihu, http://www.flickr.com/photos/mihaimariusmihu/

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

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

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

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

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

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

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

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

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

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

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

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

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

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. [email protected] http://www.bleedyellow.com/blogs/McGarelGramming/ @mmcgarel

Paul Withers Intec Systems Ltd [email protected] http://www.intec.co.uk/blog @PaulSWithers

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

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/