RSS
email

28 April 2010

xCMIS in AIIM CMIS Demo 2010

The xCMIS Content Management repository participated in a Demonstration implementation of the Content Management Interoperability Services (CMIS) specification at info360 (AIIM International Exposition and Conference), see the official Press Release.

The Demo application consolidates electronic health records stored in five different CMIS  1.0 compliant Content Management repositories from different vendors including Alfresco, Box.net, EMC Corporation, eXo Platform (xCMIS), IBM Corporation, Microsoft, and Nuxeo.

The xCMIS team was responsible for applying a dedicated CMIS object type as well as initial populating the repository with records defined by the application creators and thanks to the eXo's CMISExpert it was pretty simple to do both tasks.

The CMIS Demo application is accessible online on http://www.aiim-iecm.org.



And finally, I'd like to thank the AIIM iECM committee guys Laurence Hart and Thomas Pole and theirs teams for great job about concept, design and implementation of demo application.

10 April 2010

CMIS targets in real-life

Waiting for the release of Content Management Interoperability (CMIS), a number of articles on options for the use of CMIS appeared in Internet. Early articles, such as Three fundamental CMIS Use Cases, list some CMIS-based application types, classifying them in terms of interaction between the repository and the client application (R2R, A2R, FR). The following articles and presentations offer some concrete CMIS use cases (eg Revisting the CMIS Use Cases, How will CMIS be adopted?).

Wondering "to CMIS or not to CMIS" (see also CMIS basics post) it's worth to recall the meaning of a letter "I"  in abbreviation, i.e. about  "interoperability". What are the usecases allowing us to feel the content interoperability advantages and, therefore, necessity and importance of CMIS-ability of developed or purchased CM solution?

Let's recall two mutual targets which caused appearance of the specification:

   1. Content integration - ensuring of using the content from various repositories, even created by different vendors in a single application, such as the portal, CMS, etc.
   2. Access unification - a minimum interface provided by content repository to decouple the content storage from the application's business logic.

In essence, these problems are similar to those which are solved for a more structured data using SQL. That is why CMIS sometimes compared in importance with SQL, which causes mild irritation of people perceive this comparison too literally.

So, let us explain these requirements in more details:

Content integration
The CMIS client (front-end application or middleware) uses generic interface to access one (simple case) or several content repositories.
Use cases:
  • Portals - different components (portlets) use different content repositories through unified interface. So, various by the nature and size data can be arranged in different repositories. Nevertheless, the portal will use the same interfaces for content management. For example CMIS Expert application accessible as a Google gadget.
  • Mashups - components which use content from various content repositories, similar to the first case, but unlike the portlets, the client application can be located on the client side (such as Open Social Gadget) or on the server side.
  • Federated search - using the content from the various repositories in one application, requesting each of the participated CMIS repository and producing consolidated results. For example AIIM Demo application which uses several repositories from different CMIS vendors.
  • Content migration from one CMIS repository to another.

Access unification

This requirement caused by the needs of various applications to have a universal interface to access content.

Applications of different purposes and different manufacturers can be simply connect to an CMIS-enabled content repository, considerably reducing the cost of business application development. Indeed, a business application's developer can concentrate on application's business logic rather than compatibility or content migration issues.
Moreover, CMIS enabled content management system allows avoid (or at least significantly reduces) vendor lock-in factor.

Options of the CMIS-ability

  • Content management system which supports CMIS out-of-the-box.  The content repositories produced by the main content management players such as  IBM, Microsoft, eXo Platform, Alfresco, Nuxeo already support CMIS.

  • Middleware solutions, providing necessary CMIS bindings and internal, local interfaces which have to be implemented by CMS vendor in order to make the content CMIS allowable (so called SPI). Such a middleware can be used by the companies, produced dedicated software (for instance, for vertical markets) with proprietary CMS as well as by CMS end users.

Beginning from version 1.0 beta2, xCMIS extends its functionality. Now it is able not only to make CMIS representation for eXo JCR repository but also to expose potentially any content repository through CMIS interfaces.



To do that, a software producer must implement xCMIS Storage Provider Interface (SPI). Find more details on xcmis.org.
That's all for the time. In my next posts I'll try to implement simple CMIS-able content storage using xCMIS's SPI. Stay tuned following @gazarenkov on Twitter.

29 March 2010

Практическое использование CMIS

