четверг, 18 февраля 2010 г.

xCMIS: руководство к использованию новой CMIS с открытыми исходниками от eXo Platform

На прошлой неделе мы аннонсировали релиз xCMIS 1.0 beta1 - исполнение спецификации Content Management Interoperability Services CMIS от eXo Platform.

Вкратце: xCMIS - это продукт с открытыми исходниками, написан на Java, распростряняется под LGPL лицензией, располагается на http://code.google.com/p/xcmis/. Релиз 1.0 beta1 содержит CMIS сервер со всеми сервисами согласно Content Management Interoperability Services (CMIS) Version 1.0 Committee Draft 06.

Что включает xCMIS и в чем его особенности?

  • xCMIS содержит Java исполнение CMIS с открытыми исходниками для представления содержимого существующих хранилищ контента в соответствии со CMIS спецификацией.для REST AtomPub и Web Services (SOAP/WSDL) протоколов
  • Изначально xCMIS планировался как легко конфигурируемый CMIS сервер с возможностью подключения различных хранилищ контента благодаря внутреннему Storage Provider Interface (в версии 1.0 beta1 его исполнение не завершено). Таким образом, реализовав соответствующую "обертку" над репозиторием контента (собственно исполнив SPI интерфейсы), можно взаимодействовать с ним через протоколы, специфицированные в CMIS спецификации.
  • xCMIS будет предоставлять одну или более CMIS клиентских библиотек для взаимодействия репозиторий-приложение и репозиторий-репозиторий. Языки на которых они написаны и поддерживаемые ими протоколы взаимодействия выбираются в соответствии с конкретными задачами. Например, разумным выбором для использования в веб приложениях, гаджетах и мешапах является JavaScript или GWT для REST AtomPub протокола, а вот для взаимодействия между репозиториями это может быть Java библиотека для Веб Сервисов (WSDL/SOAP).
  • Как клиентская так и серверная части xCMIS легко интегрируются с инфраструктурой eXo Platform 3.0. В частности, xCMIS легко подключается к eXo JCR репозитории а GWT клиентская библиотека для CMIS может быть использована в гажетах для GateIn портала.

Довольно слов! Где взять и как попробовать xCMIS на моем локальном компьютере?

xCMIS сервер пакуется как J2EE Web архив xcmis.war, который Вы можете взять и развернуть на любом сервлет-контейнере. Или, Вы можете его самостоятельно из исходников следуя этим простым инструкциям. И, наконец наиболее простой путь это использование "download and go" версии, включающей xCMIS сервер, развернутый на Apache Tomcat под контекстным путем /xcmis.

По умолчанию xCMIS содержит и REST AtomPub и Web Services (SOAP/WSDL) серверы (может быть изменено использованием соответствующего профиля Maven при построении).

  • Web Services (SOAP/WSDL) доступен по адресу http://localhost:8080/xcmis/cmisws.
  • REST AtomPub доступен по адресу http://localhost:8080/xcmis/rest/cmisatom - это URL метода getRepository RepositoryServic-а. Для получения более полной информации о доступных сервисах и методах в WADL формате сходите на http://localhost:8080/xcmis/wadl.html.
  • Если Вы хотите "посмотреть поближе" CMIS AtomPub протокол, попробуйте использовать информацию из WADL файла для запросов под curl или Poster FireFox add-on :).

xCMIS сервер поставляется с одним CMIS репозиторием содержащим пустой eXo JCR воркспейс а также с JCR WebDAV сервером. Имя JCR репозитории "repository" :) а имя воркспейса "cmis". Таким образом, Вы можете получить тот же контент используя WebDAV сервер по адресу http://localhost:8080/xcmis/rest/jcr/repository/cmis/ .

Для сохранения времени вы можете загрузить xCMIS сервер вместе полнофункциональным GWT гаджетом внутри (гаджет загружается удаленно с сайта xcmis.org). Запуск его ничем не отличается от запуска чистого сервера; после этого вы можете пойти по адресу http://localhost:8080/xcmis/xcmis-demo-gadget/GadgetWrapper.html и насладиться визуализированным CMIS-ом под CMISExpert-ом :). Это выглядит приблизительно так:


