typo3 and cmis
DESCRIPTION
This presentation outlines on how CMIS will bei implemented in TYPO3 CMS during the EU funded ForgetIT Project.TRANSCRIPT
Meeting, Date, Location
Content Management Interoperability Services
(CMIS)
An open standard, ensuring CMS interoperability
Abstraction layer
Defined protocols and domain model
Common data model with generic properties
T3CON14 Berlin
CMIS Benefits
Easy to learn and adopt
Supported by the widest range of vendors and user organizations (e.g. Alfresco, Sharepoint, Magnolia, Adobe, Nuxeo)
End users can use one application to access / exchange documents between various systems supported CMIS
Libraries for Java, Python, .NET, Objective-C and PHP
Standard service API
Meeting, Date, Location
CMIS Use Cases
Repository to Repository: CMIS talk directly to each other
Application to Repository: E.g. End user gets information from a mobile website via CMIS
!
Meeting, Date, Location
Services
Services Description
Repository Services Used to get information and capabilities of a repository
Navigation Services Used to traverse the repository‘s folder hierarchy
Object Services Used to perform CRUD operations on objects
Multi-filing Services If the repository supports storing an object in more than one folder, this service handles it
Discovery Services Used to handle queries
Versioning Services Used to checkout documents and work with document versions
Relationship Services Used to query an object for its relationships
Policy Services Used to apply, remove, and query for policies
ACL Services Used to manage the ACL of an object
T3CON14 Berlin
Web Services Binding
Maps CMIS operations directly to SOAP calls (Simple Object Access Protocol)
Covers entire CMIS specification
Authentication:
WS-Security 1.1 or Username Token Profile 1.1
other authentication mechanisms
CMIS repository needs MTOM (Message Transmission Optimization Mechanism) for content transfer
T3CON14 Berlin
AtomPub Binding
Built on the AtomPub specification (mainly designed for publishing and simple editing of resources)
Extends AtomPub to support features like hierarchies, versioning, renditions, permissions, and so on.
Follows REST paradigm by using HTTP methods GET, POST, PUT, DELETE
Recommended Authentication:
HTTP Basic Authentication in conjunction with SSL
T3CON14 Berlin
AtomPub Binding
Disadvantages:
Covers not the entire specification (e.g. does not support createDocumentFromSource())
Mostly needs two HTTP calls to access the content of a document: get document’s Atom entry which contains the AtomPub Link to the content
T3CON14 Berlin
Browser Binding
Based on JSON (JavaScript Object Notation)
HTTP methods:
GET (read), POST (create, update, delete)
Covers entire specification
Recommended authentication:
HTTP Basic Authentication for non-browser Clients
Authentication with Tokens for browser Clients
T3CON14 Berlin
Browser Binding Benefits
More compact and performant than AtomPub and Web Services Binding
Suitable for use in mobile and browser apps
Additional client libraries are not necessary
T3CON14 Berlin
Why we need CMIS 1.1 (1/2)
Main new features:
Type Mutability: CMIS clients can create, modify and delete type definitions (see Data Model)
Secondary object types: set of properties that can be dynamically added and removed from CMIS objects
Browser Binding
Supports bulk property updates with a single service call
T3CON14 Berlin
Why we need CMIS 1.1 (2/2)
Main new features:
New Item object type: exposes any other object types via CMIS that do not fit the model's definition for document, folder, relationship or policy
Append to a content stream: CMIS 1.1 allows to move large
files in chunks into the repository
T3CON14 Berlin
Current status
Several CMIS Extensions for TYPO3 CMS already available, BUT
they are not be maintained/updated since years
do support only CMIS 1.0
Disadvantages of existing CMIS library for PHP (Apache Chemistry)
Not CMIS 1.1. compatible
Not object-oriented
T3CON14 Berlin
Table configuration array (TCA)
Database field definition beyond SQL possibilities
type of a field (text, date, select field, checkbox, etc.)
what field should be displayed in the Backend and in which layout
how to validate the content of the field (required, integer, etc.)
define relation between records / TCA tables
highly extensible to implement own validators or special field types
T3CON14 Berlin
File abstraction layer (FAL)
Abstract API to store files
Support for multiple „storages“
Each storage has a driver that communicates with the target system
Available Drivers and ideas: Local, WebDAV, Dropbox, FTP, Amazon S3, Flickr, Database, CMIS
T3CON14 Berlin
Neos Nodes vs. CMIS
Neos
Storage inspired on the PHP based JCR implementation PHPCR
TYPO3 CR offers some funky / future features (Dimensions)
JCR / PHPCR Nodes can be translated to a CMIS compatible format
Expectations are high that PHPCR <-> CMIS is way more easy to realize than TCA+FAL <-> CMIS
T3CON14 Berlin
Benefits for Web CMS
Content gets decoupled from presentation layer
Specialized Applications doing one job right
„Future proof“
Reduction of redundancies, many content objects are used in production systems and those can be linked to CMIS repository
Expanding possibilities
T3CON14 Berlin
A real php-CMIS-lib
dkd is currently building an open source version of a CMIS library in php as part of the ForgetIT project
following the java implementation to keep interfaces consistent
threaded, object oriented, scalable
supporting CMIS V 1.1
> Want to contribute? Talk to us!
T3CON14 Berlin
Roadmap
First version Q1/2015
browserbindings
CRUD for standard TCA objects
More features as CMIS evolves and gets accepted by TYPO3 community as additional content repository technology
Native Support in TYPO3 CMS 7 onwards?
T3CON14 Berlin
Where to get more information …
Book: CMIS and Apache Chemistry
CMIS - OASIS Specs/Site http://docs.oasis-open.org/cmis/CMIS/v1.1/cs01/CMIS-v1.1-cs01.html
Apache Chemistryhttp://chemistry.apache.org
Alternative TER Pluginshttp://typo3.org/extensions/repository/?id=23&L=0&q=CMIS&tx_solr%5Bfilter%5D%5Boutdated%5D=outdated%3AshowOutdateddf