В ожидании выхода спецификации Content Management Interoperability (CMIS), в интернете появился ряд статей, посвященных вариантам использования CMIS. Более ранние статьи, например Three fundamental CMIS Use Cases , имеют описательный характер, перечисляя варианты приложений на основе CMIS и классифицируя с точки зрения взаимодействия между репозиторием и клиентским приложением (R2R, A2R, FR). Последующие статьи и презентации предлагают некоторые прикладные случаи использования CMIS (например Revisting the CMIS Use Cases, How will CMIS be adopted?).

Задавая себе вопрос "to CMIS or not to CMIS" (см также пост об основах CMIS) полезно вспомнить о том, что означает буква "I"  в аббревиатуре, а именно об  "interoperability", т.е. "совместимости". Какие же юзкейсы позволят ощутить преимущества совместимости контента а, следовательно, и нужность/важность поддержки CMIS в разрабатываемом или покупаемом решении для управления контентом?
Чтобы ответить на этот вопрос давайте сначала вспомним какие практические цели были задекларированы при создании спецификации. По большому счету их две:
  1. Интеграция - обеспечение использования контента из различных репозиториев, возможно созданных различными вендорами в едином приложении, например в портале, CMS и т.п.
  2. Унификация доступа - разработка минимального интерфейса, который производители репозиториев контента могли бы предоставлять системным интеграторам и независимым производителями програмного обеспечения (ISV) для обеспечения совместимости конечных решений.
По своей сути эти задачи сходны с теми которые решаются для более структурированных данных с помощью SQL. Вот почему CMIS иногда сопоставляется по значимости с SQL, что вызывает легкое раздражение людей, воспринимающих такое сравнение слишком буквально.
Итак, давайте разберем эти категории более подробно:

Интеграция контента
Клиент CMIS репозитория (это может быть конечный клиент либо промежуточное приложение) использует единый интерфейс для доступа к одному (тривиальный случай) или нескольким репозиториям контента.
Например:
  • Портальные компоненты (портлеты) используют различные репозитории контента пользуясь единым интерфейсом. С точки зрения оптимизации хранения контента, различные по своей природе, характеру использования (чтение/запись) и размеру данные могут располагаться в различных репозиториях. Тем не менее портал будет использовать те же интерфейсы для управления контентом.
  • Мешапы - компоненты, использующие контент из различных репозиториев контента, аналогично первому примеру, но клиентское приложение может располагаться как на клиентской (например Open Social гаджет) так и на серверной стороне.
  • Федеративный поиск - функционал для структурного или полнотекстового поиска контента, запускающее запрос последовательно на каждый из зарегистрированных CMIS репозиториев для получения консолидированного результата.
  • Приложение для миграции контента из одного репозитория в другой (такое использование CMIS не очень эффективно но принципиально возможно). К-примеру перекачка данных из DMS репозитория в WCM.
Унификация доступа

Следующий аспект использования CMIS обусловлен потребностью различных приложений иметь универсальный интерфейс доступа к контенту.

Приложения различной направленности и различных производителей могут просто подключаться к существующему хранилищу контента, поддерживающему CMIS, в этом случае затраты на разработку прикладных клиентских приложений значительно снижаются так же, как и риски конечного потребителя.
Выигрыш для разработчика конечного решения очевиден - использование специфицированных интерфейсов позволяет сосредоточится на бизнес-логике приложений и не думать о вопросах совместимости или миграции контента.
Соответственно, стоимость решения и риск для конечного потребителя, получающего CMIS надстройку над "унаследованным" хранилищем контента, снижается.
При выборе CMS, система, поддерживающая CMIS, более предпочтительна т.к. позволяет избежать или, как минимум, значительно уменьшает зависимостимость от производителя системы (vendor lock-in)

Варианты реализации CMIS

Какие же существуют варианты реализации CMIS?
  • Репозитории контента поставляемый производителем со встроенной поддержкой CMIS. Это вариант для производителей контент репозиториев и *CM* решений промышленного масштаба. Подобные решения уже сейчас предоставляют IBM, Microsoft, eXo Platform, Alfresco, Nuxeo и другие производители.
  • Решения промежуточного звена, предоставляемые необходимые CMIS биндинги и внутренние, локальные интерфейсы, которые должны быть реализованы производителем CMS для предоставления своего контента (так называемый SPI). Такое промежуточное програмное обеспечение может использоваться компаниями, производящими специализированное програмное обеспечение (например, решения для вертикальных рынков) с проприетарными CMS а также непосредственно предприятиями-пользователями CMS (например как надстройка над существующим, "унаследованным" хранилищем).
Начиная с версии 1.0 beta2, xCMIS может выступать не только как CMIS представление для eXo JCR репозитория, но и как промежуточный слой, позволяющий представлять потенциально любой репозиторий контента согласно CMIS спецификации.