Интерфейс гажета довольно прост и интуитивно понятен, содержит много из современных элементов пользовательского интерфейса таких как тулбар, контекстное меню по правой кнопке, drag-and-drop и т.д.

Как использовать xCMIS удаленно?

Мы создали специальный ресурс http://xcmix.org с развернутым под GateIn порталом xCMIS. Здесь вы можете использовать CMIS Expert гаджет удаленно, а также попробовать CMIS Zoho гаджет. Он демонстрирует в действии несколько исполнений CMIS сервера (xCMIS, Alfresco CMIS и Nuxeo CMIS). Вы можете походить по репозиториям, посмотреть и даже поредактировать файлы под редактором.

Постройте GateIn самостоятельно или загрузите (версия не менее CR1!) его и добавьте xCMIS сервер как описано в wiki, или используйте удаленный (http://xcmis.org/rest/cmisatom - для REST AtomPub протокола).

Также возможно использование сторонних CMIS клиентов, мы пробовали IBM CMIS Firefox Connector, CMIS Spaces Flex+AIR и думаем с большой долей уверенности что и другие совместимые с CMIS 1.0 будут тоже работать как описано на xCMIS wiki (только используйте удаленный сервер - http://xcmis.org/rest/cmisatom).

Что дальше ?


  • Спецификация CMIS близка к финальному состоянию, мы тоже - как только будет официальный выйдет CMIS 1.0, мы тоже выпустим финальный релиз xCMIS 1.0 :)
  • Откроем коды GWT CMIS клиентской библиотеки и переместим в xCMIS проект
  • Завершим разработку архитектуры Storage Provider Interface
  • Проведем рефакторинг системы поиска, отвяжем его от JCR хранилища
  • Проведем рефакторинг CMIS конфигурации сделаем ее более понятной
  • Добавим возможность федеративного поиска по разным CMIS репозиториям
  • Протестим с другими сторонними клиентскими приложениями
  • И много другого... :)

Очень хотелось бы услышать Ваше мнение. Так что любое обсуждение проекта (мы говорим на английском, русском, украинском и французком как минимум :) ), новые идеи, советы, улучшения документации и другое Ваше участие горячо приветствуется, поучаствуйте!

Проект разработан и поддерживается украинским подразделением компании eXo Platform
( eXo UA )

Посетите Wiki для более детальной информации: http://code.google.com/p/xcmis/w/list
Исходники: http://code.google.com/p/xcmis/source/checkout
Загрузить проект: http://code.google.com/p/xcmis/downloads/list
Попробовать демо: http://xcmis.org/portal/public/classic/CMISExpert

пятница, 12 февраля 2010 г.

eXo Platform представляет xCMIS - открытую реализацию Content Management Interoperability Services (CMIS)

Сан-Франциско, 11 Февраля 2010. Компания eXo Platform сегодня представила xCMIS - открытую реализацию спецификации Content Management Interoperability Services (CMIS). Будучи полностью совместимой с последней (CMIS 1.0 - cd06) спецификацией, данная реализация CMIS обладает поддержкой стандарта Java content repository (JCR), совместима с клиентскими приложениями сторонних производителей и имеет собственный клиентский фреймворк основанный на базе технологии Google Web Toolkit (GWT).

Сервер xCMIS также доступен в исходных кодах в рамках лицензии LGPL на http://code.google.com/p/xcmis/.

Новый CMIS-клиент выпущенный компанией eXo, основан на технологии GWT и предоставляет возможность создания как клиентских веб-приложений, так и Google гаджетов.

