SlideShare a Scribd company logo
1 of 45
Download to read offline
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
Benefits
• Fast prototyping
• Can work on server side code
• Simple to swap out when new widgets are
available
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

What's hot

Intro to SharePoint 2010 development for .NET developers
Intro to SharePoint 2010 development for .NET developersIntro to SharePoint 2010 development for .NET developers
Intro to SharePoint 2010 development for .NET developersJohn Ferringer
 
WebNetConf 2012 - Single Page Apps
WebNetConf 2012 - Single Page AppsWebNetConf 2012 - Single Page Apps
WebNetConf 2012 - Single Page AppsPop Apps
 
Kickstart android development with xamarin
Kickstart android development with xamarinKickstart android development with xamarin
Kickstart android development with xamarinFoyzul Karim
 
Drupal 8 - A Brief Introduction
Drupal 8 - A Brief IntroductionDrupal 8 - A Brief Introduction
Drupal 8 - A Brief IntroductionJeff Geerling
 
Phase2 Large Drupal Multisites (gta case study)
Phase2   Large Drupal Multisites (gta case study)Phase2   Large Drupal Multisites (gta case study)
Phase2 Large Drupal Multisites (gta case study)Phase2
 
SharePoint Development in Government Environments
SharePoint Development in Government EnvironmentsSharePoint Development in Government Environments
SharePoint Development in Government EnvironmentsGunjan Datta
 
Deployer - Deployment tool for PHP
Deployer - Deployment tool for PHPDeployer - Deployment tool for PHP
Deployer - Deployment tool for PHPhernanibf
 
A User Interface for adding Machine Learning tools into GitHub
A User Interface for adding Machine Learning tools into GitHubA User Interface for adding Machine Learning tools into GitHub
A User Interface for adding Machine Learning tools into GitHubRumyana Rumenova
 
No Container: a Modern Java Stack with Bootique
No Container: a Modern Java Stack with BootiqueNo Container: a Modern Java Stack with Bootique
No Container: a Modern Java Stack with BootiqueAndrus Adamchik
 
itPage LDC 09 Presentation
itPage LDC 09 PresentationitPage LDC 09 Presentation
itPage LDC 09 PresentationEric Landmann
 
Large Scale Drupal - Behind the Scenes
Large Scale Drupal - Behind the ScenesLarge Scale Drupal - Behind the Scenes
Large Scale Drupal - Behind the ScenesBoyan Borisov
 
OpenSocial gadgets at Eclipse
OpenSocial gadgets at EclipseOpenSocial gadgets at Eclipse
OpenSocial gadgets at EclipseBenjamin Cabé
 
SoCal Code Camp 2011 - ASP.NET 4.5
SoCal Code Camp 2011 - ASP.NET 4.5SoCal Code Camp 2011 - ASP.NET 4.5
SoCal Code Camp 2011 - ASP.NET 4.5Jon Galloway
 
Building a cross-framework design system
Building a cross-framework design systemBuilding a cross-framework design system
Building a cross-framework design systemMichael Schinis
 
ERPNext Demo Day - June 2012
ERPNext Demo Day - June 2012ERPNext Demo Day - June 2012
ERPNext Demo Day - June 2012rushabh_mehta
 
State of Search, Solr and Facets in Drupal 8 - Drupalcamp Belgium 2015
State of Search, Solr and Facets in Drupal 8 - Drupalcamp Belgium 2015State of Search, Solr and Facets in Drupal 8 - Drupalcamp Belgium 2015
State of Search, Solr and Facets in Drupal 8 - Drupalcamp Belgium 2015Dropsolid
 

What's hot (20)

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

Similar to Alfresco Day Stockholm 2015 - Rapid UI Development

OSH01 - Developing SharePoint Framework Solutions for the Enterprise
OSH01 - Developing SharePoint Framework Solutions for the EnterpriseOSH01 - Developing SharePoint Framework Solutions for the Enterprise
OSH01 - Developing SharePoint Framework Solutions for the EnterpriseEric Shupps
 
One drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp CaceresOne drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp Cacereshernanibf
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareAlfresco Software
 
Git Going w/ Git
Git Going w/ GitGit Going w/ Git
Git Going w/ GitheyMP
 
Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...eZ Systems
 
Managing changes to eZPublish Database
Managing changes to eZPublish DatabaseManaging changes to eZPublish Database
Managing changes to eZPublish DatabaseGaetano Giunta
 
Cross Site Collection Navigation
Cross Site Collection NavigationCross Site Collection Navigation
Cross Site Collection NavigationThomas Daly
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfOrtus Solutions, Corp
 
One Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp LondonOne Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp Londonhernanibf
 
Atlassian User Group NYC 20170830 PreSummit Event Slides
Atlassian User Group NYC 20170830 PreSummit Event SlidesAtlassian User Group NYC 20170830 PreSummit Event Slides
Atlassian User Group NYC 20170830 PreSummit Event SlidesMarlon Palha
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your WebsiteAcquia
 
Zero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExZero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExBradley Brown
 
GateIn - The Solution for Managing and Building Enterprise Web Apps
GateIn - The Solution for Managing and Building Enterprise Web AppsGateIn - The Solution for Managing and Building Enterprise Web Apps
GateIn - The Solution for Managing and Building Enterprise Web AppsWesley Hales
 
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...Jon Peck
 
The WordPress University
The WordPress UniversityThe WordPress University
The WordPress UniversityStephanie Leary
 
Wordpress intro
Wordpress introWordpress intro
Wordpress introthe-colab
 
Drupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of TartuDrupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of TartuRené Lasseron
 
Frameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic ReviewFrameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic Reviewnetc2012
 

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

OSH01 - Developing SharePoint Framework Solutions for the Enterprise
OSH01 - Developing SharePoint Framework Solutions for the EnterpriseOSH01 - Developing SharePoint Framework Solutions for the Enterprise
OSH01 - Developing SharePoint Framework Solutions for the Enterprise
 
72d5drupal
72d5drupal72d5drupal
72d5drupal
 
One drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp CaceresOne drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp Caceres
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in Share
 
Git Going w/ Git
Git Going w/ GitGit Going w/ Git
Git Going w/ Git
 
