Интеграция IBM Lotus Connections с технологиями Microsoft

В статье рассматриваются возможности параллельного использования IBM Lotus Connections, Microsoft SharePoint и Live Communications Server и доказывается простота интеграции продуктов IBM Lotus и Microsoft.

Луис Бенитес, старший ИТ-специалист, IBM

Луис Бенитес - старший ИТ-специалист подразделения IBM Software Services for Lotus. С января 2007 г. он занимается развёртыванием Lotus Connections для первых клиентов, внедряющих этот продукт. Луис пришёл в IBM Software Services в начале 2004 г., а до этого работал в группах по разработке системных продуктов IBM Lotus LearningSpace и IBM Lotus Learning Management. Связаться с Луисом можно по адресу Luis_Benitez@us.ibm.com.



27.06.2008

IBM Lotus Connections, первый продукт Lotus в стиле Web 2.0, обладает значительным интеграционным потенциалом. Разработанный для расширения, встраивания и создания гибридных приложений, Lotus Connections может интегрироваться с продуктами Microsoft, например, Microsoft SharePoint и Microsoft Live Communications Server. Эта статья написана для разработчиков приложений, хорошо разбирающихся в HTML-разработке и обладающих некоторыми знаниями в области приложений J2EE и Microsoft .NET.

Lotus Connections как дополнение к технологиям Microsoft

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

При разработке Lotus Connections упор специально делался на использование открытых стандартов, например Atom, RSS, J2EE и других. Фактически, одной из задач при проектировании было максимальное облегчение интеграции с существующими приложениями и добавление в них социально-ориентированных возможностей, таких как закладки, функции Person tags (всплывающие окна с информацией о контакте) и activities (средство организации совместной работы).

Внутри многих корпораций уже развёрнуты два популярных приложения для совместной работы в сети (внутри подразделений или на уровне отделов): Microsoft SharePoint и Microsoft Live Communications Server. Live Communications Server представляет собой серверную составляющую для приложения мгновенного обмена сообщениями.

SharePoint создавался как средство для совместного использования контента, а доступ к нему контролируется модератором или владельцем сайта. Тем не менее, в SharePoint не предусмотрены возможности обмена пользовательскими закладками или совместной работы по какой-то конкретной проблеме. Эти две весьма полезных для пользователей SharePoint возможности предоставляет Lotus Connections.

Примером того, как Lotus Connections дополняет SharePoint, может служить функция Communities. Одной из самых больших проблем во многих организациях является предоставление своим сотрудникам возможности поиска хранилища интеллектуальных ресурсов. Lotus Connections Communities может решить эту проблему, давая владельцу сообщества возможность рекламировать определённый сайт SharePoint, на котором пользователи сообщества хранят свои интеллектуальные ресурсы. Таким образом, когда сотрудник выполняет поиск по Lotus Connections, он может натолкнуться на конкретное сообщество и легко перейти на соответствующий сайт SharePoint.

Аналогично, сотрудники могут с помощью Lotus Connections Dogear создавать ссылки на конкретные страницы внутри SharePoint. Это не только позволяет сотрудникам находить потенциальные хранилища, но и даёт им прямой доступ к содержимому, которое они ищут с помощью социально-ориентированных возможностей функции Dogear, например, комментариев и тегов.

Использование служб Lotus Connections Communities и Dogear для предоставления пользователям Microsoft SharePoint расширенных возможностей работы в социальных сетях не требует специального кода или интеграции. Обе службы являются стандартными функциями Lotus Connections.

В Lotus Connections также входит служба Person tag, вызывающая всплывающее JavaScript-окно, когда пользователь наводит курсор на чьё-либо имя. Её очень легко добавить к существующим Web-приложениям. Наличие этой службы явно отличает Lotus Connections от Microsoft SharePoint. При добавлении службы Person tag из Lotus Connections в вашу среду пользователи Microsoft SharePoint сразу же получат ценную возможность простого доступа к дополнительной информации о других пользователях. Итак, Lotus Connections значительно облегчает нахождение сайтов SharePoint на предприятии.


