SlideShare a Scribd company logo
Rapid UI Development
with Aikau
Dave Draper
Senior Software Engineer, Alfresco
Introduction
Aikau Basics
• Internally developed UI framework
• Designed for re-usability, customizability and
accessibility
• Initially part of Share, now an external GitHub project
• Used for:
+ Share header
+ Faceted search and faceted search management
+ Sites management
+ Custom Model Management (5.1 and 5.0 module)
+ Parts of Record Management
• Best unit test code-coverage of any Alfresco project
Hundreds of Modules
• 25 different form controls
• 20 different layout containers
• 20 different menu controls
• 44 different property renderers
• 8 variations of lists
+ 7 list views
+ 10 list view layout containers
• Document previewing
• Keyboard accessible drag-and-drop framework
• 30 different services
Processes
• Small Agile team
+ Supporting internal product feature development
• Public GitHub repository
• Use “GitFlow” process
+ Every Pull Request is code reviewed
• One week sprints
• Weekly backwards compatible releases
• Zero technical debt
+ Bugs prioritized over features
• Automated unit testing for regressions
+ Unit tests added for all new features
+ Unit tests add for all new bugs
Fast Turnaround
• Features and bugs not added mid-sprint
• Maximum wait of 2 weeks to turnaround a
bug or feature request
Sprint N+1
Bug Raised Added to Sprint Fix Delivered
Sprint N
One Week
Creation
Page Creation Basics
• An Aikau page is defined by a single WebScript
+ “Legacy” Share pages are defined by Surf Pages,
Templates, Regions, Components and WebScripts
• Pages are mapped using “URI Templates”
• Four templates are available out-of-the-box
+ “dp” (dynamic-page)
+ “hdp” (hybrid-dynamic-page)
+ “rp” (remote-page)
+ “hrp” (hybrid-remote-page)
• Recommended to use “dp”
• Custom templates can be defined
Example URL
Declarative UI
Decoupled Model
• Widgets decoupled from each other by
pub/sub
• Widgets decoupled from data via Services
Standalone Clients
Easy Client Creation
• Maven Archetype
• Pre-configured for local Alfresco
Repository
• Login and home page
• Demo…
“My Alfresco Files”
Customization
Customize…
• Existing pages via extension modules
+ Use the “Developer View”
• Create new or extend existing widgets
• Style through LESS variables in Theme
• Demo…
Multi-Select Actions
A New Way of Thinking
Remember…
• Today’s page will have tomorrow’s widgets
• Use what’s available now and request
something better for tomorrow
Records Management
Example
Alfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI Development
Benefits
• Fast prototyping
• Can work on server side code
• Simple to swap out when new widgets are
available
Alfresco Day Stockholm 2015 - Rapid UI Development
Best Practices
In General…
• Always feedback
+ Bugs, feature requests, requests for examples and
documentation, provide use cases, request extension
points, etc.
• Never copy and paste
+ Always extend or re-use
• Create composite widgets and libraries
• Use Services to access data
+ Normalize JSON response schemas
+ Avoid coupling widgets to data
• Use Pub/Sub or Events for communication
+ Avoid fixed references
NEVER USE A CSS
OVERLAY !!!
“A widget doesn’t do what I want”
• Widgets are intentionally written to be easily
extendable
• Functions are small to encapsulate code that
might want to be changed
• Closures are generally avoided to make
functions available to be overridden or
extended
• Functions can be extended or overridden
+ Use this.inherited(arguments); to extend
Extending a Widget
30
Extending a Function
Mix-In Modules
• Widgets support “multiple inheritance”
+ Widgets extend a primary module and then “mix-
in” additional modules
• “alfresco/core/Core” should be mixed-in
to all widgets
+ Provides core pub/sub and logging capabilities
• Abstract cross-cutting function to mix-in
modules
• Request abstraction of existing widget
code into a mix-in module
Education
Resources
• Tutorial on GitHub
+ https://github.com/Alfresco/Aikau/blob/master/tuto
rial/chapters/Contents.md
• JSDoc
+ http://dev.alfresco.com/resource/docs/aikau-
jsdoc/
• Blogs
+ https://www.alfresco.com/blogs/developer/author/
ddraper/
+ Follow me on twitter for announcements
(@_DaveDraper)
Questions?
Debugging
Debugging Methods
• Console log
• Publication/subscription log
• Demo…
JavaScript Debugging
Finding Source (Chrome)
• Use CTRL-P with text “surf” to find
aggregated resource
• Use CTRL-F with function name to find
target
39
Source Matching (Chrome)
40
Finding Source (FireBug)
• Use CTRL-F to find (with “Multiple Files”
option checked)
41
Breakpoints
• Logged error may not provide link to line
number
• Break on exceptions to zero in on error
conditions
• Need to include caught exceptions (Aikau
exceptions are caught)
• Need to typically skip past 3rd party
exceptions on page load
42
Break on Exception
43
WebScript JS Debugger
44
45