DrupalCon 2011 Highlight
DrupalCon 2011 HighlightDrupalCon 2011 Highlight
DrupalCon 2011 Highlight
 
Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...Managing Changes to the Database Across the Project Life Cycle (presented by ...
Managing Changes to the Database Across the Project Life Cycle (presented by ...
 
Managing changes to eZPublish Database
Managing changes to eZPublish DatabaseManaging changes to eZPublish Database
Managing changes to eZPublish Database
 
Cross Site Collection Navigation
Cross Site Collection NavigationCross Site Collection Navigation
Cross Site Collection Navigation
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
 
One Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp LondonOne Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp London
 
Atlassian User Group NYC 20170830 PreSummit Event Slides
Atlassian User Group NYC 20170830 PreSummit Event SlidesAtlassian User Group NYC 20170830 PreSummit Event Slides
Atlassian User Group NYC 20170830 PreSummit Event Slides
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
 
Zero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApExZero to Sixty with Oracle ApEx
Zero to Sixty with Oracle ApEx
 
GateIn - The Solution for Managing and Building Enterprise Web Apps
GateIn - The Solution for Managing and Building Enterprise Web AppsGateIn - The Solution for Managing and Building Enterprise Web Apps
GateIn - The Solution for Managing and Building Enterprise Web Apps
 
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
 
The WordPress University
The WordPress UniversityThe WordPress University
The WordPress University
 
Wordpress intro
Wordpress introWordpress intro
Wordpress intro
 
Drupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of TartuDrupal case study: Behind the scenes of website of University of Tartu
Drupal case study: Behind the scenes of website of University of Tartu
 
Frameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic ReviewFrameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic Review
 

More from Nicole Szigeti

Alfresco Partner Lightning Talk: fme
Alfresco Partner Lightning Talk: fmeAlfresco Partner Lightning Talk: fme
Alfresco Partner Lightning Talk: fmeNicole Szigeti
 
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support EngineerSupport Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support EngineerNicole Szigeti
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Nicole Szigeti
 
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...Nicole Szigeti
 
Alfresco Partner Lightning Talk: Westernacher
Alfresco Partner Lightning Talk: WesternacherAlfresco Partner Lightning Talk: Westernacher
Alfresco Partner Lightning Talk: WesternacherNicole Szigeti
 
Anwendungsbeispiele verschiedener SAP-Alfresco Umgebungen - Volker Bläsig, CE...
Anwendungsbeispiele verschiedener SAP-Alfresco Umgebungen - Volker Bläsig, CE...Anwendungsbeispiele verschiedener SAP-Alfresco Umgebungen - Volker Bläsig, CE...
Anwendungsbeispiele verschiedener SAP-Alfresco Umgebungen - Volker Bläsig, CE...Nicole Szigeti
 
Alfresco im Einsatz bei SWM – Stadtwerke München, Simon Rittsteiger, Projekt ...
Alfresco im Einsatz bei SWM – Stadtwerke München, Simon Rittsteiger, Projekt ...Alfresco im Einsatz bei SWM – Stadtwerke München, Simon Rittsteiger, Projekt ...
Alfresco im Einsatz bei SWM – Stadtwerke München, Simon Rittsteiger, Projekt ...Nicole Szigeti
 
Alfresco im Einsatz bei SIGNA, Franz Hillebrand, Managing Director, SIGNA Inf...
Alfresco im Einsatz bei SIGNA, Franz Hillebrand, Managing Director, SIGNA Inf...Alfresco im Einsatz bei SIGNA, Franz Hillebrand, Managing Director, SIGNA Inf...
Alfresco im Einsatz bei SIGNA, Franz Hillebrand, Managing Director, SIGNA Inf...Nicole Szigeti
 
Alfresco im Einsatz bei der Bundesnotarkammer, Stefan Semmelroggen, Leiter Re...
Alfresco im Einsatz bei der Bundesnotarkammer, Stefan Semmelroggen, Leiter Re...Alfresco im Einsatz bei der Bundesnotarkammer, Stefan Semmelroggen, Leiter Re...
Alfresco im Einsatz bei der Bundesnotarkammer, Stefan Semmelroggen, Leiter Re...Nicole Szigeti
 
Alfresco im Einsatz: Fraport berichtet - Kai Stephan, Consultant, AirITSystem...
Alfresco im Einsatz: Fraport berichtet - Kai Stephan, Consultant, AirITSystem...Alfresco im Einsatz: Fraport berichtet - Kai Stephan, Consultant, AirITSystem...
Alfresco im Einsatz: Fraport berichtet - Kai Stephan, Consultant, AirITSystem...Nicole Szigeti
 
Maximizing the Value of Your Content - John Pomeroy, Alfresco
Maximizing the Value of Your Content - John Pomeroy, AlfrescoMaximizing the Value of Your Content - John Pomeroy, Alfresco
Maximizing the Value of Your Content - John Pomeroy, AlfrescoNicole Szigeti
 
Trends auf dem ECM-Markt - Bernhard Zöller, Zöller & Partner GmbH
Trends auf dem ECM-Markt - Bernhard Zöller, Zöller & Partner GmbHTrends auf dem ECM-Markt - Bernhard Zöller, Zöller & Partner GmbH
Trends auf dem ECM-Markt - Bernhard Zöller, Zöller & Partner GmbHNicole Szigeti
 
Alfresco Day Stockholm 2015 - Platform Update
Alfresco Day Stockholm 2015 - Platform UpdateAlfresco Day Stockholm 2015 - Platform Update
Alfresco Day Stockholm 2015 - Platform UpdateNicole Szigeti
 
Alfresco Day Stockholm 2015 - Redpill Linpro presents case studies of Trap Da...
Alfresco Day Stockholm 2015 - Redpill Linpro presents case studies of Trap Da...Alfresco Day Stockholm 2015 - Redpill Linpro presents case studies of Trap Da...
Alfresco Day Stockholm 2015 - Redpill Linpro presents case studies of Trap Da...Nicole Szigeti
 
Alfresco Day Stockholm 2015 - Case Study: Scania
Alfresco Day Stockholm 2015 - Case Study: ScaniaAlfresco Day Stockholm 2015 - Case Study: Scania
Alfresco Day Stockholm 2015 - Case Study: ScaniaNicole Szigeti
 
Alfresco Day Stockholm 2015 - Case Study: Tieto
Alfresco Day Stockholm 2015 - Case Study: TietoAlfresco Day Stockholm 2015 - Case Study: Tieto
Alfresco Day Stockholm 2015 - Case Study: TietoNicole Szigeti
 
Alfresco Day Stockholm 2015 - Alfresco One
Alfresco Day Stockholm 2015 - Alfresco OneAlfresco Day Stockholm 2015 - Alfresco One
Alfresco Day Stockholm 2015 - Alfresco OneNicole Szigeti
 
Alfresco Day Stockholm 2015 - Business Process Management with Alfresco Activiti
Alfresco Day Stockholm 2015 - Business Process Management with Alfresco ActivitiAlfresco Day Stockholm 2015 - Business Process Management with Alfresco Activiti
Alfresco Day Stockholm 2015 - Business Process Management with Alfresco ActivitiNicole Szigeti
 
Alfresco Day Stockholm 2015 - Accelerating Digital Transformation - Keynote
Alfresco Day Stockholm 2015 - Accelerating Digital Transformation - KeynoteAlfresco Day Stockholm 2015 - Accelerating Digital Transformation - Keynote
Alfresco Day Stockholm 2015 - Accelerating Digital Transformation - KeynoteNicole Szigeti
 
Alfresco Day Stockholm 2015 - Collaborate to Innovate
Alfresco Day Stockholm 2015 - Collaborate to InnovateAlfresco Day Stockholm 2015 - Collaborate to Innovate
Alfresco Day Stockholm 2015 - Collaborate to InnovateNicole Szigeti
 

More from Nicole Szigeti (20)

Alfresco Partner Lightning Talk: fme
Alfresco Partner Lightning Talk: fmeAlfresco Partner Lightning Talk: fme
Alfresco Partner Lightning Talk: fme
 
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support EngineerSupport Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
 
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
Activiti goes enterprise: Die Evolution der BPM Suite aus Sicht des Alfresco ...
 
Alfresco Partner Lightning Talk: Westernacher
Alfresco Partner Lightning Talk: WesternacherAlfresco Partner Lightning Talk: Westernacher
Alfresco Partner Lightning Talk: Westernacher
 
Anwendungsbeispiele verschiedener SAP-Alfresco Umgebungen - Volker Bläsig, CE...
Anwendungsbeispiele verschiedener SAP-Alfresco Umgebungen - Volker Bläsig, CE...Anwendungsbeispiele verschiedener SAP-Alfresco Umgebungen - Volker Bläsig, CE...
Anwendungsbeispiele verschiedener SAP-Alfresco Umgebungen - Volker Bläsig, CE...
 
Alfresco im Einsatz bei SWM – Stadtwerke München, Simon Rittsteiger, Projekt ...
Alfresco im Einsatz bei SWM – Stadtwerke München, Simon Rittsteiger, Projekt ...Alfresco im Einsatz bei SWM – Stadtwerke München, Simon Rittsteiger, Projekt ...
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 SIGNA, Franz Hillebrand, Managing Director, SIGNA Inf...Alfresco im Einsatz bei SIGNA, Franz Hillebrand, Managing Director, SIGNA Inf...
Alfresco im Einsatz bei SIGNA, Franz Hillebrand, Managing Director, SIGNA Inf...
 
Alfresco im Einsatz bei der Bundesnotarkammer, Stefan Semmelroggen, Leiter Re...
Alfresco im Einsatz bei der Bundesnotarkammer, Stefan Semmelroggen, Leiter Re...Alfresco im Einsatz bei der Bundesnotarkammer, Stefan Semmelroggen, Leiter Re...
Alfresco im Einsatz bei der Bundesnotarkammer, Stefan Semmelroggen, Leiter Re...
 
Alfresco im Einsatz: Fraport berichtet - Kai Stephan, Consultant, AirITSystem...
Alfresco im Einsatz: Fraport berichtet - Kai Stephan, Consultant, AirITSystem...Alfresco im Einsatz: Fraport berichtet - Kai Stephan, Consultant, AirITSystem...
Alfresco im Einsatz: Fraport berichtet - Kai Stephan, Consultant, AirITSystem...
 
Maximizing the Value of Your Content - John Pomeroy, Alfresco
Maximizing the Value of Your Content - John Pomeroy, AlfrescoMaximizing the Value of Your Content - John Pomeroy, Alfresco
Maximizing the Value of Your Content - John Pomeroy, Alfresco
 
Trends auf dem ECM-Markt - Bernhard Zöller, Zöller & Partner GmbH
Trends auf dem ECM-Markt - Bernhard Zöller, Zöller & Partner GmbHTrends auf dem ECM-Markt - Bernhard Zöller, Zöller & Partner GmbH
Trends auf dem ECM-Markt - Bernhard Zöller, Zöller & Partner GmbH
 
Alfresco Day Stockholm 2015 - Platform Update
Alfresco Day Stockholm 2015 - Platform UpdateAlfresco Day Stockholm 2015 - Platform Update
Alfresco Day Stockholm 2015 - Platform Update
 
Alfresco Day Stockholm 2015 - Redpill Linpro presents case studies of Trap Da...
Alfresco Day Stockholm 2015 - Redpill Linpro presents case studies of Trap Da...Alfresco Day Stockholm 2015 - Redpill Linpro presents case studies of Trap Da...
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: ScaniaAlfresco Day Stockholm 2015 - Case Study: Scania
Alfresco Day Stockholm 2015 - Case Study: Scania
 
Alfresco Day Stockholm 2015 - Case Study: Tieto
Alfresco Day Stockholm 2015 - Case Study: TietoAlfresco Day Stockholm 2015 - Case Study: Tieto
Alfresco Day Stockholm 2015 - Case Study: Tieto
 
Alfresco Day Stockholm 2015 - Alfresco One
Alfresco Day Stockholm 2015 - Alfresco OneAlfresco Day Stockholm 2015 - Alfresco One
Alfresco Day Stockholm 2015 - Alfresco One
 
Alfresco Day Stockholm 2015 - Business Process Management with Alfresco Activiti
Alfresco Day Stockholm 2015 - Business Process Management with Alfresco ActivitiAlfresco Day Stockholm 2015 - Business Process Management with Alfresco Activiti
Alfresco Day Stockholm 2015 - Business Process Management with Alfresco Activiti
 
Alfresco Day Stockholm 2015 - Accelerating Digital Transformation - Keynote
Alfresco Day Stockholm 2015 - Accelerating Digital Transformation - KeynoteAlfresco Day Stockholm 2015 - Accelerating Digital Transformation - Keynote
Alfresco Day Stockholm 2015 - Accelerating Digital Transformation - Keynote
 
Alfresco Day Stockholm 2015 - Collaborate to Innovate
Alfresco Day Stockholm 2015 - Collaborate to InnovateAlfresco Day Stockholm 2015 - Collaborate to Innovate
Alfresco Day Stockholm 2015 - Collaborate to Innovate
 

Recently uploaded

Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 

Recently uploaded (20)

Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 

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
  • 22.
  • 23.
  • 24. Benefits • Fast prototyping • Can work on server side code • Simple to swap out when new widgets are available
  • 25.
  • 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