Adam Harmetz, Mike Mahon, and Ryan McVeigh gave a deep dive in CMIS. Adam and Ryan are members of the OASIS committee so they gave a good overview of what it is and how it can make life easier.
What is CMIS
6 is the average number of ECM repositories in a company. Over 50% have >10. If you want to manage, create and find content no matter where the information exists, you need to get access to it.
Content Management Interoperability Services (CMIS). It’s an OASIS specification. The first version of the spec was approved on May 1, 2010. Key vendors support includes (not a full list):
- Microsoft
- EMC
- Open Text
- Alfresco
- Oracle
- Adobe
- SAP
- HP
- IBM
CMIS has a lot of industry momentum but it is NOT a panacea.
What makes it different from other attempts
- All major vendors support the standard
- It’s based on well understood pattern
- It’s been proven with a prototype server and client implementations from the start (key item here)
- Does not dictate language or run-time as opposed to JSR 170
- It’s experiencing rapid adoption. All major vendors are exposing a CMIS interface
CMIS Goals and Scope
- Enable applications to target different ECM repositories
- Provide a common set of patterns to make this work.
- Follow a protocol binding moding in REST and ATOM
CMIS should cut costs and improve developer productivity when dealing with the complexity of integrating the different repositories
Example applications would include a Sharepoint web part that uses CMIS to roll up personnel data from several different systems, contract approval app with central approval against multiple legacy ECM repositories, and a mobile app to hit content from different repositories. More than 50 different CMIS applications exist.
CMIS Spec
CMIS has a common data model for content. It then provides a set of services which can be used to get at the model. Finally, it provides protocol bindings for RESTful AtomPub and Web Services
The common data model or repository
- Contains folders documents or other objects
- must provide all basic services
- Must provide REST and SOAP and bindings
- May provide optional services like policies and access control
- May provide services not in CMIS spec like records management
- Advertises capabilities through a service
- In SharePoint, a CMIS repository maps to a document library
Object Type: Consists of four basic types in Document, Folder, Relationship, and Policy. each type has attributes and property definitions.
Properties: All objects have properties. property definitions have attributes like type. It has data types like string, decimal, integer, etc. Common property definition attributes include id, localname, query name, etc. In SharePoint, all CMIS property types map to SharePoint column types.
Documents: a document is an instance of a document type. they have properties and have a content stream.
Folders: Folders can contain folders and documents. Folders can only have one parent. Can declare what types it contains like only press releases. Documents may be unfiled or not live within a folder. A document can live in multiple folders.
Relationships: A directional relationship between any two objects. An object can have any number of relationships including itself. Referential integrity is not enforced. SharePoint does not support this
Policies: This is a little immature in v1.0 release of CMIS. A policy can be enforced by a repository. It’s used to mange object that are outside the scope of CMIS. Records retention is an example. In SharePoint, you can make use of policy object but it’s not supported beyond that.
Access Control: Controls are mapped via permissions, Prinipal (user or group), Access Control Entry, Access Control List, Repository support for access control is optional
Versioning: documents may or may not be versioned. Versions represent properties and content at a given point in time. All versions collectively define a serie. Checkout creates a private working copy. SharePoint documents version stream is exposed via CMIS. Checkin and Check out is also supported.
Query: It’s based on a well known standard called SQL 92. ECM extensions are added. Each type is treated as a logical relational table. Joins may be supported. Query supports metadata and/or full text. SharePoint supports both metadata and full text queries. The Sharepoint producer will use SharePoint Search or it can use CAML.
Services
With data model set, you can now make use of eight sets of services that CMIS exposes. In general it support CRUD. This might include getRepositories, GetTypeDefinition, Get Children, GetFolderParent, Get ObjectParents, CreateDocument, CreateFolder, GetObject, CheckOut, cancelCheckOut, getAllVersions.
CMIS Bindings: Providers must implement RESTful AtomPub and SOAP. Restful AtomPub would provide feeds, entries. and links. It would support get, post, put, and delete. Authentication not proscribed but recommended. Web Services will use SOAP and will have WSDL and XSD’s defined.
Industry Adoption
The following companies have CMIS Providers:
- ADobe
- Alfresco
- EMC
- eXo
- IBM
- etc.
Client applications include Apache Chemistry, Liferay, Zia Freshdocs, etc. Apache Chemistry is an open source options for provider and consumer implementers. Chemistry has libraries for Java, .NET, PHP, and Python. Chemistry has a CMIS workbench as a graphical client with a Groovy console.
Future of CMIS
CMIS 1.1 is in process. CMIS 2.0 is more than a glimmer in someone’s eye.
CMIS 1.1 approved items
- Browser binding that allows pure browser based apps
- Type mutability that will define types and associated properties
- Secondary type which will support the concept of mix-ins
CMIS Features in Discussion
- Repository extensions
- Annotations
- Tagging
- Batch operations
- Multiple content streams
- retention and hold management
- Stored queries
- Hierarchical / complex properties
- See TC wiki for more. http://wiki.oasis-open.org/cmis
If you want to add input, please give the OASIS members feedback at: aharmetz@microsoft.com or rmcveigh@ziaconsulting.com
Mobile Development
There is a Fresh Docs app on android and iOS that can pull CMIS data into the app. Windows Phone 7 is on the horizon. It allows users to search, browse, upload doc, create folders, view and edit metadata. Any repository that supports CMIS can be viewed by the app. This include SharePoint 2010, FileNet P8, Documentum, Alfresco, OpenText, Nuxeo, and HP Trim. This app is made by Zia Consulting and it’s free.
Demos: They showed Fresh docs hitting SharePoint and Alfresco repositories via a mobile app. Imaging taking a picture of a pot hole and uploading it to the repository and kicking off a workflow. They also showed Chemistry hitting the same repositories.
Microsoft and CMIS
In Mid 2010 Microsoft released both consumer and producer implementations of CMIS on top of SharePoint
This really is the correct blog for anybody who desires to find out about this topic. You recognize so significantly its practically hard to argue with you (not that I really would want…HaHa). You certainly put a new spin on a subject thats been written about for years. Excellent stuff, just fantastic!