More Related Content

PDF
Drupal 8 deeper dive
PDF
Drupal 8 - What’s cooking?
PDF
Eclipse E4 Open Social Gadgetsvrs3
PDF
Drupal 8 introduction
PPTX
Agile sites2
PPTX
Software architecture : From project management to deployment
PPTX
Agile sites @ telmore
PDF
Agile sites311training
Drupal 8 deeper dive
Drupal 8 - What’s cooking?
Eclipse E4 Open Social Gadgetsvrs3
Drupal 8 introduction
Agile sites2
Software architecture : From project management to deployment
Agile sites @ telmore
Agile sites311training

What's hot (20)

PDF
Intro to SharePoint 2010 development for .NET developers
PPTX
WebNetConf 2012 - Single Page Apps
PPTX
Kickstart android development with xamarin
PDF
Drupal 8 - A Brief Introduction
PDF
Phase2 Large Drupal Multisites (gta case study)
PDF
Drupal 7
PPTX
SharePoint Development in Government Environments
PDF
Apereo OAE - Bootcamp
PDF
Deployer - Deployment tool for PHP
PPTX
Backbonejs
PDF
A User Interface for adding Machine Learning tools into GitHub
PPTX
No Container: a Modern Java Stack with Bootique
PDF
itPage LDC 09 Presentation
PPTX
Large Scale Drupal - Behind the Scenes
PPTX
OpenSocial gadgets at Eclipse
PPTX
SoCal Code Camp 2011 - ASP.NET 4.5
PDF
Building a cross-framework design system
KEY
ERPNext Demo Day - June 2012
PDF
State of Search, Solr and Facets in Drupal 8 - Drupalcamp Belgium 2015
PPTX
Intro to SharePoint 2010 development for .NET developers
WebNetConf 2012 - Single Page Apps
Kickstart android development with xamarin
Drupal 8 - A Brief Introduction
Phase2 Large Drupal Multisites (gta case study)
Drupal 7
SharePoint Development in Government Environments
Apereo OAE - Bootcamp
Deployer - Deployment tool for PHP
Backbonejs
A User Interface for adding Machine Learning tools into GitHub
No Container: a Modern Java Stack with Bootique
itPage LDC 09 Presentation
Large Scale Drupal - Behind the Scenes
OpenSocial gadgets at Eclipse
SoCal Code Camp 2011 - ASP.NET 4.5
Building a cross-framework design system
ERPNext Demo Day - June 2012
State of Search, Solr and Facets in Drupal 8 - Drupalcamp Belgium 2015
Ad

Similar to Alfresco Day Stockholm 2015 - Rapid UI Development (20)

PDF
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
PDF
BP-9 Share Customization Best Practices
PDF
Optaros Surf Code Camp Introduction
PDF
BP-7 Share Customization Best Practices
PPTX
10 things you need to know to deliver a successful Alfresco project
PDF
What's new in alfresco enterprise 3 3
PDF
Alfresco Novidades 3.3
PPTX
Building Content-Rich Java Apps in the Cloud with the Alfresco API
PDF
Developer’s intro to the alfresco platform
PDF
What's new in alfresco 3.3
PDF
Extending Alfresco Share 3.3
PDF
PLAT-7 Spring Web Scripts and Spring Surf
PDF
PLAT-7 Spring Web Scripts and Spring Surf
PPT
2 Magma Introduction
PPT
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
PDF
PLAT-8 Spring Web Scripts and Spring Surf
PDF
The Alfresco Platform
PPT
Introduction to Alfresco Surf Platform
PPTX
Alfresco overview EDM
PPTX
Alfresco Template Feb 2011
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
BP-9 Share Customization Best Practices
Optaros Surf Code Camp Introduction
BP-7 Share Customization Best Practices
10 things you need to know to deliver a successful Alfresco project
What's new in alfresco enterprise 3 3
Alfresco Novidades 3.3
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Developer’s intro to the alfresco platform
What's new in alfresco 3.3
Extending Alfresco Share 3.3
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
2 Magma Introduction
Alfresco In An Hour - Document Management, Web Content Management, and Collab...
PLAT-8 Spring Web Scripts and Spring Surf
The Alfresco Platform
Introduction to Alfresco Surf Platform
Alfresco overview EDM
Alfresco Template Feb 2011
Ad

