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

[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
Alfresco Security Best Practices Guide
Alfresco Security Best Practices GuideAlfresco Security Best Practices Guide
Alfresco Security Best Practices GuideToni de la Fuente
 
Terraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntTerraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntAnton Babenko
 
Grafana optimization for Prometheus
Grafana optimization for PrometheusGrafana optimization for Prometheus
Grafana optimization for PrometheusMitsuhiro Tanda
 
Extending Spark With Java Agent (handout)
Extending Spark With Java Agent (handout)Extending Spark With Java Agent (handout)
Extending Spark With Java Agent (handout)Jaroslav Bachorik
 
Hashicorp Vault Open Source vs Enterprise
Hashicorp Vault Open Source vs EnterpriseHashicorp Vault Open Source vs Enterprise
Hashicorp Vault Open Source vs EnterpriseStenio Ferreira
 
Parallelizing with Apache Spark in Unexpected Ways
Parallelizing with Apache Spark in Unexpected WaysParallelizing with Apache Spark in Unexpected Ways
Parallelizing with Apache Spark in Unexpected WaysDatabricks
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to PrometheusJulien Pivotto
 
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...Edureka!
 
MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)Lucas Jellema
 
Continuous ETL Testing for Pentaho Data Integration (kettle)
Continuous ETL Testing for Pentaho Data Integration (kettle)Continuous ETL Testing for Pentaho Data Integration (kettle)
Continuous ETL Testing for Pentaho Data Integration (kettle)Slawomir Chodnicki
 
What to Expect From Oracle database 19c
What to Expect From Oracle database 19cWhat to Expect From Oracle database 19c
What to Expect From Oracle database 19cMaria Colgan
 
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...StreamNative
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudAmazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudNoritaka Sekiyama
 
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...StampedeCon
 
Prometheus – a next-gen Monitoring System
Prometheus – a next-gen Monitoring SystemPrometheus – a next-gen Monitoring System
Prometheus – a next-gen Monitoring SystemFabian Reinartz
 
18 Months of Event Sourcing and CQRS Using Microsoft Orleans
18 Months of Event Sourcing and CQRS Using Microsoft Orleans18 Months of Event Sourcing and CQRS Using Microsoft Orleans
18 Months of Event Sourcing and CQRS Using Microsoft OrleansAndy Hoyle
 

Tendances (20)

[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
Alfresco Security Best Practices Guide
Alfresco Security Best Practices GuideAlfresco Security Best Practices Guide
Alfresco Security Best Practices Guide
 
Terraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntTerraform 0.12 + Terragrunt
Terraform 0.12 + Terragrunt
 
Grafana optimization for Prometheus
Grafana optimization for PrometheusGrafana optimization for Prometheus
Grafana optimization for Prometheus
 
Extending Spark With Java Agent (handout)
Extending Spark With Java Agent (handout)Extending Spark With Java Agent (handout)
Extending Spark With Java Agent (handout)
 
Apache Nifi Crash Course
Apache Nifi Crash CourseApache Nifi Crash Course
Apache Nifi Crash Course
 
Hashicorp Vault Open Source vs Enterprise
Hashicorp Vault Open Source vs EnterpriseHashicorp Vault Open Source vs Enterprise
Hashicorp Vault Open Source vs Enterprise
 
Parallelizing with Apache Spark in Unexpected Ways
Parallelizing with Apache Spark in Unexpected WaysParallelizing with Apache Spark in Unexpected Ways
Parallelizing with Apache Spark in Unexpected Ways
 
Masterclass - Redshift
Masterclass - RedshiftMasterclass - Redshift
Masterclass - Redshift
 
Introduction to Prometheus
Introduction to PrometheusIntroduction to Prometheus
Introduction to Prometheus
 
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...
Kibana Tutorial | Kibana Dashboard Tutorial | Kibana Elasticsearch | ELK Stac...
 
MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)MeetUp Monitoring with Prometheus and Grafana (September 2018)
MeetUp Monitoring with Prometheus and Grafana (September 2018)
 
Continuous ETL Testing for Pentaho Data Integration (kettle)
Continuous ETL Testing for Pentaho Data Integration (kettle)Continuous ETL Testing for Pentaho Data Integration (kettle)
Continuous ETL Testing for Pentaho Data Integration (kettle)
 
What to Expect From Oracle database 19c
What to Expect From Oracle database 19cWhat to Expect From Oracle database 19c
What to Expect From Oracle database 19c
 
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
Change Data Capture to Data Lakes Using Apache Pulsar and Apache Hudi - Pulsa...
 
Apache NiFi Crash Course Intro
Apache NiFi Crash Course IntroApache NiFi Crash Course Intro
Apache NiFi Crash Course Intro
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudAmazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
 
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...
Choosing an HDFS data storage format- Avro vs. Parquet and more - StampedeCon...
 
Prometheus – a next-gen Monitoring System
Prometheus – a next-gen Monitoring SystemPrometheus – a next-gen Monitoring System
Prometheus – a next-gen Monitoring System
 
18 Months of Event Sourcing and CQRS Using Microsoft Orleans
18 Months of Event Sourcing and CQRS Using Microsoft Orleans18 Months of Event Sourcing and CQRS Using Microsoft Orleans
18 Months of Event Sourcing and CQRS Using Microsoft Orleans
 

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
 

Plus de J V

Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019J V
 
Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)J V
 
Exciting New Alfresco REST APIs
Exciting New Alfresco REST APIsExciting New Alfresco REST APIs
Exciting New Alfresco REST APIsJ V
 
Alfresco 5.2 REST API
Alfresco 5.2 REST APIAlfresco 5.2 REST API
Alfresco 5.2 REST APIJ V
 
Alfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you thinkAlfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you thinkJ V
 
Alfresco: Implementing secure single sign on (SSO) with OpenSAML
Alfresco: Implementing secure single sign on (SSO) with OpenSAMLAlfresco: Implementing secure single sign on (SSO) with OpenSAML
Alfresco: Implementing secure single sign on (SSO) with OpenSAMLJ V
 
Alfresco Content Modelling and Policy Behaviours
Alfresco Content Modelling and Policy BehavioursAlfresco Content Modelling and Policy Behaviours
Alfresco Content Modelling and Policy BehavioursJ V
 

Plus de J V (7)

Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019Alfresco Transform Service DevCon 2019
Alfresco Transform Service DevCon 2019
 
Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)Integrating Alfresco @ Scale (via event-driven micro-services)
Integrating Alfresco @ Scale (via event-driven micro-services)
 
Exciting New Alfresco REST APIs
Exciting New Alfresco REST APIsExciting New Alfresco REST APIs
Exciting New Alfresco REST APIs
 
Alfresco 5.2 REST API
Alfresco 5.2 REST APIAlfresco 5.2 REST API
Alfresco 5.2 REST API
 
Alfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you thinkAlfresco REST API of the future ... is closer than you think
Alfresco REST API of the future ... is closer than you think
 
Alfresco: Implementing secure single sign on (SSO) with OpenSAML
Alfresco: Implementing secure single sign on (SSO) with OpenSAMLAlfresco: Implementing secure single sign on (SSO) with OpenSAML
Alfresco: Implementing secure single sign on (SSO) with OpenSAML
 
Alfresco Content Modelling and Policy Behaviours
Alfresco Content Modelling and Policy BehavioursAlfresco Content Modelling and Policy Behaviours
Alfresco Content Modelling and Policy Behaviours
 

Dernier

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Dernier (20)

Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

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!