The ECM world from the
point of view of Alfresco
You may remember me
● Open Source ECM Specialist at Sourcesence
● Author and Technical Reviewer at Packt Publishing
○ Alfresco 3 Web Services (2010)
○ GateIn Cookbook (2012)
● Alfresco Community (nickname OpenPj)
○ Alfresco Wiki Gardener
○ Global Moderator of the italian forum
○ Top 10 supporter (english and italian)
● PMC Member and Mentor at the Apache Software Foundation
○ Mentor for the Google Summer Of Code 2013
● JBoss Community
○ Content editor for jboss.org
○ Project Leader and Committer for PortletSwap (JBoss Portal)
Overview
● What is Enterprise Content Management (ECM)?
○ Java Content Repository (JCR)
● What is Alfresco?
○ Architecture
○ Spaces and Rules
○ RESTful API
● Demo
● Resources
Enterprise Content Management
Enterprise content management (ECM) is a formalized means of
organizing and storing an organization's documents, and other
content, that relate to the organization's processes. The term
encompasses strategies, methods, and tools used throughout the
lifecycle of the content.
Wikipedia
http://en.wikipedia.org/wiki/Enterprise_content_management
What is a repository?
● contents are kept is an organized way
○ ER model is the old way
○ Node graph is the new way
■ properties (metadata)
■ associations
■ renditions
● is from Latin repositorium
○ table of service
○ vessel
○ chamber
○ where to keep and find your things!!!
Enterprise Content Management
ECM

Enterprise services

Public API

Repository
Storage

Users +
groups
(LDAP, IDM)

Workflow
Engine
What is a repository? - You use it!!!
● Some simple examples:
○ SMTP servers
○ Google Drive
○ Dropbox

● Some Open Source repository implementations:
○ exoJCR
○ Apache JackRabbit
● Some Open Source ECM systems for critical usage:
○ Alfresco
○ Nuxeo
○ Hippo
What is a repository? - Decoration

apply
metadata

CMIS
JCR
REST
SOAP
IMAP
EMAIL
FTP

Repository

retrieve content using
metadata
Query Languages:
CMIS
JCR SQL
XPath
Lucene
Full Text (Google style)

Indexes
What is a repository? - Architecture
APIs (CMIS, REST, FTP, WebDAV, IMAP)
Model
Storage
Content Store
+
Indexes

Database
What is a repository? - Model
● different point of view of how managing data
○ no more Relational databases (ER)
● based on the JCR Repository Model (JSR-283)
○ workspaces
○ identifiers
○ users
○ nodes and node types (contents)
■ properties and property types
■ associations (shared nodes)
What is a repository? - Model
● A node is a generic content stored in a repository
○ type
○ properties
○ associations
○ binary streams (optional)
■ renditions
■ text document
■ Video
■ Image
What is a repository? - Graph
Properties
(metadata):

Type
Node

- name
- description
- mimetype
- tags
- categories
Renditions

Binary 1

Binary 2

Binary 3
What is a repository? - JCR Model
Repository
Workspace
1
Workspace
2
Workspace
3

Root node

A
D

B
E

C
G
Why use a repository?
● you can scale out easily
● storing very large amounts of data
● storing simple data structures, such as simple JSON
● looking up data by keys rather than using queries
● searching for data based upon relevance
● evolving schemas and/or data structures
● caching data in-memory for performance
Alfresco
● Open Source ^__^
● Community Edition
○ new features
○ wide community support
● Enterprise Edition
○ supported with SLA
○ complete release test
● Cloud-ready
● Collaboration
● CMIS
Alfresco
Alfresco Storage Architecture
JVM
Alfresco

Database

File System
Binari

File System
Indici
Alfresco - Concepts
● Aspects
○ an aspect is a tag that can decorate contents
■ adding new properties
■ adding new behaviors (trigger)
● WebScripts
○ create your own REST API
● Collaboration & Security
Alfresco - Concepts - Spaces
● Spaces
○ contains contents
○ rules for executing actions
■ event
■ actions
Alfresco - Concepts - Spaces
● Spaces can be used for implementing a specific ECM
design pattern such as Drop Zones
DEMO
Resources
Homepage:
http://www.alfresco.com
Wiki:
http://wiki.alfresco.com
Documentation:
http://docs.alfresco.com
Thank you for your
attention!

Questions?

http://www.open4dev.com