More from Nicole Szigeti (20)

PDF
Alfresco Partner Lightning Talk: fme
PDF
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
PDF
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
PDF
Alfresco Partner Lightning Talk: Westernacher
PDF
Anwendungsbeispiele verschiedener SAP-Alfresco Umgebungen - Volker Bläsig, CE...
PDF
Alfresco im Einsatz bei SWM – Stadtwerke München, Simon Rittsteiger, Projekt ...
PDF
Alfresco im Einsatz bei SIGNA, Franz Hillebrand, Managing Director, SIGNA Inf...
PDF
Alfresco im Einsatz bei der Bundesnotarkammer, Stefan Semmelroggen, Leiter Re...
PDF
Alfresco im Einsatz: Fraport berichtet - Kai Stephan, Consultant, AirITSystem...
PDF
Maximizing the Value of Your Content - John Pomeroy, Alfresco
PDF
Trends auf dem ECM-Markt - Bernhard Zöller, Zöller & Partner GmbH
PDF
Alfresco Day Stockholm 2015 - Platform Update
PDF
Alfresco Day Stockholm 2015 - Redpill Linpro presents case studies of Trap Da...
PDF
Alfresco Day Stockholm 2015 - Case Study: Scania
PDF
Alfresco Day Stockholm 2015 - Case Study: Tieto
PDF
Alfresco Day Stockholm 2015 - Alfresco One
PDF
Alfresco Day Stockholm 2015 - Business Process Management with Alfresco Activiti
PDF
Alfresco Day Stockholm 2015 - Accelerating Digital Transformation - Keynote
PDF
Alfresco Day Stockholm 2015 - Collaborate to Innovate
PDF
Alfresco Day Stockholm 2015 - Welcome
Alfresco Partner Lightning Talk: fme
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
Alfresco Partner Lightning Talk: Westernacher
Anwendungsbeispiele verschiedener SAP-Alfresco Umgebungen - Volker Bläsig, CE...
Alfresco im Einsatz bei SWM – Stadtwerke München, Simon Rittsteiger, Projekt ...
Alfresco im Einsatz bei SIGNA, Franz Hillebrand, Managing Director, SIGNA Inf...
Alfresco im Einsatz bei der Bundesnotarkammer, Stefan Semmelroggen, Leiter Re...
Alfresco im Einsatz: Fraport berichtet - Kai Stephan, Consultant, AirITSystem...
Maximizing the Value of Your Content - John Pomeroy, Alfresco
Trends auf dem ECM-Markt - Bernhard Zöller, Zöller & Partner GmbH
Alfresco Day Stockholm 2015 - Platform Update
Alfresco Day Stockholm 2015 - Redpill Linpro presents case studies of Trap Da...
Alfresco Day Stockholm 2015 - Case Study: Scania
Alfresco Day Stockholm 2015 - Case Study: Tieto
Alfresco Day Stockholm 2015 - Alfresco One
Alfresco Day Stockholm 2015 - Business Process Management with Alfresco Activiti
Alfresco Day Stockholm 2015 - Accelerating Digital Transformation - Keynote
Alfresco Day Stockholm 2015 - Collaborate to Innovate
Alfresco Day Stockholm 2015 - Welcome

Recently uploaded (20)

PPTX
Cloud computing and distributed systems.
PDF
cuic standard and advanced reporting.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Modernizing your data center with Dell and AMD
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
A Presentation on Artificial Intelligence
PPTX
Big Data Technologies - Introduction.pptx
PDF
Encapsulation theory and applications.pdf
Cloud computing and distributed systems.
cuic standard and advanced reporting.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
The Rise and Fall of 3GPP – Time for a Sabbatical?
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Understanding_Digital_Forensics_Presentation.pptx
Network Security Unit 5.pdf for BCA BBA.
MYSQL Presentation for SQL database connectivity
Advanced methodologies resolving dimensionality complications for autism neur...
Building Integrated photovoltaic BIPV_UPV.pdf
Empathic Computing: Creating Shared Understanding
Modernizing your data center with Dell and AMD
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Dropbox Q2 2025 Financial Results & Investor Presentation
Review of recent advances in non-invasive hemoglobin estimation
A Presentation on Artificial Intelligence
Big Data Technologies - Introduction.pptx
Encapsulation theory and applications.pdf

