среда, 11 ноября 2009 г.

ECF: Средства для взаимодействия команды разработчиков с помощью Eclipse


Мы уже успели поговорить и о том, что такое Eclipse Communication Framework, и о том, как программировать с его помощью. Сегодня рассмотрим графические средства, которые ECF предоставляет для Eclipse (и, соответственно, RCP-приложений).

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


Давайте перейдем в перспективу Communications. По-умолчанию, внизу, под редактором кода, появятся два вида: Collaboration - обеспечивает общение между участниками проектной команды с использованием специально разработанного ECF-протокола: ecf.generic. Вот так он выглядит, пока соединение с сервером не установлено:



Рядом будет открыт вид Messages - окно сообщений. Здесь мы можем писать сообщения другим пользователям и, соответственно, читать поступившие от них. Пустой вид Messages представлен на рисунке:



На панели быстрого запуска можно увидеть кнопку Connect Workspace to Collaboration Group, которая позволяет соединиться с сервером и начать общение с проектной командой.



Кнопка Connect to Provider обеспечивает подключение с помощью выбранного ECF-провайдера. Например, можно подключиться к IRC-, Jabber- или MSN-серверу.



Если нажать на кнопку Connect Workspace to Collaboration Group, то появится окошко выбора сервера, к которому мы хотим подключиться. Я предварительно запустил сервер на 4280-м порту и именно с ним осуществляю соединение:



Подключение выполнено, на сервере теперь есть единственный пользователь.



Можно запустить еще один экземпляр Eclipse или, если есть возможность, воспользоваться другой машиной. Если написать сообщение в поле ввода, которое расположено внизу под окошком диалога, - оно будет отправлено всем участником команды:



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



Первый пункт: Send Screen Capture to ... позволяет отправить другому разработчику снимок выбранной области экрана. Например, как выглядит участок кода, текста в консоли или еще что-нибудь. Если выбрать данный пункт, то появится окошко-предупреждение, объясняющее, что сейчас надо делать.



Подождем 5 секунд и выделим участок кода. Нам зададут вопрос, действительно ли мы хотим отправить этот участок?



Другая сторона, соответственно, примет отправленное изображение:



Второй пункт: Co-Browse Web with .... Здесь все просто: мы вводим URL сайта и он открывается во встроенном браузере Eclipse. Причем, открывается как у нас, так и у пользователя, с которым мы ведем взаимодействие.

Третий пункт: Ring ... - показать всплывающее окно с сообщением. Выбираем его - перед нами появляется окошко для ввода сообщения:



Пишем текст сообщения, нажимаем ОК - сообщение всплывает перед глазами коллеги:



Четвертый пункт: Send Private Message to .... Понятно, что всплывающее сообщение сразу же отвлекает от работы, поэтому пользоваться данной опцией нужно аккуратно. К счастью, существует данный пункт меню. Если его выбрать - на вкладке Messages появится страничка с диалогом. Здесь можно отправлять и получать приватные сообщения от/к пользователя/ю.



Пятый пункт: Send Show View Request to .... Наиболее понравившаяся мне опция, с ее помощью мы отправляем коллеге запрос на открытие у него в Eclipse интересующего нас вида. Т.е., например, мы хотим, чтобы он открыл вид Ant. Выбираем данный пункт меню - всплывает окно выбора вида:



Выбираем пункт Ant и он открывается в Eclipse у коллеги:



В общем-то это все, что хотелось сказать о пункте Collaboration. Теперь рассмотрим общение с помощью провайдеров, например подключимся к Jabber, используя свой аккаунт: выберем пункт XMPP, после чего заполним форму.



К сожалению, разработчики не предусмотрели автоматическое определение Jabber-сервера, поэтому его придется вводить руками. Нам вежливо напомнят, что аккаунту на Gmail соответствует сервер talk.google.com.

После подключения к серверу появится вкладка Contacts, на которой, соответственно, будут отображаться все наши контакты:



После того, как мы выберем конкретный контакт, на вкладке Messages откроется страница диалога:



Если контакт подключен к серверу так же с помощью ECF, то в его контекстном меню будут доступны опции Send Show View Request и Send Screen Capture, аналогичные описанным выше. Send File тоже работает.



Вид File Transfer/File Transfer представляет собой download-клиент. После нажатия на иконку Start new File Download откроется диалоговое окно выбора источника файла:



При нажатии на Download файл будет закачан.



Существует так же вид Connections/Chats, который представляет собой список, например, IRC-чатов. Если подключиться к IRC-серверу с помощью соответствующего провайдера, то данный вид откроется и будет активным:



И, наконец, вид Connections/Service Discovery предоставляет нам дерево запущенных удаленных OSGi-сервисов. Показываются все обнаруженные сервисы, включая и запущенные на локальной машине. В случае одного запущенного R-OSGi-сервиса это окно выглядит так:



Понятно, что данное представление существенно помогает при отладке взаимодействия в распределенной OSGi-среде.

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

А вы собираетесь использовать средства, предоставляемые ECF в своей практике? Я имею ввиду как программные абстракции, так и Collaboration/Service Discovery/Providers.

З.Ы. Недавно я начал контрибьютить в ECF - разрабатываю провайдер для взаимодействия по протоколу OSCAR/ICQ с использованием caffeineim. Если вы используете данную библиотеку - хорошая новость для вас: я продолжу ее поддерживать.

Понравилось сообщение - подпишитесь на блог или читайте меня в twitter

7 комментариев:

hazzik комментирует...

Паша, тебе eclipse за статьи не платит?:)

Andrey комментирует...

Понятно что это возможности платформы и на этом можно много что построить, но с точки зрения пользователя eclipse как ide... одни эмоции. Например, за ring можно и по морде получить :)

В связи с вышесказанным вопрос: неужели это кто-то действительно использует для взаимодействия в процессе разработки?

Pavel Samolisov комментирует...

to hazzik, I did it just for lulz :)

to Andrey, Я сам про эти фичи узнал только недавно, еще не успел внедрить. А за ринг таки да - можно и по морде :) Но вот например отправить снэпшот экрана - бывает полезно. Так же понравились Jabber и IRC-клиенты. В первой статье цикла я так же писал про твиттер-клиент, его тоже можно поставить как плагин.

Andrey комментирует...

jabber, irc и прочие, на мой взгляд, интереснее привычных (возможно более удобных) системных в случае подшивки журналов разговоров к проекту - это было бы действительно здорово, своего рода система Уточнения требований ;)

Pavel Samolisov комментирует...

Хорошая идея, кстати, чтобы для конкретного проекта велась отдельная история с репликами всех заинтересованных. Если не забуду - попробую предложить разработчикам ECF.

vt комментирует...

Спасибо, не знал что такая штука есть, надо на работе предлодить заюзатью Думаю как Google Wave туда прикрутят будет очень удобная вещь

Pavel Samolisov комментирует...

Работа над провайдером для Google Wave активно ведется.

Отправить комментарий

Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!