SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
Deep Dive – Alfresco Core Repository 
… embedded in a micro-services style architecture! 
Credits: 
h+p://www.redbullstratos.com/ 
Jan Vonka 
London, October 2014
Intro 
Jan Vonka! 
• Senior Software Engineer @ Alfresco 
• Core Repo’ Services 
• Cloud & Hybrid Platform 
• Fly balloons
Deep Dive: Core Repository 
! 
• Repository Architecture! 
• Diving in to the core … 
• Micro-Services overview ! 
• Intelligent Process App example …
Alfresco … 
ContentContext 
Collaborate 
Control 
Connect 
Cloud 
Customise 
Configure
Why should you dive in ? 
• Spectrum of solutions! 
• Out-Of-The-Box => Configure => Integrate 
• Extend => Customise => Embed (“modular”) 
Gain deeper understanding! 
• Develop, test & contribute 
• Troubleshoot issues – functional, perf’, …
Caveat 
• Use the Alfresco APIs & SDKs! 
• Well-defined, supported, On-Premise & Cloud 
• CMIS 1.1 & REST 
• Alfresco SDK 2.0 (Maven + Java) 
• Mobile SDK (iOS & Android) 
• Custom (JavaScript or Java)! 
• Repo extensions – WebScripts + (new) Services 
• Content Models - Policies & Behaviours
Repository Architecture - overview
Repo Architecture Overview 
Web 
Apps 
Mobile 
Apps 
Desktop 
Apps 
REST 
/ 
WebScripts 
CMIS 
Protocols 
Sync 
Share 
Mobile 
SDK 
Alfresco 
Office 
Services 
(AOS)
Anatomy of the Repo 
!Alfresco Repository 
Remote APIs (CMIS & WebScripts) 
Subsystems 
Core Foundation Services 
DB Storage (Tables) 
Protocols (WebDAV, SPP, IMAP, FTP, CIFS, SMTP, LDAP…) 
Content Models + Behaviours 
Collaborative Services 
Transactions + Security 
ThirdParty Libraries & Frameworks: including Spring Framework+Security / MyBatis (JDBC) / Solr+Lucene / Hazelcast 
Content/Object Storage (Binary Files) 
Search Storage (Indexes)
Diving in …
Alfresco *Services (some) 
FileFolder 
WebScript 
Script 
& 
Template 
(eg. 
JS 
& 
FM) 
Content 
& 
Mimetype 
Node 
& 
Version 
Permission, 
AuthenOcaOon 
& 
Authority 
DicOonary 
& 
Namespace 
CMIS 
Protocols 
(WebDAV, 
SPP, 
IMAP, 
FTP, 
CIFS, 
SMTP, 
LDAP…) 
Site 
CheckOutCheckIn 
& 
Lock 
Copy 
Thumbnail 
& 
RendiOon 
Rule 
& 
AcOon 
AcOvity 
& 
SubscripOon 
Transform 
(+ 
Metadata 
Extract 
& 
Embed) 
Workflow 
(AcOviO 
or 
JBPM) 
Person 
& 
Ownable 
TransacOon 
Import 
& 
Export 
QuickShare 
Tagging 
Audit 
& 
A+ribute 
Category 
Search 
(Index 
& 
Query) 
Tenant 
& 
RepoAdmin 
ContentUsage
Artifacts & Projects 
• Maven SDK! 
• Eclipse Projects! 
• …. 
• Remote-API 
• Repository 
• Data-Model 
• Core
Java Services 
• Refer to:! 
• Service Registry (ServiceRegistry.java) 
• Spring Configuration (*-context.xml) 
• public-services-context.xml 
• core-context.xml 
• Foundation services include:! 
• NodeService 
• ContentService 
• SearchService 
• ….
Spring config: *-context.xml 
core-context.xml 
<bean id="checkOutCheckInService" class="org.alfresco.repo.coci.CheckOutCheckInServiceImpl" init-method=" 
init”> 
<property name="nodeService" ref="nodeService" /> 
<property name="versionService" ref="versionService" /> 
<property name="ruleService" ref="ruleService" /> 
<property name="lockService" ref="LockService" /> 
<property name="ownableService" ref="OwnableService" /> 
<property name="copyService" ref="CopyService" /> 
<property name="authenticationService" ref="authenticationService" /> 
<property name="fileFolderService" ref="fileFolderService" /> 
<property name="policyComponent" ref="policyComponent" /> 
<property name="behaviourFilter" ref="policyBehaviourFilter" /> 
……. 
model-specific-services-context.xml 
<bean name="fileFolderService" class="org.alfresco.repo.model.filefolder.FileFolderServiceImpl" init-method=" 
init" parent="abstractBaseCopyService"> 
<property name="namespaceService"><ref bean="namespaceService" /></property> 
<property name="dictionaryService"><ref bean="dictionaryService" /></property> 
<property name="nodeService"><ref bean="nodeService" /></property> 
<property name="copyService"><ref bean="copyService" /></property> 
<property name="searchService"><ref bean="admSearchService" /></property> 
<property name="contentService"><ref bean="contentService" /></property> 
<property name="mimetypeService"><ref bean="mimetypeService" /></property> 
……
Models & Definitions … 
• Content Models! 
• contentModel.xml 
• dictionaryModel.xml 
• … *Model.xml 
• Security & Permissions! 
• public-services-security.xml 
• permissionDefinitions.xml
Data Access Objects (DAOs) 
• Java Interfaces & Implementations! 
• Package: org.alfresco.repo.domain 
• *DAO.java, *DAOImpl.java 
• MyBatis SQL mapper! 
• (fully) since 3.2.x - also used by Activiti 
• mostly common ANSI SQL 
• dialect-specific SQL (extended config builder) 
• see *SqlMap.xml 
• DomainTestSuite! 
• see DAO unit tests
DB types 
!!!!!!! 
Enterprise 
Community 
(*) subject to change - refer to certified stacks 
(**) dev/test only - see for example Alfresco SDK 2.0 (Maven-based) or Activiti 
(**)
Alf_* DB schema (partial) 
! 
Store 
Node 
Node_ProperOes 
Node_Aspects 
Child_Assoc 
(parent/child) 
Node_Assoc 
(source/target) 
Qname 
Content_Data 
Namespace 
TransacOon 
Server 
Locale 
Encoding 
Mimetype 
Content_Url
Alf_* DB schema
Micro-Services - overview
Micro-services overview 
• Architectural style! 
• suite of “small” independently deployable services 
• each is simple & specific – do “one” thing well 
• Distributed services & data! 
• separate loosely-coupled process 
• collaborate - (light-weight) communication 
• In theory, can be …! 
• independently: develop, deploy, scale, manage 
• heterogeneous teams, languages, stacks, protocols
Micro-services overview (cont) 
• Benefits & drawbacks! 
• Dev-QA-Ops spectrum 
• people, ownership, process, automation 
• Continuous: Integration, QA, Deployment, Monitoring 
• Encourages modular structure 
• API contracts & versioning 
• more moving parts, network hops (latency), …
Repo -> “micro” services 
Remote 
APIs 
Core 
Repository 
Services 
Search 
Server 
(eg. 
Solr) 
TransformaOon 
Server 
Process 
Server 
Search 
Transform 
Workflow
Micro-service – Java example 
• HTTP+JSON, Java, RESTful, ! 
• JAX-RS 
• Content + Context (Nodes & Metadata) 
• Dropwizard + Metrics! 
• Jetty, Jersey, Jackson 
• Spring Boot / MVC / Framework! 
• Jetty (or Tomcat), Jackson, Metrics …
Repo Core – Hello World #1 
GET http://localhost:9080/alfresco/stores! 
! 
[! 
{"storeRef":"archive://SpacesStore", "nodeRefId":"0add797f-9145-43e4-80d5- 
ba7b5fc254fa"},! 
{"storeRef":"system://system","nodeRefId":"aab26f2c-8bdd-465e-90ab-396d9187caa4"},! 
{"storeRef":"user:// 
alfrescoUserStore","nodeRefId":"0227c38d-77b7-4a31-922f-6040e8d39d1a"},! 
{"storeRef":"workspace://lightWeightVersionStore","nodeRefId":"7688b848-ba24-4a03- 
bb45-75ea6c7e51c5"},! 
{"storeRef":"workspace:// 
SpacesStore","nodeRefId":"79fd9404-1f12-4999-8d92-58df9309558b"},! 
{"storeRef":"workspace://version2Store","nodeRefId":"7cefae72-7809-4869-94cc-d65e37a762f1"} 
! 
]! 
List stores & root nodes
Repo Core – Hello World #2 
Repo Node Browser
Micro-service articles 
• Some examples ….! 
• http://martinfowler.com/articles/microservices.html 
• http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch. 
html 
• http://highscalability.com/blog/2014/7/28/the-great-microservices-vs- 
monolithic-apps-twitter-melee.html 
• ….
Smart Process Apps – example
Smart (Intelligent) Process Apps 
• Process-centric, Task-based! 
• Collaborative & Social ! 
• Case Management - Adaptable & Dynamic! 
• Context, Content, Control …! 
• Configurable (eg. per-tenant, per-app)! 
• Simple + Smart J!
SPA Platform Services (example) 
! 
Content / Metadata 
Workflow 
(Process / Task) 
Transform 
Search 
(Index / Query) 
Case/Review APIs + Services 
Identity 
Mgmt 
(Auth) 
App Def 
(Config) 
Streaming 
Services 
Content Storage 
Metadata DB 
Workflow DB 
Search Indexes 
Other DBs 
(RDBMS, NoSQL, …) 
App1 
App3 
App2 
App4
Smart Process App (example) 
!
Recap + Q&A
Recap 
• Repository Architecture! 
• Diving in deeper to the core! 
• Micro-services overview! 
• Intelligent Process App example! 
• Further details …!
Questions & Feedback 
• Thank you J! 
!
Further details 
• Source (SVN)! 
• Test code – unit & system! 
• http://docs.alfresco.com! 
• Add-Ons & Extensions! 
• Wiki, Forums, Blogs, JIRA! 
• Developer books! 
• Training courses!

Contenu connexe

Tendances

Alfresco Backup and Disaster Recovery White Paper
Alfresco Backup and Disaster Recovery White PaperAlfresco Backup and Disaster Recovery White Paper
Alfresco Backup and Disaster Recovery White PaperToni de la Fuente
 
Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019J V
 
How to migrate from Alfresco Search Services to Alfresco SearchEnterprise
How to migrate from Alfresco Search Services to Alfresco SearchEnterpriseHow to migrate from Alfresco Search Services to Alfresco SearchEnterprise
How to migrate from Alfresco Search Services to Alfresco SearchEnterpriseAngel Borroy López
 
Scale your Alfresco Solutions
Scale your Alfresco Solutions Scale your Alfresco Solutions
Scale your Alfresco Solutions Alfresco Software
 
(Re)Indexing Large Repositories in Alfresco
(Re)Indexing Large Repositories in Alfresco(Re)Indexing Large Repositories in Alfresco
(Re)Indexing Large Repositories in AlfrescoAngel Borroy López
 
A Rusty introduction to Apache Arrow and how it applies to a time series dat...
A Rusty introduction to Apache Arrow and how it applies to a  time series dat...A Rusty introduction to Apache Arrow and how it applies to a  time series dat...
A Rusty introduction to Apache Arrow and how it applies to a time series dat...Andrew Lamb
 
The InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLThe InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLMorgan Tocker
 
Bulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoBulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoRichard McKnight
 
Alfresco Security Best Practices Guide
Alfresco Security Best Practices GuideAlfresco Security Best Practices Guide
Alfresco Security Best Practices GuideToni de la Fuente
 
Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみようAlfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみようJun Terashita
 
Intro to the Alfresco Public API
Intro to the Alfresco Public APIIntro to the Alfresco Public API
Intro to the Alfresco Public APIJeff Potts
 
Working with JSON Data in PostgreSQL vs. MongoDB
Working with JSON Data in PostgreSQL vs. MongoDBWorking with JSON Data in PostgreSQL vs. MongoDB
Working with JSON Data in PostgreSQL vs. MongoDBScaleGrid.io
 
MySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptxMySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptxNeoClova
 
ELK: Moose-ively scaling your log system
ELK: Moose-ively scaling your log systemELK: Moose-ively scaling your log system
ELK: Moose-ively scaling your log systemAvleen Vig
 
Alfresco Bulk Import toolのご紹介
Alfresco Bulk Import toolのご紹介Alfresco Bulk Import toolのご紹介
Alfresco Bulk Import toolのご紹介MoritakaSoma
 
Performance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and UnderscoresPerformance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and UnderscoresJitendra Singh
 
Performance Tuning Oracle Weblogic Server 12c
Performance Tuning Oracle Weblogic Server 12cPerformance Tuning Oracle Weblogic Server 12c
Performance Tuning Oracle Weblogic Server 12cAjith Narayanan
 
Exciting New Alfresco REST APIs
Exciting New Alfresco REST APIsExciting New Alfresco REST APIs
Exciting New Alfresco REST APIsJ V
 

Tendances (20)

Alfresco Backup and Disaster Recovery White Paper
Alfresco Backup and Disaster Recovery White PaperAlfresco Backup and Disaster Recovery White Paper
Alfresco Backup and Disaster Recovery White Paper
 
Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019
 
How to migrate from Alfresco Search Services to Alfresco SearchEnterprise
How to migrate from Alfresco Search Services to Alfresco SearchEnterpriseHow to migrate from Alfresco Search Services to Alfresco SearchEnterprise
How to migrate from Alfresco Search Services to Alfresco SearchEnterprise
 
Alfresco Certificates
Alfresco Certificates Alfresco Certificates
Alfresco Certificates
 
Scale your Alfresco Solutions
Scale your Alfresco Solutions Scale your Alfresco Solutions
Scale your Alfresco Solutions
 
REST API Design
REST API DesignREST API Design
REST API Design
 
(Re)Indexing Large Repositories in Alfresco
(Re)Indexing Large Repositories in Alfresco(Re)Indexing Large Repositories in Alfresco
(Re)Indexing Large Repositories in Alfresco
 
A Rusty introduction to Apache Arrow and how it applies to a time series dat...
A Rusty introduction to Apache Arrow and how it applies to a  time series dat...A Rusty introduction to Apache Arrow and how it applies to a  time series dat...
A Rusty introduction to Apache Arrow and how it applies to a time series dat...
 
The InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLThe InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQL
 
Bulk Export Tool for Alfresco
Bulk Export Tool for AlfrescoBulk Export Tool for Alfresco
Bulk Export Tool for Alfresco
 
Alfresco Security Best Practices Guide
Alfresco Security Best Practices GuideAlfresco Security Best Practices Guide
Alfresco Security Best Practices Guide
 
Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみようAlfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
Alfresco勉強会#26 Alfresco SDK + Eclipseで開発してみよう
 
Intro to the Alfresco Public API
Intro to the Alfresco Public APIIntro to the Alfresco Public API
Intro to the Alfresco Public API
 
Working with JSON Data in PostgreSQL vs. MongoDB
Working with JSON Data in PostgreSQL vs. MongoDBWorking with JSON Data in PostgreSQL vs. MongoDB
Working with JSON Data in PostgreSQL vs. MongoDB
 
MySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptxMySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptx
 
ELK: Moose-ively scaling your log system
ELK: Moose-ively scaling your log systemELK: Moose-ively scaling your log system
ELK: Moose-ively scaling your log system
 
Alfresco Bulk Import toolのご紹介
Alfresco Bulk Import toolのご紹介Alfresco Bulk Import toolのご紹介
Alfresco Bulk Import toolのご紹介
 
Performance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and UnderscoresPerformance Stability, Tips and Tricks and Underscores
Performance Stability, Tips and Tricks and Underscores
 
Performance Tuning Oracle Weblogic Server 12c
Performance Tuning Oracle Weblogic Server 12cPerformance Tuning Oracle Weblogic Server 12c
Performance Tuning Oracle Weblogic Server 12c
 
Exciting New Alfresco REST APIs
Exciting New Alfresco REST APIsExciting New Alfresco REST APIs
Exciting New Alfresco REST APIs
 

Similaire à Deep Dive: Alfresco Core Repository (... embedded in a micro-services style architecture)

PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfAlfresco Software
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfAlfresco Software
 
PLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring SurfPLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring SurfAlfresco Software
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesAlfresco Software
 
Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platformAlfresco Software
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and ActivatorKevin Webber
 
PLAT-16 Using Enterprise Content in Grails
PLAT-16 Using Enterprise Content in GrailsPLAT-16 Using Enterprise Content in Grails
PLAT-16 Using Enterprise Content in GrailsAlfresco Software
 
Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An IntroductionThorsten Kamann
 
Dependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesDependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesMarcel Offermans
 
RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016Ortus Solutions, Corp
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOpsAlbert Wong
 
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
 
Terraform - Taming Modern Clouds
Terraform  - Taming Modern CloudsTerraform  - Taming Modern Clouds
Terraform - Taming Modern CloudsNic Jackson
 
Road to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoopsRoad to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoopsGianluca Varisco
 
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Symphony Software Foundation
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingThorsten Kamann
 
PowerPoint Presentation
PowerPoint PresentationPowerPoint Presentation
PowerPoint Presentationlalitjangra9
 
Introduction to Laravel
Introduction to LaravelIntroduction to Laravel
Introduction to LaravelEli Wheaton
 

Similaire à Deep Dive: Alfresco Core Repository (... embedded in a micro-services style architecture) (20)

PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
 
PLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring SurfPLAT-7 Spring Web Scripts and Spring Surf
PLAT-7 Spring Web Scripts and Spring Surf
 
PLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring SurfPLAT-8 Spring Web Scripts and Spring Surf
PLAT-8 Spring Web Scripts and Spring Surf
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best Practices
 
Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platform
 
Play Framework and Activator
Play Framework and ActivatorPlay Framework and Activator
Play Framework and Activator
 
PLAT-16 Using Enterprise Content in Grails
PLAT-16 Using Enterprise Content in GrailsPLAT-16 Using Enterprise Content in Grails
PLAT-16 Using Enterprise Content in Grails
 
Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An Introduction
 
Dependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesDependencies, dependencies, dependencies
Dependencies, dependencies, dependencies
 
Rest ful tools for lazy experts
Rest ful tools for lazy expertsRest ful tools for lazy experts
Rest ful tools for lazy experts
 
RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016RESTFul Tools For Lazy Experts - CFSummit 2016
RESTFul Tools For Lazy Experts - CFSummit 2016
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOps
 
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...
 
Terraform - Taming Modern Clouds
Terraform  - Taming Modern CloudsTerraform  - Taming Modern Clouds
Terraform - Taming Modern Clouds
 
Road to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoopsRoad to Opscon (Pisa '15) - DevOoops
Road to Opscon (Pisa '15) - DevOoops
 
JSF2
JSF2JSF2
JSF2
 
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
Gabriele Columbro - Maurizio Pillitu - Get your Alfresco project from Zero to...
 
Spring 3 - Der dritte Frühling
Spring 3 - Der dritte FrühlingSpring 3 - Der dritte Frühling
Spring 3 - Der dritte Frühling
 
PowerPoint Presentation
PowerPoint PresentationPowerPoint Presentation
PowerPoint Presentation
 
Introduction to Laravel
Introduction to LaravelIntroduction to Laravel
Introduction to Laravel
 

Dernier

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
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
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Dernier (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Deep Dive: Alfresco Core Repository (... embedded in a micro-services style architecture)

  • 1. Deep Dive – Alfresco Core Repository … embedded in a micro-services style architecture! Credits: h+p://www.redbullstratos.com/ Jan Vonka London, October 2014
  • 2. Intro Jan Vonka! • Senior Software Engineer @ Alfresco • Core Repo’ Services • Cloud & Hybrid Platform • Fly balloons
  • 3. Deep Dive: Core Repository ! • Repository Architecture! • Diving in to the core … • Micro-Services overview ! • Intelligent Process App example …
  • 4. Alfresco … ContentContext Collaborate Control Connect Cloud Customise Configure
  • 5. Why should you dive in ? • Spectrum of solutions! • Out-Of-The-Box => Configure => Integrate • Extend => Customise => Embed (“modular”) Gain deeper understanding! • Develop, test & contribute • Troubleshoot issues – functional, perf’, …
  • 6. Caveat • Use the Alfresco APIs & SDKs! • Well-defined, supported, On-Premise & Cloud • CMIS 1.1 & REST • Alfresco SDK 2.0 (Maven + Java) • Mobile SDK (iOS & Android) • Custom (JavaScript or Java)! • Repo extensions – WebScripts + (new) Services • Content Models - Policies & Behaviours
  • 8. Repo Architecture Overview Web Apps Mobile Apps Desktop Apps REST / WebScripts CMIS Protocols Sync Share Mobile SDK Alfresco Office Services (AOS)
  • 9. Anatomy of the Repo !Alfresco Repository Remote APIs (CMIS & WebScripts) Subsystems Core Foundation Services DB Storage (Tables) Protocols (WebDAV, SPP, IMAP, FTP, CIFS, SMTP, LDAP…) Content Models + Behaviours Collaborative Services Transactions + Security ThirdParty Libraries & Frameworks: including Spring Framework+Security / MyBatis (JDBC) / Solr+Lucene / Hazelcast Content/Object Storage (Binary Files) Search Storage (Indexes)
  • 11. Alfresco *Services (some) FileFolder WebScript Script & Template (eg. JS & FM) Content & Mimetype Node & Version Permission, AuthenOcaOon & Authority DicOonary & Namespace CMIS Protocols (WebDAV, SPP, IMAP, FTP, CIFS, SMTP, LDAP…) Site CheckOutCheckIn & Lock Copy Thumbnail & RendiOon Rule & AcOon AcOvity & SubscripOon Transform (+ Metadata Extract & Embed) Workflow (AcOviO or JBPM) Person & Ownable TransacOon Import & Export QuickShare Tagging Audit & A+ribute Category Search (Index & Query) Tenant & RepoAdmin ContentUsage
  • 12. Artifacts & Projects • Maven SDK! • Eclipse Projects! • …. • Remote-API • Repository • Data-Model • Core
  • 13. Java Services • Refer to:! • Service Registry (ServiceRegistry.java) • Spring Configuration (*-context.xml) • public-services-context.xml • core-context.xml • Foundation services include:! • NodeService • ContentService • SearchService • ….
  • 14. Spring config: *-context.xml core-context.xml <bean id="checkOutCheckInService" class="org.alfresco.repo.coci.CheckOutCheckInServiceImpl" init-method=" init”> <property name="nodeService" ref="nodeService" /> <property name="versionService" ref="versionService" /> <property name="ruleService" ref="ruleService" /> <property name="lockService" ref="LockService" /> <property name="ownableService" ref="OwnableService" /> <property name="copyService" ref="CopyService" /> <property name="authenticationService" ref="authenticationService" /> <property name="fileFolderService" ref="fileFolderService" /> <property name="policyComponent" ref="policyComponent" /> <property name="behaviourFilter" ref="policyBehaviourFilter" /> ……. model-specific-services-context.xml <bean name="fileFolderService" class="org.alfresco.repo.model.filefolder.FileFolderServiceImpl" init-method=" init" parent="abstractBaseCopyService"> <property name="namespaceService"><ref bean="namespaceService" /></property> <property name="dictionaryService"><ref bean="dictionaryService" /></property> <property name="nodeService"><ref bean="nodeService" /></property> <property name="copyService"><ref bean="copyService" /></property> <property name="searchService"><ref bean="admSearchService" /></property> <property name="contentService"><ref bean="contentService" /></property> <property name="mimetypeService"><ref bean="mimetypeService" /></property> ……
  • 15. Models & Definitions … • Content Models! • contentModel.xml • dictionaryModel.xml • … *Model.xml • Security & Permissions! • public-services-security.xml • permissionDefinitions.xml
  • 16. Data Access Objects (DAOs) • Java Interfaces & Implementations! • Package: org.alfresco.repo.domain • *DAO.java, *DAOImpl.java • MyBatis SQL mapper! • (fully) since 3.2.x - also used by Activiti • mostly common ANSI SQL • dialect-specific SQL (extended config builder) • see *SqlMap.xml • DomainTestSuite! • see DAO unit tests
  • 17. DB types !!!!!!! Enterprise Community (*) subject to change - refer to certified stacks (**) dev/test only - see for example Alfresco SDK 2.0 (Maven-based) or Activiti (**)
  • 18. Alf_* DB schema (partial) ! Store Node Node_ProperOes Node_Aspects Child_Assoc (parent/child) Node_Assoc (source/target) Qname Content_Data Namespace TransacOon Server Locale Encoding Mimetype Content_Url
  • 21. Micro-services overview • Architectural style! • suite of “small” independently deployable services • each is simple & specific – do “one” thing well • Distributed services & data! • separate loosely-coupled process • collaborate - (light-weight) communication • In theory, can be …! • independently: develop, deploy, scale, manage • heterogeneous teams, languages, stacks, protocols
  • 22. Micro-services overview (cont) • Benefits & drawbacks! • Dev-QA-Ops spectrum • people, ownership, process, automation • Continuous: Integration, QA, Deployment, Monitoring • Encourages modular structure • API contracts & versioning • more moving parts, network hops (latency), …
  • 23. Repo -> “micro” services Remote APIs Core Repository Services Search Server (eg. Solr) TransformaOon Server Process Server Search Transform Workflow
  • 24. Micro-service – Java example • HTTP+JSON, Java, RESTful, ! • JAX-RS • Content + Context (Nodes & Metadata) • Dropwizard + Metrics! • Jetty, Jersey, Jackson • Spring Boot / MVC / Framework! • Jetty (or Tomcat), Jackson, Metrics …
  • 25. Repo Core – Hello World #1 GET http://localhost:9080/alfresco/stores! ! [! {"storeRef":"archive://SpacesStore", "nodeRefId":"0add797f-9145-43e4-80d5- ba7b5fc254fa"},! {"storeRef":"system://system","nodeRefId":"aab26f2c-8bdd-465e-90ab-396d9187caa4"},! {"storeRef":"user:// alfrescoUserStore","nodeRefId":"0227c38d-77b7-4a31-922f-6040e8d39d1a"},! {"storeRef":"workspace://lightWeightVersionStore","nodeRefId":"7688b848-ba24-4a03- bb45-75ea6c7e51c5"},! {"storeRef":"workspace:// SpacesStore","nodeRefId":"79fd9404-1f12-4999-8d92-58df9309558b"},! {"storeRef":"workspace://version2Store","nodeRefId":"7cefae72-7809-4869-94cc-d65e37a762f1"} ! ]! List stores & root nodes
  • 26. Repo Core – Hello World #2 Repo Node Browser
  • 27. Micro-service articles • Some examples ….! • http://martinfowler.com/articles/microservices.html • http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch. html • http://highscalability.com/blog/2014/7/28/the-great-microservices-vs- monolithic-apps-twitter-melee.html • ….
  • 28. Smart Process Apps – example
  • 29. Smart (Intelligent) Process Apps • Process-centric, Task-based! • Collaborative & Social ! • Case Management - Adaptable & Dynamic! • Context, Content, Control …! • Configurable (eg. per-tenant, per-app)! • Simple + Smart J!
  • 30. SPA Platform Services (example) ! Content / Metadata Workflow (Process / Task) Transform Search (Index / Query) Case/Review APIs + Services Identity Mgmt (Auth) App Def (Config) Streaming Services Content Storage Metadata DB Workflow DB Search Indexes Other DBs (RDBMS, NoSQL, …) App1 App3 App2 App4
  • 31. Smart Process App (example) !
  • 33. Recap • Repository Architecture! • Diving in deeper to the core! • Micro-services overview! • Intelligent Process App example! • Further details …!
  • 34. Questions & Feedback • Thank you J! !
  • 35. Further details • Source (SVN)! • Test code – unit & system! • http://docs.alfresco.com! • Add-Ons & Extensions! • Wiki, Forums, Blogs, JIRA! • Developer books! • Training courses!