RSS
email

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