Для этого поставщик програмного обеспечения должен реализовать простой внутренний API, так называемый xCMIS Storage Provider Interface. Подробнее о реализации и использовании XCMIS смотрите на сайте xcmis.org

16 February 2010

Open Source CMIS implementation from eXo Platform released: xCMIS

Last week we announced that eXo Platform has built an open source implementation of OASIS's Content Management Interoperability Services CMIS specification.  We licensed this under the LGPL license, and released it officially as xCMIS 1.0 beta1.

This release includes CMIS server with all the services implemented according to Content Management Interoperability Services (CMIS) Version 1.0 Committee Draft 06 for REST AtomPub and Web Services (SOAP/WSDL) protocol bindings. The project is hosted on the Google Code forge, check it out on http://code.google.com/p/xcmis/.  I wanted to take a few minutes to answer some of the most common questions from developers about the new xCMIS project.

What is the xCMIS project, and what does it do?

  • xCMIS is an open source, server side Java CMIS implementation that is able to expose the content in existing content repositories according to the protocols defined in the CMIS spec
  • xCMIS will give developers a way to make their content repositories "pluggable" on the server side - thanks to an internal Storage Provider Interface and additional protocol on-demand bindings
  • xCMIS will provide (several) CMIS client frameworks for repository-application and repository-repository interactions. The programming language and supported protocol can be selected by the user.  (For example, the reasonable choice for use with web applications, gadgets, and/or mashups is JavaScript or GWT over REST AtomPub, while for inter-repository exchange it may be Java over Web Services, i.e. WSDL/SOAP.)
  • Both the server and client sides of xCMIS are easily integrated in the eXo Platform 3.0 infrastructure. In particular, xCMIS exposes the eXo JCR content repository and provides a framework for building web applications and gadgets for the GateIn portal

Enough talk already!  How do I download and start to play with xCMIS on my local workstation?

The xCMIS server is packaged as a J2EE Web archive xcmis.war, which you can download and install on any Java servlet container.  Or, you can build it on your own from the source code by following these simple instructions.  Finally, the easiest option might be to use the "download and go" version that we prepared - it's basically Apache Tomcat bundled with an xCMIS server on /xcmis context path.

By default the xCMIS server includes both REST AtomPub and Web Services (SOAP/WSDL) protocol bindings.

The xCMIS bundle includes one CMIS repository with an empty eXo JCR and JCR WebDAV server inside.  The name of the JCR repository is "repository" :) and the name of JCR workspace is "cmis". So, it is possible to obtain access to the same content using WebDAV URL
http://localhost:8080/xcmis/rest/jcr/repository/cmis/

If you want to save time, you can download the xCMIS server with a full-featured CMIS GWT UI gadget inside (loaded remotely from xcmis.org site). It can be run the same way as a bare server; then you can go to http://localhost:8080/xcmis/xcmis-demo-gadget/GadgetWrapper.html to check out the CMIS visually.  It should look like this:


The interface is pretty simple and intuitive, and includes a toolbar, right-button context menu, drag-and-drop features, etc.

How do I use xCMIS remotely?

We created the dedicated resource xcmix.org that has xCMIS deployed on the GateIn portal. Here you can find and use the CMIS Expert gadget, and a really cool CMIS Zoho gadget. This one demonstrates multiple CMIS implementations (xCMIS, Alfresco CMIS and Nuxeo CMIS) in action.  You can browse the different CMIS repositories, see the content stored within them, and most importantly - you can view and modify files in Zoho editor.

Feel free to build GateIn yourself and add a local xCMIS server as described in the wiki, or use a remote one (http://xcmis.org/rest/cmisatom - for REST AtomPub protocol).  However, you might want to note that xCMIS beta1 uses eXo JCR 1.12 CR1, so make sure you use an appropriate version of GateIn.  It should be at least as recent as GateIn 3.0 beta 5 (as of the Feb 11, 2010 release, only GateIn built using trunk is suitable!).

And, of course, it is possible to use third-party CMIS clients such as IBM CMIS Firefox Connector, CMIS Spaces Flex+AIR and (I am pretty sure) other clients that are compatible with CMIS 1.0, all in the same way described in the xCMIS wiki (just using a remote server).

What's next for xCMIS?


  • The CMIS specification is close to the final state, so that means we're close as well  - once CMIS is officially out, we'll put out the final xCMIS release shortly after that :)
  • Open the source code for the GWT CMIS framework and move it to xCMIS project
  • Finalize the Storage Provider Interface architecture
  • Refactor the search engine, decoupling it from JCR storage
  • Refactor a CMIS configuration to make it more clear (trying different types of configurations for different IoC containers)
  • Add federated search between several types of CMIS repositories
  • Check out other types of clients
  • And other cool stuff... :)