Приложения или гаджеты созданные на основе данного фреймворка могут быть запущены удаленно, а так же встроены в портал, например, GateIn (http://gatein.org) - совместную разработку eXo и JBoss. eXo CMIS клиент поставляется вместе с сервером как удаленный гаджет, а так же доступен онлайн по адресу http://xcmis.org.

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

С системой xCMIS, eXo присоединяется к рангу поставщиков ECM, которые оценили перспективность технологии CMIS и включили ее в свои программные продукты.

Разработка и поддержка xCMIS осуществляется украинским R&D подразделением компании (eXo UA)

среда, 13 января 2010 г.

С Новым Годом и Рождеством Христовым!

Поздравляем всех друзей, партнеров, клиентов
и просто всех хороших людей
С Новым 2010 Годом и Рождеством Христовым!!!

Пусть в наступающем году
Успехи новые придут,
Во всем сопутствует удача,
И разрешатся все задачи,
И чтобы этот год грядущий
Был лучше все ж, чем предыдущий

С любовью,
Команда eXo UA

пятница, 4 декабря 2009 г.

[video en] Mashup c GateIn, реальная сила платформы

(оригинал статьи здесь)

В продолжение темы затронутой в статье: “OpenSocial - убийца порталов?”

Видео о том, как использовать гаджеты и динамические языки в GateIn платформе для быстрого построения REST приложений и гаджетов.



Что мы здесь показываем:

- создаем простой текстовый файл со списком адресов, разворачиваем его WebDAV под GateIn
- строим REST сервис используя наш онлайновый IDE инструмент (используя  язык Groovy и наше исполнение спецификации JSR-311) который читает содержимое этого файла и представляет его как REST сервис простым кликом
- вызывает этот REST сервис в гаджете и использует Maps API от Google для отображения карты указывающей на адрес из этого файла.

Все вживую… только в GateIn

К-стати, это было продемонстрировано на Google Devfest в Аргентине.

OpenSocial - убийца порталов?

(статья адаптирована с английского, оригинал здесь, предложения добавленные в русском переводе помечены *)

На конференции Enterprise 2.0 2009 исполнительный директор компании eXo Platform Бенжамин Местралле участвовал в обсуждении OpenSocial in the Enterprise в компании представителей IBM, Atlassian, и SocialText. Несмотря на то, что только у двух из представленных компаний имеются портальные решения, большая часть обсуждения была сфокусирована на порталах, а именно уничтожает ли OpenSocial мир порталов и вообще портлеты.

Определенно, это не так.

Во-первых, порталы изменяются. В предыдущем посте было отражено каким образом eXo портал эволюционировал с аггрегатора сторонних приложений к платформе для построения и предоставления сервисов для пользователей, ярким представителем которой является GateIn (eXo + JBoss).

Основным вопросом не является какую из технологий разработчик должен выбрать, портлеты или гаджеты, скорее это вопрос каким образом можно более эффективно предоставить тот или иной сервис - используя гаджет или портлет.

В eXo мы не делаем большого отличия между гаджетами и портлетами. Они просто категоризированы для удобства, пользователь может просто зайти и выбрать то, что ему больше подходит для его нужд. Пользователю все равно что там внутри.

Разработчик также может выбрать что ему больше подходит для исполнения, считается что портлеты больше подходят для написания "больших" компонентов а гажеты для более легких и простых в построении. Хотя на данный момент eXo разрабатывает довольно большие приложения построенные как GWT гаджеты с RESTful интерфейсом(*). Отличие между портлетами и гаджетами является чисто техническим и спрятано от пользователя. Даже не смотя на похожесть последних спецификаций, изначально портлеты задумывались как серверные Java компоненты генерирующие HTML фрагменты, а гажеты динамически генерируют HTML на клиентской части благодаря JavaScript и REST вызовам сервера. Основное различие в жизненном цикле приложений состоит в том, что портлеты разворачиваются как WAR архивы в то время как простые гаджеты могут рассматриваться как простой XML файл который может быть создан динамически и редактироваться online. (* Что, однако, не говорит о том, что большие гаджеты не могут быть запакованы в WAR и развернуты как J2EE web приложение) Гаджеты позволяют бизнес пользователям построить и развернуть приложение очень быстро.

Следующее поколение порталов будет поддерживать обе модели но это всего лишь один из строительных блоков платформы завтрашнего дня. Горизонтальные сервисы такие как контент, электронная почта, календари или профили это тоже части платформы, они могут комбинироваться, образуя mash up, стороя пользовательское веб приложение онлайн. Мы комбинируем функциональности в GateIn, что определенно позволяет ему быть “mash up” платформой для объединения и перестроения компонентов. Времена меняются, давайте будем гибкими.