Интеграция Lotus Connections с Microsoft SharePoint

В этом разделе описывается процесс интеграции Lotus Connections с Microsoft SharePoint, с особым упором на добавление функции Lotus Connections Person tag.

Добавление функции Person tag к Web-приложению

Этот раздел содержит краткий обзор шагов, необходимых для интеграции функции Person tag в типичную Web-страницу.

В Lotus Connections Profiles имеется служба Semantic Tag, с помощью которой можно быстро и легко добавить Person tag, аналогичный показанному на рисунке 1, в любое Web-приложение.

Рисунок 1. Person tag: Джиа Лайонз
Person tag: Джиа Лайонз

Чтобы это сделать, прежде всего необходимо добавить код из листинга 1 в HTML-элемент <HEAD>.

Листинг 1. Код, включающий компоненты повторного использования из Profiles
<script type="text/javascript" 
src="http://profiles.acme.com/ibm_semanticTagServlet/javascript/semanticTagService.js">
</script>
<link rel="stylesheet" 
href="http://profiles.acme.com/profiles/css/styles.css" type="text/css" />

Этот код загружает службу Lotus Connections в вашу Web-страницу. Затем нужно поместить код из листинга 2 где-нибудь внутри элемента <BODY> вашего HTML-файла:

Листинг 2. Код, включающий функцию Person tag для контакта

<div id="luiscard" class="vcard">
 <a href="http://profiles.acme.com/profiles/html/simpleSearch.do?searchFor=
 gia_lyons@us.ibm.com&searchBy=email" class="fn url person">Gia Lyons</a>
 <span class="email" style="display:none;">gia_lyons@us.ibm.com</span>
</div>

Отредактируйте выделенные жирным шрифтом элементы, введя данные, соответствующие вашей среде. Вот и всё. Всё очень просто.

Служба Person tag ищет информацию о пользователе на основе адреса электронной почты и добавляет ссылку на Web-страницу. При наведении пользователем курсора на эту ссылку появляется окно Person tag.

Добавление Person tag к Microsoft SharePoint

Как вы видели из предыдущего раздела, добавить Person tag в типичное Web-приложение очень просто. Если есть возможность изменить HTML-разметку вокруг имени пользователя, можно добавить Person tag.

Работать же с Microsoft SharePoint сложнее, поскольку около 95 % HTML генерируется сервером при помощи DLL-файлов. Следовательно, вмешаться в HTML-разметку, чтобы вставить рядом с именем пользователя необходимый код, невозможно.

В этом разделе объясняется, как интегрировать функцию Lotus Connections Profiles Person tag в Microsoft SharePoint. В частности, объясняется, как настраивать страницу people.aspx, чтобы добавить Person tag, появляющийся при наведении курсора на имя пользователя. На рисунке 2 показана первоначальная Web-страница.

Рисунок 2. Стандартное представление People and Groups в Microsoft SharePoint
Стандартное представление People and Groups в Microsoft SharePoint

Кликните, чтобы увидеть увеличенное изображение

Рисунок 2. Стандартное представление People and Groups в Microsoft SharePoint

Стандартное представление People and Groups в Microsoft SharePoint

Чтобы вставить функцию Person tag в динамически сгенерированную Web-страницу, нужно с помощью JavaScript модифицировать HTML после его генерации различными DLL-файлами. Ниже даны шаги по изменению страницы в SharePoint для включения функции Person tag:

  1. Зайдите на сервер SharePoint.
  2. Перейдите в каталог C:\Program Files\Common Files\Microsoft Shared\
    web server extensions\12\TEMPLATE\LAYOUTS.
  3. Создайте резервную копию people.aspx.
  4. Отройте people.aspx каким-нибудь текстовым редактором.
  5. Найдите внутри файла следующую строку:

    <asp:Content ContentPlaceHolderId="PlaceHolderAdditionalPageHead"
    runat="server">

  6. Внутри этого HTML-элемента найдите элемент <script>. Перед этим элементом вставьте код, приведённый в листинге 3.

    ПРИМЕЧАНИЕ: Укажите правильное имя сервера для функции Lotus Connections Profiles вместо profiles.acme.com.