We'd love to hear your feedback.  If you want to discuss the project, talk about new ideas, make suggestions for improving the documentation, or anything else, please get involved!

To learn more, check out the project Wiki: http://code.google.com/p/xcmis/w/list
To see the source code: http://code.google.com/p/xcmis/source/checkout
To download the binaries: http://code.google.com/p/xcmis/downloads/list
To play with the latest demos: http://xcmis.org/portal/public/classic/CMISExpert

11 February 2010

xCMIS (2) : xCMIS 1.0 beta1 released

Just finished first xCMIS release marathon called 1.0b1 :), thanks a lot, guys, for dedicated work!

Finally the code, binaries and Wiki is on http://code.google.com/p/xcmis

It was very interesting to take part in PR preparation with professionals, here is the result:

San Francisco, Calif. (Feb. 11, 2010) -- eXo Platform today introduced xCMIS, an open source implementation of the Content Management Interoperability Services (CMIS) specification. Fully compliant with the latest CMIS 1.0 – cd06 specification, xCMIS supports eXo's standards-based Java content repository (JCR) and works with third-party CMIS clients as well as a new eXo CMIS client based on Google Web Toolkit (GWT). The xCMIS server is being released as open source code under the LGPL at http://code.google.com/p/xcmis/.

eXo's new GWT-based CMIS client offers the flexibility of building both standalone web applications and Google gadgets. Applications or gadgets created with this framework can be loaded from a remote location or integrated into a portal such as GateIn (http://gatein.org), the next-generation portal runtime co-developed by eXo and JBoss. The eXo CMIS client comes bundled in the xCMIS download, and will be accessible as a remote gadget leveraging GWT client libraries at http://xcmis.org.

Created by OASIS to enable greater interoperability of enterprise content management (ECM) systems, CMIS provides a common interface using either AtomPub or Web Services to enable content sharing across different content management systems. Applications are no longer tied to any one specific content repository, so developers can write new applications without concern for the development platform or language dependencies on any single content system. With xCMIS, eXo joins the rank of ECM providers that have rallied behind CMIS.

"eXo was founded on open standards, which remain core to our DNA," said Benjamin Mestrallet, CEO of eXo Platform. "We started with the industry's first Java portlet container, one of the first open source Java content repositories, one of the first enterprise OpenSocial implementations and now one of the most complete CMIS implementations available. In line with this commitment to open standards, we're making xCMIS widely available as open source to ensure that any developer can have access to a first-class CMIS server with which to write their applications."

The xCMIS server is available as a community beta release today with a production-ready version planned when the final CMIS 1.0 spec is ratified. Commercial support for xCMIS will be included in the next enterprise version of the eXo Platform, version 3.0, which will be based on GateIn. For more information on xCMIS or to participate in the project, visit http://xcmis.org.

eXo will be hosting a free one-hour webinar about xCMIS on 24 February 2010. The webinar will include an overview of the CMIS specification, an introduction to the features of xCMIS and a step-by-step tutorial for creating gadgets that can make newly unlocked content even more useful. To register for the webinar, visit http://www.exoplatform.com/portal/public/website/community/__webinar-xcmis.

30 January 2010

xCMIS(1): CMIS basics

That is the first post in a series of xCMIS - an Extendable Open Source implementation of OASIS's Content Management Interoperability Services (CMIS) standard. 

Let's start with small introduction of the standard itself, its domain model and some specification internals (really briefly).

Why CMIS?
Over the past decades, mankind has accumulated a huge number of electronic documents, which led to the emergence of a large number of content management systems on the market. All of those systems have proprietary interfaces which creates problems for both smaller and bigger customers. Indeed, small-to-mid ones have to choose between very expensive solutions from big vendors and cheaper solutions with the risk of not finding a provider "alive" tomorrow. While mid-to-big companies with multiple CMS from multiple providers has suffered from limitations of their interoperability.
This situation led to the creation of CM related Open Standards such as WebDAV and then Java Content Repository JCR (with open implementations such as Apache Jackrabbit and eXo JCR).
Later, ECM vendors started discussions about the idea of a standard to make it easier to share and manage content and an Organization for the Advancement of Structured Information Standards (OASIS) technical committee was formed to write a formal specification of a Content Management Interoperability (CMIS) standard.

CMIS Domain Model
Domain model of CMIS is pretty simple and non-restrictive, it defines a Repository as a container and an entry point to the objects.