Alfresco Day Stockholm 2015 - Rapid UI Development

  • 1. Rapid UI Development with Aikau Dave Draper Senior Software Engineer, Alfresco
  • 3. Aikau Basics • Internally developed UI framework • Designed for re-usability, customizability and accessibility • Initially part of Share, now an external GitHub project • Used for: + Share header + Faceted search and faceted search management + Sites management + Custom Model Management (5.1 and 5.0 module) + Parts of Record Management • Best unit test code-coverage of any Alfresco project
  • 4. Hundreds of Modules • 25 different form controls • 20 different layout containers • 20 different menu controls • 44 different property renderers • 8 variations of lists + 7 list views + 10 list view layout containers • Document previewing • Keyboard accessible drag-and-drop framework • 30 different services
  • 6. • Small Agile team + Supporting internal product feature development • Public GitHub repository • Use “GitFlow” process + Every Pull Request is code reviewed • One week sprints • Weekly backwards compatible releases • Zero technical debt + Bugs prioritized over features • Automated unit testing for regressions + Unit tests added for all new features + Unit tests add for all new bugs
  • 7. Fast Turnaround • Features and bugs not added mid-sprint • Maximum wait of 2 weeks to turnaround a bug or feature request Sprint N+1 Bug Raised Added to Sprint Fix Delivered Sprint N One Week
  • 9. Page Creation Basics • An Aikau page is defined by a single WebScript + “Legacy” Share pages are defined by Surf Pages, Templates, Regions, Components and WebScripts • Pages are mapped using “URI Templates” • Four templates are available out-of-the-box + “dp” (dynamic-page) + “hdp” (hybrid-dynamic-page) + “rp” (remote-page) + “hrp” (hybrid-remote-page) • Recommended to use “dp” • Custom templates can be defined
  • 12. Decoupled Model • Widgets decoupled from each other by pub/sub • Widgets decoupled from data via Services
  • 14. Easy Client Creation • Maven Archetype • Pre-configured for local Alfresco Repository • Login and home page • Demo…
  • 17. Customize… • Existing pages via extension modules + Use the “Developer View” • Create new or extend existing widgets • Style through LESS variables in Theme • Demo…
  • 19. A New Way of Thinking
  • 20. Remember… • Today’s page will have tomorrow’s widgets • Use what’s available now and request something better for tomorrow
  • 24. Benefits • Fast prototyping • Can work on server side code • Simple to swap out when new widgets are available
  • 27. In General… • Always feedback + Bugs, feature requests, requests for examples and documentation, provide use cases, request extension points, etc. • Never copy and paste + Always extend or re-use • Create composite widgets and libraries • Use Services to access data + Normalize JSON response schemas + Avoid coupling widgets to data • Use Pub/Sub or Events for communication + Avoid fixed references
  • 28. NEVER USE A CSS OVERLAY !!!
  • 29. “A widget doesn’t do what I want” • Widgets are intentionally written to be easily extendable • Functions are small to encapsulate code that might want to be changed • Closures are generally avoided to make functions available to be overridden or extended • Functions can be extended or overridden + Use this.inherited(arguments); to extend
  • 32. Mix-In Modules • Widgets support “multiple inheritance” + Widgets extend a primary module and then “mix- in” additional modules • “alfresco/core/Core” should be mixed-in to all widgets + Provides core pub/sub and logging capabilities • Abstract cross-cutting function to mix-in modules • Request abstraction of existing widget code into a mix-in module
  • 34. Resources • Tutorial on GitHub + https://github.com/Alfresco/Aikau/blob/master/tuto rial/chapters/Contents.md • JSDoc + http://dev.alfresco.com/resource/docs/aikau- jsdoc/ • Blogs + https://www.alfresco.com/blogs/developer/author/ ddraper/ + Follow me on twitter for announcements (@_DaveDraper)
  • 37. Debugging Methods • Console log • Publication/subscription log • Demo…
  • 39. Finding Source (Chrome) • Use CTRL-P with text “surf” to find aggregated resource • Use CTRL-F with function name to find target 39
  • 41. Finding Source (FireBug) • Use CTRL-F to find (with “Multiple Files” option checked) 41
  • 42. Breakpoints • Logged error may not provide link to line number • Break on exceptions to zero in on error conditions • Need to include caught exceptions (Aikau exceptions are caught) • Need to typically skip past 3rd party exceptions on page load 42
  • 45. 45