Листинг 3. Код, включающий компоненты повторного использования из Profiles
<script type="text/javascript" 
src="http://profiles.acme.com/ibm_semanticTagServlet/javascript/
semanticTagService.js"></script>
<link rel="stylesheet" 
href="http://profiles.acme.com/profiles/css/styles.css" type="text/css" />

Код должен выглядеть как в листинге 4.

Листинг 4. Код, добавленный к заголовку SharePoint
<asp:Content ContentPlaceHolderId=”PlaceHolderAdditionalPageHead” runat=”server”>
 <SharePoint:HtcMenuClientFiles runat=”server”/>

<script type="text/javascript" src="http://profiles.acme.com/ibm_semanticTagServlet/
javascript/semanticTagService.js"></script>
<link rel="stylesheet" 
href="http://profiles.acme.com/profiles/css/styles.css" type="text/css" />

<script type=”text/javascript”>
 var currentViewId = ‘<asp:Literal id=”LiteralCurrentViewId” runat=”server”/>’;
 function NavigateToView(viewId)
 {
   var url=window.location.href + “”;
   url = StURLSetVar2(url, “view”, viewId);
  1. Найдите внутри файла следующую строку:

    <asp:PlaceHolder id="PanelCannotViewMembership" runat="server" Visible="false">

    Перед этой строкой вставьте код, приведённый в листинге 5.

    ПРИМЕЧАНИЕ: Укажите правильное имя сервера для функции Lotus Connections Profiles вместо profiles.acme.com.
Листинг 5. Код, включающий функцию Person tag в SharePoint
	<script>
		// Узнаём ID таблицы, содержащей имена пользователей, и получаем её
		var lconnUserTableId = ctx.listName + "-" + ctx.view;
		var lconnUserTable = document.getElementById( lconnUserTableId );

		// Получаем чекбокс, содержащий пользовательскую информацию
		var lconnInputs = 
		docu-ment.getElementsByName('spUserSelectionCheckBox_1');
		var lconnInputsLength = lconnInputs.length;

		// по каждому пользователю
		for (var lconnIterator=0; 
		lconnIterator < lconnInputsLength; lconnIterator++)
		{
			// получаем подробную информацию по пользователям
			var lconnInput = lconnInputs[lconnIterator];
			var lconnUserEmail = lconnInput.getAttribute('email');
			var lconnUserName = lconnInput.getAttribute('title');

			// получаем ячейку столбца - третью после чекбокса 
			var lconnInputParent = lconnInput.parentNode;  // the TD
			var lconnCell = 
			lconnInputPar-ent.nextSibling.nextSibling.nextSibling;

			// теперь, когда у нас есть столбец, 
			анализируем внутреннюю таблицу
			var lconnCell2 
			= lcon-nCell.firstChild.
			firstChild.firstChild.firstChild.nextSibling;
			
			// при необходимости устанавливаем новый HTML
			var lconnNewHTML = "<div class='vcard'><a 
			href=
			'http://profiles.acme.com/profiles/html/simpleSearch.do?searchFor
			=" + 
			lconnUserEmail + "&searchBy=email' class='fn url person'>" + 
			lconnUserName + "</a>";
			lconnNewHTML += "<span class='email' style='display:none;'>" + 
			lconnUserEmail + "</span></div>";

			lconnCell2.innerHTML = lconnNewHTML;
		}
</script>
  1. Сохраните файл.
  2. Обновите страницу в SharePoint.

После нажатия на кнопку браузера "обновить" можно наводить курсор на различные имена пользователей, и при этом будет появляться всплывающее окно Person tag с информацией из Lotus Connections Profiles. Кроме того, если нажать на какое-нибудь имя, вы попадёте на страницу профиля Lotus Connection этого человека, где можно увидеть всю информацию по этому пользователю.


Интеграция Lotus Connections с функцией осведомлённости о присутствии Microsoft Live Communications Server

В этом разделе содержится краткий обзор шагов, необходимых для интеграции функции осведомлённости о присутствии (presence awareness) Microsoft Live Communications Server (LCS) в типичную Web-страницу.

В Microsoft Office Communicator и Microsoft Messenger имеется Name Control, DLL-библиотека (элемент управления ActiveX), поставляющаяся с Microsoft Office 2003 и следующими версиями. При вызове с Web-страниц этот элемент управления предоставляет богатую функциональность осведомлённости о присутствии, реализовать которую очень просто. Для организаций, в которых применяется и Live Communications Server, и Microsoft Office 2003 или выше, простейшим способом реализации этой функциональности является использование Name Control. Именно Name Control DLL используется в Microsoft SharePoint Services для отображения информации о присутствии и предоставления возможностей совместной работы на сайтах SharePoint. Нашей целью является использование этого элемента управления на создаваемых Web-сайтах и страницах.

Чтобы это сделать, прежде всего нужно добавить следующую строку к HTML-элементу <HEAD>:

<script type="text/javascript"
src="/profiles/javascript/NameControl.js"></script>

Затем нужно разместить следующий код внутри вашего HTML-файла:

<img id="imgStatus ${email}_status"
src="/profiles/images/namecontrol_images/Unknown.gif"
onload="PresenceControl('user-email');"/>

Вот, собственно, и всё, что нужно сделать.

Недостатком данного подхода является то, что он работает только в Microsoft Internet Explorer и на машинах, на которых установлен Microsoft Office Communicator. Для обхода этого ограничения Microsoft предлагает AJAX API, который можно использовать для выполнения запросов о присутствии. Для простоты в нашей статье рассматривается, главным образом, решение на основе ActiveX.

Добавление функциональности осведомлённости о присутствии в Lotus Connections Profiles

В этом разделе объясняется, как интегрировать Lotus Connections и функцию осведомлённости о присутствии LCS. В частности, объясняется, как настроить пользовательское представление Profile.

Рисунок 3. Представление Profile для Луиса Бенитеса
Представление Profile для Луиса Бенитеса

Чтобы добавить индикатор присутствия LCS в Lotus Connections, прежде всего загрузите NameControl.js с сайта Microsoft. Зайдите на сервер Profiles.

Вставьте JavaScript в HTML-элемент <HEAD>, выполнив следующие шаги:

  1. Скопируйте NameControls.js в каталог

    <WAS_PROFILE_ROOT>\installedApps\<cellName>
    \Profiles.ear\peoplepages.war\javascript

  2. Перейдите в каталог

    <WAS_PROFILE_ROOT>\installedApps\<cellName>\Profiles.ear\
    peoplepages.war\WEB-INF\jsps\html

  3. Создайте резервную копию файла tiles-def.xml.
  4. Откройте файл tiles-def.xml каким-нибудь текстовым редактором.
  5. Найдите в файле следующую строку:

    <definition name="scene.profile_view" ex-tends="layout.profiles3Col">

  6. Внутри этого элемента найдите:

    <putList name="jsIncludes">

  7. Добавьте следующую строку внутрь элемента putList:

    <add value="/javascript/NameControl.js" />

  8. Теперь весь элемент <definition> должен выглядеть как код из листинга 6.
Листинг 6. Модифицированный элемент definition для scene.profile_view
<definition name="scene.profile_view" ex-tends="layout.profiles3Col">
 <put name="pageTitleKey” value="label.page.profiles" 	type="string" />
	<put name="sceneBanner" value="/WEB-INF/jsps/html/scenes/banner.jsp" />
	<put name="sceneHeader"	value="/WEB-INF/jsps/html/scenes/header.jsp" />
	<put name="leftCol"  value="/WEB-INF/jsps/html/scenes/profile/profileNav.jsp" />
 	<put name="rightCol" 
 	value="/WEB-INF/jsps/html/scenes/profile/reportingStructure.jsp" />
	<put name="scene" value="/WEB-INF/jsps/html/scenes/profile/businessCard.jsp" />
	<putList name="contextualHelpList">
		<add value="/WEB-INF/jsps/html/scenes/profile/profileTagsHelp.jsp" />
	</putList>
	<putList name="jsIncludes">
		<add value="/javascript/dojo/dojo.js" />
		<add value="/javascript/prototype/prototype.js" />
		<add value="/javascript/behaviour/behaviour.js" />
		<add value=
		"/javascript/scriptaculous/scriptaculous.js?load=effects,builder" />
		<add value=
		"#personTagSvcLocation#/javascript/semanticTagService.js?version=
		#version#&lang=#language#" />
		<add value="#sametimeLinksSvcLocation#/stlinks.js" />
		<add value="/javascript/personalize.js?version=#version#" />
		<add value="/javascript/awareness.js?version=#version#" />
		<add value="/javascript/common.js?version=#version#" />
		<add value="/javascript/popup.js?version=#version#" />
		<add value="/javascript/profiles_behaviours.js?version=#version#" />
		<add value="/javascript/profiles_help.js?version=#version#" />
		<add value="/javascript/profiles.js?version=#version#" />
<add value="/javascript/NameControl.js" />
	</putList>
</definition>
  1. Повторите шаги 5 - 8 для следующего элемента:

    <definition name="scene.my_profile_view" ex-tends="layout.profiles3Col">

  2. Сохраните файл tiles-def.xml.
  3. Перезапустите сервер Profiles.

Далее, добавим элемент к businessCard.jsp, странице, на которой будет формироваться информация о присутствии. Для этого нужно выполнить следующие шаги:

  1. Перейдите в каталог:

    <WAS_PROFILE_ROOT>\installedApps\<cellName>
    \Profiles.ear\peoplepages.war\WEB-INF\jsps\html\scenes\profile

  2. Сохраните копию businessCard.jsp.
  3. Откройте businessCard.jsp текстовым редактором.
  4. Найдите следующий оператор:

    </div> <!-- end bioLevel2 -->

  5. Добавьте операторы из листинга 7 перед этой строкой. В результате файл должен выглядеть как листинг 8.

    Lotus Connections автоматически заменяет элемент ${email} на адрес электронной почты пользователя, профиль которого в данный момент просматривается.
Листинг 7. Код, включающий функцию осведомлённости о присутствии контакта
<h3>
	<span id="imStatus ${email}_status">
	<img id="imgStatus ${email}_status" 
	src="/profiles/images/namecontrol_images/Unknown.gif" 
	onload="PresenceControl('${email}');"/>
	</span>
	</h3>
Листинг 8. Код, реализующий осведомлённость о присутствии, добавленный к Lotus Connections
<h3>
	<span id="imStatus ${email}_status">
	<img id="imgStatus ${email}_status" 
	src="/profiles/images/namecontrol_images/Unknown.gif" 
	onload="PresenceControl('${email}');"/>
	</span>
	</h3>
</div> <!--end bioLevel2 -->
  1. Сохраните файл.

Теперь давайте выполним поиск пользователя в Lotus Connections. Сначала вы увидите экран, показанный на рисунке 4.

Рисунок 4. Модифицированное представление Profile
Модифицированное представление Profile

На рисунке 5 показано то же представление Profile, но с задействованной функциональностью осведомлённости о присутствии.

Рисунок 5. Контекстное меню, отображающееся при нажатии правой кнопкой мыши на индикаторе присутствия
Контекстное меню, отображающееся при нажатии правой кнопкой мыши на индикаторе присутствия

Заключение

В этой статье мы продемонстрировали, как Lotus Connections может дополнять Microsoft SharePoint и Live Communications Server. В статье шаг за шагом описывается процесс добавления функции Lotus Connections Person tag к SharePoint. Кроме того, объясняется специальная настройка Lotus Connections и его использование с функцией осведомлённости о присутствии Microsoft Live Communications Server.

Ресурсы

Научиться

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Lotus
ArticleID=317377
ArticleTitle=Интеграция IBM Lotus Connections с технологиями Microsoft
publish-date=06272008