typo3 and cmis

34
A love affair: CMIS & TYPO3 CMS

Upload: olivier-dobberkau

Post on 29-Nov-2014

255 views

Category:

Technology


2 download

DESCRIPTION

This presentation outlines on how CMIS will bei implemented in TYPO3 CMS during the EU funded ForgetIT Project.

TRANSCRIPT

A love affair: CMIS & TYPO3 CMS

T3CON14 Berlin

Content Management Interoperability Services

How CMIS works

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

Example architecture with CMIS

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

Application to Multiple Repositories. Example:

T3CON14 Berlin

Data Model and Services

Domain Model

Meeting, Date, Location

Data Model

Grey objects: CMIS 1.1

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, AtomPub and Browser Binding

Bindings

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

TYPO3 CMS and CMIS

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

Converting TCA and FAL

TYPO3 Objects in CMIS

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

File abstraction layer (FAL)

T3CON14 Berlin

TYPO3 CMS CMIS Object model

T3CON14 Berlin

A few words on CMIS and TYPO3 Neos

Objects in Neos

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

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

Roadmap

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

Thank you!

Olivier Dobberkau @T3RevNeverEnd