The ECM world from the point of view of Alfresco - Linux Day 2013 - Rome

  • 1.
    The ECM worldfrom the point of view of Alfresco
  • 2.
    You may rememberme ● Open Source ECM Specialist at Sourcesence ● Author and Technical Reviewer at Packt Publishing ○ Alfresco 3 Web Services (2010) ○ GateIn Cookbook (2012) ● Alfresco Community (nickname OpenPj) ○ Alfresco Wiki Gardener ○ Global Moderator of the italian forum ○ Top 10 supporter (english and italian) ● PMC Member and Mentor at the Apache Software Foundation ○ Mentor for the Google Summer Of Code 2013 ● JBoss Community ○ Content editor for jboss.org ○ Project Leader and Committer for PortletSwap (JBoss Portal)
  • 3.
    Overview ● What isEnterprise Content Management (ECM)? ○ Java Content Repository (JCR) ● What is Alfresco? ○ Architecture ○ Spaces and Rules ○ RESTful API ● Demo ● Resources
  • 4.
    Enterprise Content Management Enterprisecontent management (ECM) is a formalized means of organizing and storing an organization's documents, and other content, that relate to the organization's processes. The term encompasses strategies, methods, and tools used throughout the lifecycle of the content. Wikipedia http://en.wikipedia.org/wiki/Enterprise_content_management
  • 5.
    What is arepository? ● contents are kept is an organized way ○ ER model is the old way ○ Node graph is the new way ■ properties (metadata) ■ associations ■ renditions ● is from Latin repositorium ○ table of service ○ vessel ○ chamber ○ where to keep and find your things!!!
  • 6.
    Enterprise Content Management ECM Enterpriseservices Public API Repository Storage Users + groups (LDAP, IDM) Workflow Engine
  • 7.
    What is arepository? - You use it!!! ● Some simple examples: ○ SMTP servers ○ Google Drive ○ Dropbox ● Some Open Source repository implementations: ○ exoJCR ○ Apache JackRabbit ● Some Open Source ECM systems for critical usage: ○ Alfresco ○ Nuxeo ○ Hippo
  • 8.
    What is arepository? - Decoration apply metadata CMIS JCR REST SOAP IMAP EMAIL FTP Repository retrieve content using metadata Query Languages: CMIS JCR SQL XPath Lucene Full Text (Google style) Indexes
  • 9.
    What is arepository? - Architecture APIs (CMIS, REST, FTP, WebDAV, IMAP) Model Storage Content Store + Indexes Database
  • 10.
    What is arepository? - Model ● different point of view of how managing data ○ no more Relational databases (ER) ● based on the JCR Repository Model (JSR-283) ○ workspaces ○ identifiers ○ users ○ nodes and node types (contents) ■ properties and property types ■ associations (shared nodes)
  • 11.
    What is arepository? - Model ● A node is a generic content stored in a repository ○ type ○ properties ○ associations ○ binary streams (optional) ■ renditions ■ text document ■ Video ■ Image
  • 12.
    What is arepository? - Graph Properties (metadata): Type Node - name - description - mimetype - tags - categories Renditions Binary 1 Binary 2 Binary 3
  • 13.
    What is arepository? - JCR Model Repository Workspace 1 Workspace 2 Workspace 3 Root node A D B E C G
  • 14.
    Why use arepository? ● you can scale out easily ● storing very large amounts of data ● storing simple data structures, such as simple JSON ● looking up data by keys rather than using queries ● searching for data based upon relevance ● evolving schemas and/or data structures ● caching data in-memory for performance
  • 15.
    Alfresco ● Open Source^__^ ● Community Edition ○ new features ○ wide community support ● Enterprise Edition ○ supported with SLA ○ complete release test ● Cloud-ready ● Collaboration ● CMIS
  • 16.
  • 17.
  • 18.
    Alfresco - Concepts ●Aspects ○ an aspect is a tag that can decorate contents ■ adding new properties ■ adding new behaviors (trigger) ● WebScripts ○ create your own REST API ● Collaboration & Security
  • 19.
    Alfresco - Concepts- Spaces ● Spaces ○ contains contents ○ rules for executing actions ■ event ■ actions
  • 20.
    Alfresco - Concepts- Spaces ● Spaces can be used for implementing a specific ECM design pattern such as Drop Zones
  • 21.
  • 22.
  • 23.
    Thank you foryour attention! Questions? http://www.open4dev.com