SlideShare a Scribd company logo
1 of 28
Normalizing XPages Web Development
Using modern tooling and a separation of data and
design to create a new pattern of Domino web
development.
Abstract
The XPages runtime is versatile and extends beyond just the components that come out of the box. While
the core XPages/Domino platform has not changed materially since it’s initial release, the way this
platform is being used certainly is evolving rapidly. Learn the best ways to optimize your application
development by leveraging the latest and greatest frameworks, libraries, and tools that the web has to
offer. Many modern tools can plug into your Domino and XPages applications in a consistent fashion with
industry web development practices. Join us for some challenges to our preconceptions, options and
alternatives, and a couple of fancy demos.
Table of Contents
Demo - Goal: Make People Go Blind Through Sheer Awesomeness
Angular app
In NSF
Interface
Pulling Data from...
Back-end / RESTful API
xe:restService
JSON content
About Us
Eric McCormick
Web Developer @ The Boldt Company
with a passion for open source software, git,
well-structured Java applications, Node, build
automation, and other tooling to enhance a
developer’s workflow. In the front-end, I love
Angular and vue.js.
@edm00se
edm00se.io
github.com/edm00se
Shean McManus
Senior Consultant @ The PSC Group
Love front-end design and development,
modern web tech and learning new about new
ways to make great applications.
@sheanpmcmanus
spmcmanus.net
spmcmanusblog.wordpress.com
+ Skype, LinkedIn, Facebook, Google etc
Target Audience
● Developers of Domino/XPages apps with at least a basic understanding of:
○ Notes/Domino API
○ Domino SSJS, Java basics (can avoid Java, shouldn’t)
○ A desire to be more versatile
○ A desire to learn and grow!
Why this topic?
Traditional Notes client development is dead
Traditional Notes web development is dead
Self-contained xPages development is limiting
Integration, versatility, flexibility
Use the best tools for the job
Extend the life of legacy applications
Overview / Outline
● Re-normalizing / de-specializing XPages development
(note: not to demonize XPages controls, but highlight the versatility of the XPages runtime)
● Focus on the flexibility of XPages as a platform
○ It can support many modes of development
○ Use tools and languages common to other well known modern platforms.
Demos!
Examples to illustrate what we will be talking about in greater detail
Demo Technical Stack
Database Layer
Domino - NSF
Interface Layer
Domino Data Services, Rest Service Control
Presentation Layer
Angular
On Disk Project (ODP)
Source Control
Task Runner
Grunt/Gulp, Yeoman
Front-End Tooling
Node + npm packages
Alternative Editor
SublimeText, Atom, VS Code, WebStorm IDE
Advantages
○ Easier to split apart development concerns
○ An API can be consumed by either a client-side app (UI) or another system (properly credentialed, following
documented requests)
○ Use advanced front-end tooling
○ Working on an HTTPServlet only requires someone with Java experience and ability to follow the
lotus.domino.* JavaDoc; working on an Angular/Backbone/Ember/vue.js app only requires that dev to know
those tools
○ Your/developer skill set can be more diverse than “just Domino+XPages”
○ Front-end vs back-end developers can work on either side of the fence, respectively
○ Future-proofs your application (to a degree)
○ Future-proofs your development skill set
○ Developer ecosystem is far larger, yielding significantly more help/forums/information
○ Opening up your toolbox to non-domino tech also provides a far more extensive set of solution possibilities
and components/libraries
○ Breathes additional life into existing legacy applications without necessarily needing to rework the data model
and back end. Or, leverage the domino web server to surface a front end from an existing non-domino data
source.
Disadvantages
○ “New” to many “traditional” Notes/XPages developers (but that margin is closing down)
○ Small shops may need devs to be full-stack (I argue that we already are)
○ Necessitates training, research and sandbox time that may be difficult for some companies to
allow.
○ Needs to promote a future thinking IT strategy.
MVC Design Pattern
Developed for desktop software but now recommended for web frameworks
Clear separation of presentation and application logic
Model - data and business logic
View - presentation of data to the users in any supported format
Controller - receives requests and calls necessary resources to carry them out
Structured code is easier to maintain
MVC supported frameworks have this basic structure already prepared
REST
● REST
○ REpresentational State Transfer
○ Architecture style or design concept for data communication
○ Used in the building of web services
○ Uses HTTP and it’s GET,POST,PUT,DELETE methods
○ Is stateless (no client context stored on the server between requests)
● RESTful
○ A platform and language independent service is RESTful if it conforms to all of the REST
architectural properties.
RESTful Techniques to Use with Domino Data
Many paths can be taken
● LotusScript or Java agents
● view?readviewentries&outputformat=json
● XAgent
● Domino Data Service (exposes full, direct CRUD operations against your database for all your
accessible users; likely recommend one of the others!)
● xe:restService
○ via SSJS or Java (can transport anything, but focus is generally the ubiquitous JSON format)
○ xe:viewJsonService
○ CustomServiceBean
● HTTPServlet(/DesignerFacesServlet)
● OSGi plugin deployed servlet(s)
Domino Data Services (DDS)
A REST API that accesses databases on Domino servers. It is part of Domino Access Services.
The Domino Data Service receives requests and sends responses using HTTP and HTTPS protocols with body content
in JSON format.
The Domino Data Service allows you to obtain information on databases, views, folders, and documents. You can
update, add, and delete documents.
Source: IBM Domino Help
Enable on Server and Database
Access via URL: http://{{server}}/{{filename}}/api/data/collections/unid/{{view unid}}?open (for example)
No coding necessary for the REST service
Full CRUD operations are exposed to any Author access or above user, so take it into consideration!
XAgent
Similar to the traditional call of ?OpenAgent
Call an XPage that is set to not render
Run your server side code
More details:
Stephen Wissel: http://www.wissel.net/blog/d6plinks/shwl-7mgfbn
Chris Toohey: http://www.dominoguru.com/pages/domino_rest_xpages_part1.html
xe:restService
Standard control to drop onto a page
Use with many service types
SSJS or Java
Custom service bean
JSON feeds
xe:customRestService
When called, allows you to run server side code on the following REST calls:
DELETE - <xe:this.doDelete><![CDATA[#{javascript:print("doDelete")}]]></xe:this.doDelete>
GET - <xe:this.doGet><![CDATA[#{javascript:print("doGet!")}]]></xe:this.doGet>
PUT - <xe:this.doPut><![CDATA[#{javascript:print("doPut")}]]></xe:this.doPut>
POST - <xe:this.doPost><![CDATA[#{javascript:print("doPost")}]]></xe:this.doPost>
OR
Use a service bean (managed JAVA bean)
<xe:customRestService contentType="application/json"
serviceBean="com.my.CustomServiceBean"></xe:customRestService>
HTTP Servlet
Fairly close to what other JEE developers would make with a (true)
javax.servlet.http.HttpServlet
Technically, the implementation here is a DesignerFacesServlet
Gives us access to FacesContext
Which gives us access to user’s Session
All app code is contained within the NSF
You can (optionally) use something like the Google GSON JAR to handle:
Conversion of data (Java object) to JSON for response
HTTP Servlet Setup
Requires a little setup, but easy once established:
Edit of java.pol(icy) to grant permissions (ClassLoader related)
Addition of allowed methods PUT and DELETE (via Internet site or notes.ini value of
HTTPEnableMethods=PUT,DELETE)
Inclusion of the lwpd.domino.adapter.jar JAR in your project build path (it’s already there, just not
included by default)
A specific file (META-INF/services/com.ibm.xsp.adapter.servletFactory) to connect the NSF to your
endpoints
Endpoints are established in your ServletFactory
(com.ibm.designer.runtime.domino.adapter.IServletFactory)
OSGi Plugin
The “JEE way”, it requires a working ability to create and deploy an OSGi plugin /
update site.
Lots of people have shown off the working pieces of this process
Toby Samples has a 4-part JAX-RS series, as he calls it THE way to do REST on Domino
Paul Withers, as part of his From XPages to Web App series, including Vaadin and CrossWorlds
Jesse Gallagher, who goes into more of the related topics, in his “That Java Thing” series
Java skills are far more portable beyond any single platform, so a little learning
can go a long way to benefit your apps today and those of tomorrow
Intro to Front End MVC Frameworks
What is a framework?
An end-to-end solution that controls the coordination and sequencing of application activities.
Delivery of assets
Local copies
CDN - Content Delivery Network
Popular Front-End (MV*) Frameworks
● Angular
○ Open-source, maintained by Google
○ Supports MVC and MVVM architectures
○ Dynamic page content through two-way data binding
■ automatic synchronization of data between model and view components
○ Examples: YouTube on PS3, MSNBC.com, Plunker, Weather Channel
● Backbone
○ RESTful JSON interface
○ MVP architecture
○ Lightweight - only dependency is underscore.js
○ Examples: Airbnb, USA Today, Hulu, Pinterest, Digg
● Ember
○ Open-source, MVCs, two-way data binding
○ Discourse, Vine, Live Nation, Nordstrom, Chipotle
● Knockout, KendoUI and Others
Task Runners: Overview
Provide automated tasks, consistently, with every build. Tasks require some minimal configuration for
automated gain in the realm of:
Optimized assets, with tasks/sub-tasks of:
Consistency between developers (enforced JS code formatting)
Builds as trivial operations (for on-demand, or deployment via CI/CD)
Can add pre-processing to a development workflow with minimal effort
TypeScript or CoffeeScript
SASS or LESS
Tests as standard (or test-driven development)
Task Runners: Our Demo
Our optimized demo incorporates:
An AngularJS + Bootstrap-ified front-end app
An application scaffolded out via Yeoman
and generator-angular (installed from
npm)
Dependent front-end libraries
managed/installed via Bower (our demo
includes this install as part of `npm install`)
Configure once, use always… automated!
Build optimization of CSS, JS, and HTML
partials
JS Linting (formatting, error checking)
Image optimization
Reduction of network calls for page load:
1x vendor CSS file
1x vendor JS file
1x app CSS
1x app JS
HTML partials templated into the app JS
Installing Our Demo App
Our optimized demo incorporates:
Clone the repository `git clone https://edm00se@bitbucket.org/edm00se/beer-debt-mk2.git`
Install dependencies from npm `npm install` + `bower install`
Perform the build `grunt`
Import the On Disk Project (ODP) in Designer’s Package Explorer (or Navigator)
Right-click the ODP and Associate with New/Existing NSF
Done!*
Task Runners: Our Demo App Workflow
Steps for a normal workflow with our setup:
Create new back-end code, if needed (new service, RESTful endpoint, backing logic change)
Create/Update front-end code/logic in editor of choice (SublimeText, WebStorm, Atom, VS Code, etc.)
Add a route with html partial, js controller, and js test script all added automagically w/ generator-angular (plugs
into existing app and routing definition, etc.) by `yo angular:route <myNewRouteName>`
Perform new build to update the ODP’s copy of your front-end app, via `grunt`
Wait for DDE to import and sync the changes to your NSF
Rejoice!
* Alternatively, you can use the command `grunt serve` to keep a watch task on your source files,
triggering a new build automatically when it detects a file save event (which will, with DDE preferences set
Summary
Separating Domino data from the design allows developers to make use of MVC frameworks for the
client side development.
● REST architecture is a modern standard for data interfaces between client and server
● Modern tooling allows for automating application builds, deployments and testing.
● Domino is a versatile web development platform capable of supporting a wide range of development
patterns, tools and techniques.

More Related Content

What's hot

Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia
 
Joe Staner Zend Con 2008
Joe Staner Zend Con 2008Joe Staner Zend Con 2008
Joe Staner Zend Con 2008ZendCon
 
Web Application Solutions
Web Application SolutionsWeb Application Solutions
Web Application Solutionsmarvin256
 
Lessons learned from a large scale OSGii web app - P Bakker & J de Vreede
Lessons learned from a large scale OSGii web app - P Bakker & J de VreedeLessons learned from a large scale OSGii web app - P Bakker & J de Vreede
Lessons learned from a large scale OSGii web app - P Bakker & J de Vreedemfrancis
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersSascha Corti
 
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 DevelopmentPaul Withers
 
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...Howard Greenberg
 
Just another Wordpress weblog, but more cloudy
Just another Wordpress weblog, but more cloudyJust another Wordpress weblog, but more cloudy
Just another Wordpress weblog, but more cloudyMaarten Balliauw
 
Dotnet Basics Presentation
Dotnet Basics PresentationDotnet Basics Presentation
Dotnet Basics PresentationSudhakar Sharma
 
ASP Dot Net Software Development in India - iFour Technolab
ASP Dot Net Software Development in India - iFour TechnolabASP Dot Net Software Development in India - iFour Technolab
ASP Dot Net Software Development in India - iFour TechnolabiFour Technolab Pvt. Ltd.
 
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...Paul Withers
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN StackRob Davarnia
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5Malam Team
 
Wordcamp Thessaloniki 2011 The Nextweb
Wordcamp Thessaloniki 2011 The NextwebWordcamp Thessaloniki 2011 The Nextweb
Wordcamp Thessaloniki 2011 The NextwebGeorge Kanellopoulos
 

What's hot (20)

Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
 
Explore asp.net core 3.0 features
Explore asp.net core 3.0 featuresExplore asp.net core 3.0 features
Explore asp.net core 3.0 features
 
Joe Staner Zend Con 2008
Joe Staner Zend Con 2008Joe Staner Zend Con 2008
Joe Staner Zend Con 2008
 
PHP on Windows
PHP on WindowsPHP on Windows
PHP on Windows
 
Transforming the web into a real application platform
Transforming the web into a real application platformTransforming the web into a real application platform
Transforming the web into a real application platform
 
Web Application Solutions
Web Application SolutionsWeb Application Solutions
Web Application Solutions
 
Lessons learned from a large scale OSGii web app - P Bakker & J de Vreede
Lessons learned from a large scale OSGii web app - P Bakker & J de VreedeLessons learned from a large scale OSGii web app - P Bakker & J de Vreede
Lessons learned from a large scale OSGii web app - P Bakker & J de Vreede
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
 
TRWResume-10-2016
TRWResume-10-2016TRWResume-10-2016
TRWResume-10-2016
 
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
 
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
October OpenNTF Webinar - What we like about Domino/Notes 12, recommended new...
 
Just another Wordpress weblog, but more cloudy
Just another Wordpress weblog, but more cloudyJust another Wordpress weblog, but more cloudy
Just another Wordpress weblog, but more cloudy
 
Dotnet Basics Presentation
Dotnet Basics PresentationDotnet Basics Presentation
Dotnet Basics Presentation
 
ASP Dot Net Software Development in India - iFour Technolab
ASP Dot Net Software Development in India - iFour TechnolabASP Dot Net Software Development in India - iFour Technolab
ASP Dot Net Software Development in India - iFour Technolab
 
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...
 
My view on XPages
My view on XPagesMy view on XPages
My view on XPages
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
 
What's New in .Net 4.5
What's New in .Net 4.5What's New in .Net 4.5
What's New in .Net 4.5
 
sidje
sidjesidje
sidje
 
Wordcamp Thessaloniki 2011 The Nextweb
Wordcamp Thessaloniki 2011 The NextwebWordcamp Thessaloniki 2011 The Nextweb
Wordcamp Thessaloniki 2011 The Nextweb
 

Viewers also liked

Wearable Technology: 2014 Top Trends, Stats, and Predictions
Wearable Technology: 2014 Top Trends, Stats, and PredictionsWearable Technology: 2014 Top Trends, Stats, and Predictions
Wearable Technology: 2014 Top Trends, Stats, and PredictionsHaiku Deck
 
Social Media & Influence in B2B Marketing
Social Media & Influence in B2B Marketing Social Media & Influence in B2B Marketing
Social Media & Influence in B2B Marketing Ryan Boyles
 
Aprobar el examen de google analytics ruben velasco
Aprobar el examen de google analytics ruben velascoAprobar el examen de google analytics ruben velasco
Aprobar el examen de google analytics ruben velascoRubén Velasco García
 
The Net -Worth Of Networking
The Net -Worth Of NetworkingThe Net -Worth Of Networking
The Net -Worth Of Networkingtonygates44
 
IBM Impact 2012 Conference Week at a Glance
IBM Impact 2012 Conference Week at a GlanceIBM Impact 2012 Conference Week at a Glance
IBM Impact 2012 Conference Week at a GlanceRyan Boyles
 
Golden Gekko, 10 burning questions on privacy
Golden Gekko, 10 burning questions on privacyGolden Gekko, 10 burning questions on privacy
Golden Gekko, 10 burning questions on privacyDMI
 
XPLANE | Team Revolution Introduction
XPLANE | Team Revolution IntroductionXPLANE | Team Revolution Introduction
XPLANE | Team Revolution Introductioncroettger
 
Russomanno larga na frente na disputa pela Prefeitura de SP
Russomanno larga na frente na disputa pela Prefeitura de SPRussomanno larga na frente na disputa pela Prefeitura de SP
Russomanno larga na frente na disputa pela Prefeitura de SPCarlos Eduardo
 
Social Shopping Is On the Rise.
Social Shopping Is On the Rise.Social Shopping Is On the Rise.
Social Shopping Is On the Rise.SurveyMonkey
 
Mattermark - Fortune Brainstorm Tech 2015
Mattermark - Fortune Brainstorm Tech 2015Mattermark - Fortune Brainstorm Tech 2015
Mattermark - Fortune Brainstorm Tech 2015Mattermark
 
Mattermark Startup Investor Benchmarking Analysis - November 2013
Mattermark Startup Investor Benchmarking Analysis - November 2013Mattermark Startup Investor Benchmarking Analysis - November 2013
Mattermark Startup Investor Benchmarking Analysis - November 2013Mattermark
 
What is a #TriangleTweetup? – A Community History Lesson
What is a #TriangleTweetup? – A Community History LessonWhat is a #TriangleTweetup? – A Community History Lesson
What is a #TriangleTweetup? – A Community History LessonRyan Boyles
 
Impact 2013 Business Partner Summit Agenda at a Glance
Impact 2013 Business Partner Summit Agenda at a GlanceImpact 2013 Business Partner Summit Agenda at a Glance
Impact 2013 Business Partner Summit Agenda at a GlanceRyan Boyles
 
Does Your Content Take the High Road? The 3 E's vs. The 3 C's of Content Mark...
Does Your Content Take the High Road? The 3 E's vs. The 3 C's of Content Mark...Does Your Content Take the High Road? The 3 E's vs. The 3 C's of Content Mark...
Does Your Content Take the High Road? The 3 E's vs. The 3 C's of Content Mark...David Horne
 
How to Preserve Your Wealth for Generations in California
How to Preserve Your Wealth for Generations in CaliforniaHow to Preserve Your Wealth for Generations in California
How to Preserve Your Wealth for Generations in CaliforniaScott Schomer
 
IBMers at SxSW 2013
IBMers at SxSW 2013IBMers at SxSW 2013
IBMers at SxSW 2013Ryan Boyles
 

Viewers also liked (17)

Wearable Technology: 2014 Top Trends, Stats, and Predictions
Wearable Technology: 2014 Top Trends, Stats, and PredictionsWearable Technology: 2014 Top Trends, Stats, and Predictions
Wearable Technology: 2014 Top Trends, Stats, and Predictions
 
Social Media & Influence in B2B Marketing
Social Media & Influence in B2B Marketing Social Media & Influence in B2B Marketing
Social Media & Influence in B2B Marketing
 
Aprobar el examen de google analytics ruben velasco
Aprobar el examen de google analytics ruben velascoAprobar el examen de google analytics ruben velasco
Aprobar el examen de google analytics ruben velasco
 
The Small And Big Of It!
The Small And Big Of It!The Small And Big Of It!
The Small And Big Of It!
 
The Net -Worth Of Networking
The Net -Worth Of NetworkingThe Net -Worth Of Networking
The Net -Worth Of Networking
 
IBM Impact 2012 Conference Week at a Glance
IBM Impact 2012 Conference Week at a GlanceIBM Impact 2012 Conference Week at a Glance
IBM Impact 2012 Conference Week at a Glance
 
Golden Gekko, 10 burning questions on privacy
Golden Gekko, 10 burning questions on privacyGolden Gekko, 10 burning questions on privacy
Golden Gekko, 10 burning questions on privacy
 
XPLANE | Team Revolution Introduction
XPLANE | Team Revolution IntroductionXPLANE | Team Revolution Introduction
XPLANE | Team Revolution Introduction
 
Russomanno larga na frente na disputa pela Prefeitura de SP
Russomanno larga na frente na disputa pela Prefeitura de SPRussomanno larga na frente na disputa pela Prefeitura de SP
Russomanno larga na frente na disputa pela Prefeitura de SP
 
Social Shopping Is On the Rise.
Social Shopping Is On the Rise.Social Shopping Is On the Rise.
Social Shopping Is On the Rise.
 
Mattermark - Fortune Brainstorm Tech 2015
Mattermark - Fortune Brainstorm Tech 2015Mattermark - Fortune Brainstorm Tech 2015
Mattermark - Fortune Brainstorm Tech 2015
 
Mattermark Startup Investor Benchmarking Analysis - November 2013
Mattermark Startup Investor Benchmarking Analysis - November 2013Mattermark Startup Investor Benchmarking Analysis - November 2013
Mattermark Startup Investor Benchmarking Analysis - November 2013
 
What is a #TriangleTweetup? – A Community History Lesson
What is a #TriangleTweetup? – A Community History LessonWhat is a #TriangleTweetup? – A Community History Lesson
What is a #TriangleTweetup? – A Community History Lesson
 
Impact 2013 Business Partner Summit Agenda at a Glance
Impact 2013 Business Partner Summit Agenda at a GlanceImpact 2013 Business Partner Summit Agenda at a Glance
Impact 2013 Business Partner Summit Agenda at a Glance
 
Does Your Content Take the High Road? The 3 E's vs. The 3 C's of Content Mark...
Does Your Content Take the High Road? The 3 E's vs. The 3 C's of Content Mark...Does Your Content Take the High Road? The 3 E's vs. The 3 C's of Content Mark...
Does Your Content Take the High Road? The 3 E's vs. The 3 C's of Content Mark...
 
How to Preserve Your Wealth for Generations in California
How to Preserve Your Wealth for Generations in CaliforniaHow to Preserve Your Wealth for Generations in California
How to Preserve Your Wealth for Generations in California
 
IBMers at SxSW 2013
IBMers at SxSW 2013IBMers at SxSW 2013
IBMers at SxSW 2013
 

Similar to Normalizing x pages web development

Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamBrian Benz
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdfNode.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdflubnayasminsebl
 
Would Mr. Spok choose Open Source
Would Mr. Spok choose Open SourceWould Mr. Spok choose Open Source
Would Mr. Spok choose Open Sourcevlcinsky
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...Mark Roden
 
Mix Tech Ed Update No Video
Mix Tech Ed Update No VideoMix Tech Ed Update No Video
Mix Tech Ed Update No VideoAllyWick
 
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx75waytechnologies
 
Node.js Web Development .pdf
Node.js Web Development .pdfNode.js Web Development .pdf
Node.js Web Development .pdfAbanti Aazmin
 
Symfony - A Bird's Eye View
Symfony - A Bird's Eye ViewSymfony - A Bird's Eye View
Symfony - A Bird's Eye Viewcsushil
 
Full Stack Web Development: Vision, Challenges and Future Scope
Full Stack Web Development: Vision, Challenges and Future ScopeFull Stack Web Development: Vision, Challenges and Future Scope
Full Stack Web Development: Vision, Challenges and Future ScopeIRJET Journal
 
Navigating the Hype and Realities of Web Development Frameworks
Navigating the Hype and Realities of Web Development FrameworksNavigating the Hype and Realities of Web Development Frameworks
Navigating the Hype and Realities of Web Development FrameworksSeasiaInfotech2
 
Jesy George_CV_LATEST
Jesy George_CV_LATESTJesy George_CV_LATEST
Jesy George_CV_LATESTJesy George
 
NET Event - Migrating WinForm
NET Event - Migrating WinFormNET Event - Migrating WinForm
NET Event - Migrating WinFormRaffaele Garofalo
 
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem. SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem. Kushan Lahiru Perera
 

Similar to Normalizing x pages web development (20)

Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure team
 
Resume
ResumeResume
Resume
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdfNode.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
 
Would Mr. Spok choose Open Source
Would Mr. Spok choose Open SourceWould Mr. Spok choose Open Source
Would Mr. Spok choose Open Source
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 
Sudhir srivastava profile
Sudhir srivastava profileSudhir srivastava profile
Sudhir srivastava profile
 
MERN PPT
MERN PPTMERN PPT
MERN PPT
 
Mix Tech Ed Update No Video
Mix Tech Ed Update No VideoMix Tech Ed Update No Video
Mix Tech Ed Update No Video
 
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
 
Node.js Web Development .pdf
Node.js Web Development .pdfNode.js Web Development .pdf
Node.js Web Development .pdf
 
PPT - A slice of cake php
PPT - A slice of cake phpPPT - A slice of cake php
PPT - A slice of cake php
 
Symfony - A Bird's Eye View
Symfony - A Bird's Eye ViewSymfony - A Bird's Eye View
Symfony - A Bird's Eye View
 
Getting Started with ASP.NET vNext
Getting Started with ASP.NET vNextGetting Started with ASP.NET vNext
Getting Started with ASP.NET vNext
 
Full Stack Web Development: Vision, Challenges and Future Scope
Full Stack Web Development: Vision, Challenges and Future ScopeFull Stack Web Development: Vision, Challenges and Future Scope
Full Stack Web Development: Vision, Challenges and Future Scope
 
Navigating the Hype and Realities of Web Development Frameworks
Navigating the Hype and Realities of Web Development FrameworksNavigating the Hype and Realities of Web Development Frameworks
Navigating the Hype and Realities of Web Development Frameworks
 
Jesy George_CV_LATEST
Jesy George_CV_LATESTJesy George_CV_LATEST
Jesy George_CV_LATEST
 
NET Event - Migrating WinForm
NET Event - Migrating WinFormNET Event - Migrating WinForm
NET Event - Migrating WinForm
 
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem. SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
 
Resume
ResumeResume
Resume
 

Recently uploaded

OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Anthony Dahanne
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencessuser9e7c64
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 

Recently uploaded (20)

OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024Not a Kubernetes fan? The state of PaaS in 2024
Not a Kubernetes fan? The state of PaaS in 2024
 
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Patterns for automating API delivery. API conference
Patterns for automating API delivery. API conferencePatterns for automating API delivery. API conference
Patterns for automating API delivery. API conference
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 

Normalizing x pages web development

  • 1. Normalizing XPages Web Development Using modern tooling and a separation of data and design to create a new pattern of Domino web development.
  • 2. Abstract The XPages runtime is versatile and extends beyond just the components that come out of the box. While the core XPages/Domino platform has not changed materially since it’s initial release, the way this platform is being used certainly is evolving rapidly. Learn the best ways to optimize your application development by leveraging the latest and greatest frameworks, libraries, and tools that the web has to offer. Many modern tools can plug into your Domino and XPages applications in a consistent fashion with industry web development practices. Join us for some challenges to our preconceptions, options and alternatives, and a couple of fancy demos.
  • 3. Table of Contents Demo - Goal: Make People Go Blind Through Sheer Awesomeness Angular app In NSF Interface Pulling Data from... Back-end / RESTful API xe:restService JSON content
  • 4. About Us Eric McCormick Web Developer @ The Boldt Company with a passion for open source software, git, well-structured Java applications, Node, build automation, and other tooling to enhance a developer’s workflow. In the front-end, I love Angular and vue.js. @edm00se edm00se.io github.com/edm00se Shean McManus Senior Consultant @ The PSC Group Love front-end design and development, modern web tech and learning new about new ways to make great applications. @sheanpmcmanus spmcmanus.net spmcmanusblog.wordpress.com + Skype, LinkedIn, Facebook, Google etc
  • 5. Target Audience ● Developers of Domino/XPages apps with at least a basic understanding of: ○ Notes/Domino API ○ Domino SSJS, Java basics (can avoid Java, shouldn’t) ○ A desire to be more versatile ○ A desire to learn and grow!
  • 6. Why this topic? Traditional Notes client development is dead Traditional Notes web development is dead Self-contained xPages development is limiting Integration, versatility, flexibility Use the best tools for the job Extend the life of legacy applications
  • 7. Overview / Outline ● Re-normalizing / de-specializing XPages development (note: not to demonize XPages controls, but highlight the versatility of the XPages runtime) ● Focus on the flexibility of XPages as a platform ○ It can support many modes of development ○ Use tools and languages common to other well known modern platforms.
  • 8. Demos! Examples to illustrate what we will be talking about in greater detail
  • 9. Demo Technical Stack Database Layer Domino - NSF Interface Layer Domino Data Services, Rest Service Control Presentation Layer Angular On Disk Project (ODP) Source Control Task Runner Grunt/Gulp, Yeoman Front-End Tooling Node + npm packages Alternative Editor SublimeText, Atom, VS Code, WebStorm IDE
  • 10. Advantages ○ Easier to split apart development concerns ○ An API can be consumed by either a client-side app (UI) or another system (properly credentialed, following documented requests) ○ Use advanced front-end tooling ○ Working on an HTTPServlet only requires someone with Java experience and ability to follow the lotus.domino.* JavaDoc; working on an Angular/Backbone/Ember/vue.js app only requires that dev to know those tools ○ Your/developer skill set can be more diverse than “just Domino+XPages” ○ Front-end vs back-end developers can work on either side of the fence, respectively ○ Future-proofs your application (to a degree) ○ Future-proofs your development skill set ○ Developer ecosystem is far larger, yielding significantly more help/forums/information ○ Opening up your toolbox to non-domino tech also provides a far more extensive set of solution possibilities and components/libraries ○ Breathes additional life into existing legacy applications without necessarily needing to rework the data model and back end. Or, leverage the domino web server to surface a front end from an existing non-domino data source.
  • 11. Disadvantages ○ “New” to many “traditional” Notes/XPages developers (but that margin is closing down) ○ Small shops may need devs to be full-stack (I argue that we already are) ○ Necessitates training, research and sandbox time that may be difficult for some companies to allow. ○ Needs to promote a future thinking IT strategy.
  • 12. MVC Design Pattern Developed for desktop software but now recommended for web frameworks Clear separation of presentation and application logic Model - data and business logic View - presentation of data to the users in any supported format Controller - receives requests and calls necessary resources to carry them out Structured code is easier to maintain MVC supported frameworks have this basic structure already prepared
  • 13. REST ● REST ○ REpresentational State Transfer ○ Architecture style or design concept for data communication ○ Used in the building of web services ○ Uses HTTP and it’s GET,POST,PUT,DELETE methods ○ Is stateless (no client context stored on the server between requests) ● RESTful ○ A platform and language independent service is RESTful if it conforms to all of the REST architectural properties.
  • 14. RESTful Techniques to Use with Domino Data Many paths can be taken ● LotusScript or Java agents ● view?readviewentries&outputformat=json ● XAgent ● Domino Data Service (exposes full, direct CRUD operations against your database for all your accessible users; likely recommend one of the others!) ● xe:restService ○ via SSJS or Java (can transport anything, but focus is generally the ubiquitous JSON format) ○ xe:viewJsonService ○ CustomServiceBean ● HTTPServlet(/DesignerFacesServlet) ● OSGi plugin deployed servlet(s)
  • 15. Domino Data Services (DDS) A REST API that accesses databases on Domino servers. It is part of Domino Access Services. The Domino Data Service receives requests and sends responses using HTTP and HTTPS protocols with body content in JSON format. The Domino Data Service allows you to obtain information on databases, views, folders, and documents. You can update, add, and delete documents. Source: IBM Domino Help Enable on Server and Database Access via URL: http://{{server}}/{{filename}}/api/data/collections/unid/{{view unid}}?open (for example) No coding necessary for the REST service Full CRUD operations are exposed to any Author access or above user, so take it into consideration!
  • 16. XAgent Similar to the traditional call of ?OpenAgent Call an XPage that is set to not render Run your server side code More details: Stephen Wissel: http://www.wissel.net/blog/d6plinks/shwl-7mgfbn Chris Toohey: http://www.dominoguru.com/pages/domino_rest_xpages_part1.html
  • 17. xe:restService Standard control to drop onto a page Use with many service types SSJS or Java Custom service bean JSON feeds
  • 18. xe:customRestService When called, allows you to run server side code on the following REST calls: DELETE - <xe:this.doDelete><![CDATA[#{javascript:print("doDelete")}]]></xe:this.doDelete> GET - <xe:this.doGet><![CDATA[#{javascript:print("doGet!")}]]></xe:this.doGet> PUT - <xe:this.doPut><![CDATA[#{javascript:print("doPut")}]]></xe:this.doPut> POST - <xe:this.doPost><![CDATA[#{javascript:print("doPost")}]]></xe:this.doPost> OR Use a service bean (managed JAVA bean) <xe:customRestService contentType="application/json" serviceBean="com.my.CustomServiceBean"></xe:customRestService>
  • 19. HTTP Servlet Fairly close to what other JEE developers would make with a (true) javax.servlet.http.HttpServlet Technically, the implementation here is a DesignerFacesServlet Gives us access to FacesContext Which gives us access to user’s Session All app code is contained within the NSF You can (optionally) use something like the Google GSON JAR to handle: Conversion of data (Java object) to JSON for response
  • 20. HTTP Servlet Setup Requires a little setup, but easy once established: Edit of java.pol(icy) to grant permissions (ClassLoader related) Addition of allowed methods PUT and DELETE (via Internet site or notes.ini value of HTTPEnableMethods=PUT,DELETE) Inclusion of the lwpd.domino.adapter.jar JAR in your project build path (it’s already there, just not included by default) A specific file (META-INF/services/com.ibm.xsp.adapter.servletFactory) to connect the NSF to your endpoints Endpoints are established in your ServletFactory (com.ibm.designer.runtime.domino.adapter.IServletFactory)
  • 21. OSGi Plugin The “JEE way”, it requires a working ability to create and deploy an OSGi plugin / update site. Lots of people have shown off the working pieces of this process Toby Samples has a 4-part JAX-RS series, as he calls it THE way to do REST on Domino Paul Withers, as part of his From XPages to Web App series, including Vaadin and CrossWorlds Jesse Gallagher, who goes into more of the related topics, in his “That Java Thing” series Java skills are far more portable beyond any single platform, so a little learning can go a long way to benefit your apps today and those of tomorrow
  • 22. Intro to Front End MVC Frameworks What is a framework? An end-to-end solution that controls the coordination and sequencing of application activities. Delivery of assets Local copies CDN - Content Delivery Network
  • 23. Popular Front-End (MV*) Frameworks ● Angular ○ Open-source, maintained by Google ○ Supports MVC and MVVM architectures ○ Dynamic page content through two-way data binding ■ automatic synchronization of data between model and view components ○ Examples: YouTube on PS3, MSNBC.com, Plunker, Weather Channel ● Backbone ○ RESTful JSON interface ○ MVP architecture ○ Lightweight - only dependency is underscore.js ○ Examples: Airbnb, USA Today, Hulu, Pinterest, Digg ● Ember ○ Open-source, MVCs, two-way data binding ○ Discourse, Vine, Live Nation, Nordstrom, Chipotle ● Knockout, KendoUI and Others
  • 24. Task Runners: Overview Provide automated tasks, consistently, with every build. Tasks require some minimal configuration for automated gain in the realm of: Optimized assets, with tasks/sub-tasks of: Consistency between developers (enforced JS code formatting) Builds as trivial operations (for on-demand, or deployment via CI/CD) Can add pre-processing to a development workflow with minimal effort TypeScript or CoffeeScript SASS or LESS Tests as standard (or test-driven development)
  • 25. Task Runners: Our Demo Our optimized demo incorporates: An AngularJS + Bootstrap-ified front-end app An application scaffolded out via Yeoman and generator-angular (installed from npm) Dependent front-end libraries managed/installed via Bower (our demo includes this install as part of `npm install`) Configure once, use always… automated! Build optimization of CSS, JS, and HTML partials JS Linting (formatting, error checking) Image optimization Reduction of network calls for page load: 1x vendor CSS file 1x vendor JS file 1x app CSS 1x app JS HTML partials templated into the app JS
  • 26. Installing Our Demo App Our optimized demo incorporates: Clone the repository `git clone https://edm00se@bitbucket.org/edm00se/beer-debt-mk2.git` Install dependencies from npm `npm install` + `bower install` Perform the build `grunt` Import the On Disk Project (ODP) in Designer’s Package Explorer (or Navigator) Right-click the ODP and Associate with New/Existing NSF Done!*
  • 27. Task Runners: Our Demo App Workflow Steps for a normal workflow with our setup: Create new back-end code, if needed (new service, RESTful endpoint, backing logic change) Create/Update front-end code/logic in editor of choice (SublimeText, WebStorm, Atom, VS Code, etc.) Add a route with html partial, js controller, and js test script all added automagically w/ generator-angular (plugs into existing app and routing definition, etc.) by `yo angular:route <myNewRouteName>` Perform new build to update the ODP’s copy of your front-end app, via `grunt` Wait for DDE to import and sync the changes to your NSF Rejoice! * Alternatively, you can use the command `grunt serve` to keep a watch task on your source files, triggering a new build automatically when it detects a file save event (which will, with DDE preferences set
  • 28. Summary Separating Domino data from the design allows developers to make use of MVC frameworks for the client side development. ● REST architecture is a modern standard for data interfaces between client and server ● Modern tooling allows for automating application builds, deployments and testing. ● Domino is a versatile web development platform capable of supporting a wide range of development patterns, tools and techniques.

Editor's Notes

  1. Key take-aways: - flexibility - modern implementations - relevance
  2. http://stackoverflow.com/questions/36062424/basic-rest-service-for-my-xpage-application/36064707#36064707