Repository manages entities called Object. All objects are classified by Object Type which declares that all objects of given type have common set of Properties and Attributes (such as TypeID, Parent, Display Name and others). There are four base types Document, Folder, Relationship, and Policy which inherit Object as it shown on diagram below. In addition you can extend those basic types of modifying a set of their properties.

Fig. CMIS Domain Model

Document is similar to a file, it has properties to hold document metadata, such as the document author and modification date and custom properties. It can also contain a content stream (in many cases that is why it needed) and renditions, such as a thumbnail view of a document.
Folder is self-explained, it is container for other objects. Note, that apart from default hierarchical structure, CMIS is optionally able to store objects in multiple folders or in no folders at all (so called multifiling and unfiling capabilities)
Relationship object defines a relationship between two objects (target and source). An object can have multiple relationships with other objects.
Policy is a way of defining administrative policies to manage objects. For example, you can use a CMIS policy to define which documents are subject to retention policies.


CMIS Services
The CMIS specification also defines a set of services to access and manage the content or repository including:
  • Repository Services: are used to discover information about the repository, including information about the repository and the object-types defined for the repository
  • Navigation Services: are used to traverse the folder hierarchy in a CMIS Repository, and to locate Documents that are checked out
  • Object Services: provides ID-based CRUD (Create, Retrieve, Update, Delete), operations on objects in a Repository
  • Multi-filing Services: (optional) make it possible to put object to several filders (multi-filing) or outside folder hierarchy (un-filing)
  • Discovery Services: are used to search for query-able objects within the Repository
  • Versioning Services: are used to navigate or update a Document Version Series (checkOut, cancelCheckOut, getPropertiesOfLatestVersion, getAllVersions, deleteAllVersions)
  • Relationship Services: (optional) are used to retrieve the dependent Relationship objects associated with an independent object
  • Policy Services: (optional) are used to apply or remove a policy object to a controllablePolicy object
  • ACL Services: are used to manage the Access Control Llist of an object.
As you can see, not that much and a repository might not implement certain optional capabilities, but is still considered CMIS-compliant.
Each of the services has two bindings which defines the way messages will be serialized and wired. Both bindings based on HTTP, one uses the Atom Publishing Protocol, and the other uses Web services based on SOAP. Specification obliges CMIS compatible repositories support both but does not limit to have more (first possible candidates are JSON).

Thats it for the first xCMIS post, I'll continue to talk about CMIS internals/usecases and of course about xCMIS features, so see you later.
Feel free to drop your comment or tweet me @gazarenkov

Resources: 
xCMIS project: http://code.google.com/p/xcmis/
OASIS CMIS specs: http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cmis

27 January 2010

IDEall an online development environment

An experiment, which began in eXo UA lab of eXo Platform to create a simple on-line editor for Groovy scripts a few months ago has evolved to the multipurpose on-line Integrated Development Environment called IDEall. Here I'll try describe an idea and features of it step by step.
Here is how it looks like for the time being:


Small list of IDEall features:
  • Rich user interface, supported by all popular browsers thanks to using of GWT
  • Advanced multi-file editor supporting syntax of XML, HTML, JavaScript, CSS and Groovy script, auto format, line numbering.
  • Browse, search, create, update, delete, copy, move files and folders using small Data Storage API (i.e. backend is plugable). 
  • Supports WebDAV on top of eXo JCR backed out of the box, including the possibility to discover and choose accessible JCR repositories/workspaces. 
  • File Properties browsing ability
  • Files uploading/downloading including uploading folder as a Zipped single file, which is very usable for backup.
  • Facility to validate, deploy and call REST Groovy service, obtaining its output just below an editor panel. Yes, it's true, a developer is able remotely create, debug and launch service which is working under J2EE application server!
  • Supports Google gadget debugging and preview (using Open Social compatible container such as Apache Shindig) which is extremely useful for mashup building
  • Accessible as both standalone Web-application and a gadget
  • Can be integrated on GateIn portal and delivered as GateIn portal extension as well as deploy just developed gadgets into GateIn portal out of the box.
  • Saving your current state in cookies so you'll have the same files opened as you leave last time
  • Dynamic, context dependent menu, customizable toolbar and other nice and useful features like one-click panel maximizing, go to file's location etc.
  • And even more cool features soon as the project is under active development
It is available online, so help yourself on http://gwt.demo.exoplatform.org , just log-in as proposed in home page and click on IDE menu item.

Later more in details about IDEall features, stay tuned, feel free to comment or twit me @gazarenkov