SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Extensibility for ADF Applications
Denys Vuika
@DenysVuika
Learn. Connect. Collaborate.
About me
• Applications Platform Developer @ Alfresco
• Alfresco Content Application tech lead
• Open Source contributor
• Blogger and writer
Leanpub:
https://leanpub.com/developing-with-angular
Amazon Kindle:
https://www.amazon.com/dp/B07KD9KHQW
Amazon Paperback:
https://www.amazon.com/dp/1731123426
1618 readers, 476 pages
@ DenysVuika
Learn. Connect. Collaborate.
Alfresco Content Application
Extensibility for ADF Applications
Learn. Connect. Collaborate.
Learn. Connect. Collaborate.
Extensibility
Features
• Custom pages and routes
• Document List layouts
• Navigation sidebar
• Context menu
• Sidebar (aka Info Drawer)
• Toolbars
• Viewer content and toolbars
• Content metadata
+ new endpoints with every release
+ your own content and extensions
Format
Learn. Connect. Collaborate.
Format
• JSON files
• Files are merged at runtime
• Custom order of loading
• Extensions can
– Rewrite properties
– Extend objects and collections
– Disable existing features
Learn. Connect. Collaborate.
Format:
metadata
Learn. Connect. Collaborate.
Format:
app header
Learn. Connect. Collaborate.
Format:
actions
Actions to redirect to routes
Learn. Connect. Collaborate.
Format:
demo
app.extensions.json / $references
• The order of the declaration matters
• Last loaded extension can customize previously loaded
Learn. Connect. Collaborate.
Format:
demo
Before
After
Components
Learn. Connect. Collaborate.
Components
• Standard Angular components
• 3rd party dependencies
• Simple to distribute (NPM, Nexus, etc.)
• Easy to register
• Extensions can override existing entries
Learn. Connect. Collaborate.
Components:
viewer
Register custom viewer by extension
Learn. Connect. Collaborate.
Components:
viewer
Render custom content for PDF files
Learn. Connect. Collaborate.
Components:
menu
Inject custom component into the context menu
Learn. Connect. Collaborate.
Components:
menu
Your custom component in the context menu
• Looks and behaves like menu item
• Integrates with Rules
• Executes your code on click
Learn. Connect. Collaborate.
Demo:
create menu
• Adding extra menus to “New” button
• Multiple levels of nesting
• “Enabled” state is based on Rules
Learn. Connect. Collaborate.
Demo:
create menu
New entries at runtime
Routes
Learn. Connect. Collaborate.
Routes
• Expand the app by adding new routes
• New pages
• Custom content to show
• Application layout and styles
• Authentication guards
• Register actions to redirect to your content
• Register buttons to invoke your actions
• Redefine and customize other routes
Learn. Connect. Collaborate.
Routes:
demo
Custom route registration example
/my-route-one/*
Learn. Connect. Collaborate.
Routes:
demo
• Renders separate groups
• Auto-highlights links
• Registers extra URL parts
• Renders your pages
Actions
Learn. Connect. Collaborate.
Actions
• Trigger application features
• App is split into reusable actions, i.e.:
– Remove node
– Invoke “Create Folder” dialog
– Preview node
– ... and many more
• Extensions can invoke or customize every
application action exposed
• Based on NgRx (inspired by Redux)
• You can provide custom handlers
• You can replace Action Engine
Learn. Connect. Collaborate.
Actions:
example
Declare a new toolbar entries in your extension
Learn. Connect. Collaborate.
Actions:
example
Get custom toolbar entries rendered at runtime
• Supports rules
• Menus and sub-menus
• Separators
• Custom ordering
• Replace existing buttons
• Invoke app actions
Learn. Connect. Collaborate.
Actions:
effects
Listening and reacting on the action event
Rules
Learn. Connect. Collaborate.
Rules
• Rules are plain JavaScript functions
• Can access runtime context
• Can be composed from other rules
– NOT, OR, AND
– Rule negation via “!” (not) operator
• Unlimited level of chaining
• You can replace any rule with your own
• Extensions can register extra rules
Learn. Connect. Collaborate.
Rules:
code
Learn. Connect. Collaborate.
Rules:
context
• Resolves rules
• Provides access to application state
• You can replace with own implementation
Learn. Connect. Collaborate.
Rules:
registration
Learn. Connect. Collaborate.
Rules:
markup
Declaring a composite rule…
and referencing:
Distribution
Learn. Connect. Collaborate.
Distribution
• Standard Angular Libraries
• Published to NPM or custom sources
• Single metadata file as part of the library
• Single command to install into the app
• Installing from local tarball packages
See more details on NGI tool: https://bit.ly/2RcKtvw
@alfresco/adf-extensions
Learn. Connect. Collaborate.
Core features
• Extension loader
• Application services to back extensibility
• Core evaluators (”every”, “not”, “all”, etc.)
• Dynamic components
Learn. Connect. Collaborate.
What’s next
• More extension points for ADF and ACA
• More developer tooling for extensions
– Validation and linting
– Upgrades and versioning
– Distribution
• Automatic installation and deployment
• Web Components support
• Improvements based on community feedback
Learn. Connect. Collaborate.
More
information
Extensibility documentation
https://alfresco-content-app.netlify.com/#/extending/
Thank you
Q and A

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Alfresco Process Services extension project - Alfresco DevCon 2018
Alfresco Process Services extension project - Alfresco DevCon 2018Alfresco Process Services extension project - Alfresco DevCon 2018
Alfresco Process Services extension project - Alfresco DevCon 2018
 
AngularJS Anatomy & Directives
AngularJS Anatomy & DirectivesAngularJS Anatomy & Directives
AngularJS Anatomy & Directives
 
Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?
Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?
Alfresco DevCon 2019 - Do you know what the Alfresco heartbeat is?
 
Using and extending Alfresco Content Application
Using and extending Alfresco Content ApplicationUsing and extending Alfresco Content Application
Using and extending Alfresco Content Application
 
Front-End Tools and Workflows
Front-End Tools and WorkflowsFront-End Tools and Workflows
Front-End Tools and Workflows
 
Alfresco/Activiti Modeler Application - Andras Popovics - 2019
Alfresco/Activiti Modeler Application - Andras Popovics - 2019Alfresco/Activiti Modeler Application - Andras Popovics - 2019
Alfresco/Activiti Modeler Application - Andras Popovics - 2019
 
Alfresco Digital Business Platform - Why, How, What
Alfresco Digital Business Platform - Why, How, WhatAlfresco Digital Business Platform - Why, How, What
Alfresco Digital Business Platform - Why, How, What
 
Decoupled Architecture and WordPress
Decoupled Architecture and WordPressDecoupled Architecture and WordPress
Decoupled Architecture and WordPress
 
How to avoid microservice pitfalls
How to avoid microservice pitfallsHow to avoid microservice pitfalls
How to avoid microservice pitfalls
 
ASP.NET 5
ASP.NET 5ASP.NET 5
ASP.NET 5
 
Intro to React
Intro to ReactIntro to React
Intro to React
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications Engage 2019: Modernising Your Domino and XPages Applications
Engage 2019: Modernising Your Domino and XPages Applications
 
How to Write Alfresco Addons that Last Forever
How to Write Alfresco Addons that Last ForeverHow to Write Alfresco Addons that Last Forever
How to Write Alfresco Addons that Last Forever
 
O365Con18 - Working with PowerShell, VS Code and GitHub - Thomas Vochten
O365Con18 - Working with PowerShell, VS Code and GitHub - Thomas VochtenO365Con18 - Working with PowerShell, VS Code and GitHub - Thomas Vochten
O365Con18 - Working with PowerShell, VS Code and GitHub - Thomas Vochten
 
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
Alex Pshul: What We Learned by Testing Execution of 300K Messages/Min in a Se...
 
Going Serverless with Azure Functions
Going Serverless with Azure FunctionsGoing Serverless with Azure Functions
Going Serverless with Azure Functions
 
Building solutions with the SharePoint Framework - introduction
Building solutions with the SharePoint Framework - introductionBuilding solutions with the SharePoint Framework - introduction
Building solutions with the SharePoint Framework - introduction
 
Les nouveautés ASP.NET 5 avec Visual Studio 2015
Les nouveautés ASP.NET 5 avec Visual Studio 2015Les nouveautés ASP.NET 5 avec Visual Studio 2015
Les nouveautés ASP.NET 5 avec Visual Studio 2015
 
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOpsECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
ECS19 Elio Struyf - Setting Up Your SPFx CI/CD pipelines on Azure DevOps
 

Ähnlich wie Extensibility for ADF applications

Getting started with Alfresco in the cloud
Getting started with Alfresco in the cloudGetting started with Alfresco in the cloud
Getting started with Alfresco in the cloud
Paul Hampton
 

Ähnlich wie Extensibility for ADF applications (20)

Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018Docs as Part of the Product - Open Source Summit North America 2018
Docs as Part of the Product - Open Source Summit North America 2018
 
Alfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentAlfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI Development
 
IBM Social Business Toolkit
IBM Social Business ToolkitIBM Social Business Toolkit
IBM Social Business Toolkit
 
Cross Site Collection Navigation
Cross Site Collection NavigationCross Site Collection Navigation
Cross Site Collection Navigation
 
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
 
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JSCross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
Cross Site Collection Navigation using SPFx, Powershell PnP & PnP-JS
 
B01 markus gylling-epub
B01 markus gylling-epubB01 markus gylling-epub
B01 markus gylling-epub
 
B01 markus gylling-epub
B01 markus gylling-epubB01 markus gylling-epub
B01 markus gylling-epub
 
Code the docs-yu liu
Code the docs-yu liuCode the docs-yu liu
Code the docs-yu liu
 
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
 
Django Documentation
Django DocumentationDjango Documentation
Django Documentation
 
Getting started with Alfresco in the cloud
Getting started with Alfresco in the cloudGetting started with Alfresco in the cloud
Getting started with Alfresco in the cloud
 
AD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension LibraryAD1545 - Extending the XPages Extension Library
AD1545 - Extending the XPages Extension Library
 
Software design with Domain-driven design
Software design with Domain-driven design Software design with Domain-driven design
Software design with Domain-driven design
 
Javascript mynotes
Javascript mynotesJavascript mynotes
Javascript mynotes
 
Microservices and the Art of Taming the Dependency Hell Monster
Microservices and the Art of Taming the Dependency Hell MonsterMicroservices and the Art of Taming the Dependency Hell Monster
Microservices and the Art of Taming the Dependency Hell Monster
 
Docs Like Code: Strategies and Stories
Docs Like Code: Strategies and StoriesDocs Like Code: Strategies and Stories
Docs Like Code: Strategies and Stories
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFx
 
Alfresco overview EDM
Alfresco overview EDMAlfresco overview EDM
Alfresco overview EDM
 
Tech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityTech Talk Live on Share Extensibility
Tech Talk Live on Share Extensibility
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

Extensibility for ADF applications