Перейти к тексту

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

При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

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

  • Закрыть [x]

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

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

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

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

  • Закрыть [x]

Разработка составного приложения в программе IBM Lotus Notes для интеграции Lotus Notes с календарями Google

Мин Чэнь, ведущий инженер программист, IBM
Мин Чэнь (Ming Chen) ведущий инженер-программист в компании China Software Development Lab в Пекине. Он возглавляет отдел Lotus Connections System Testing Team в Пекине с декабря 2006 г. Мин работает в IBM с 2005 г., он разрабатывает тесты для IBM Lotus Workplace Business Controls & Reporting, а также IBM Lotus Active Insight. Вы можете связаться с ним адресу: mingchen@cn.ibm.com.
Синь Жан Ван, ведущий инженер-программист, IBM
Синь Жан Ван (Xin Rang Wang) - ведущий инженер-программист компании IBM China Software Development Lab в Пекине. С апреля 2005 г. Синь Жан руководит группой тестирования IBM Lotus Notes и Domino Maintenance Release. Вы можете связаться с ней по адресу: wangxr@cn.ibm.com.

Описание:  Эта статья описывает разработку составного приложения в программе IBM® Lotus® Notes® 8.0, которое интегрирует календари Google и Lotus Notes, основанные на Atom API и XSLT-технологиях.

Дата:  02.06.2009
Уровень сложности:  средний
Активность:  2317 просмотров
Комментарии:  


Сегодня выбор продуктов и сервисов, связанных с календарями, весьма широк. Среди них: Lotus Notes Calendar, Microsoft® Outlook Calendar, Google Calendar и Yahoo! Calendar. Можно использовать одновременно несколько продуктов и сервисов. Например, можно установить Lotus Notes Calendar для связи с клиентами и коллегами, а Google Calendar – в качестве органайзера личных дел, например, дней рождения или вечеринок.

В этом случае для отслеживания всех запланированных событий вам придется переключаться с одного продукта или сервиса на другой, что зачастую причиняет неудобства. Для решения этой проблемы в данной статье мы опишем, как создать составные приложения Lotus Notes 8, которые интегрируют различные календари из распределенных источников. Такое составное приложение дает интегрированное отображение, и в нем можно легко отследить любое событие в распределенных календарях.

В качестве примеров в статье использованы Lotus Notes Calendar LNC и Google Calendar GC.

LNC используется для составления в одном месте календарных заметок: расписания и отслеживания встреч, мероприятий, занимающих целый день, важных событий, напоминаний и уведомлений о событиях. LNC является частью почтового приложения Lotus Notes.

Google Calendar - онлайновый календарный сервис совместного использования. Используя Google Calendar, можно добавлять события и приглашения, сообщать их своим друзьям и родственникам (или не сообщать), а также искать в сети события, в которых вы хотели бы участвовать.

Обзор

При установке Lotus Notes 8 убедитесь, что у вас также установлен редактор Composite Application Editor. Создайте почтовую базу данных Lotus Notes при помощи почтового шаблона Lotus Notes 8. Предполагается, что вы уже знакомы с базами данных IBM Lotus Domino®, Atom/APP и XSLT.

Мы используем составное приложение для интеграции Lotus Notes Calendar Navigator, Lotus Notes Calendar View, Google Calendar Navigator и Managed Browser. Как показано на рисунке 1, все четыре компонента связаны между собой при помощи property broker в составном приложении. Google Calendar Navigator извлекает информацию из Google Calendar Atom, добавляет в информационный файл схему Extensible Stylesheet Language Transformation (XSLT) и выдает Managed Browser команду для перевода.


Рисунок 1. Составное календарное приложение
Составное календарное приложение

Создание базы данных приложения

Для начала работы запустите программу Lotus Notes 8 и откройте окно Новое Приложение (New Application), как показано на рисунке 2. В окне Новое Приложение введите следующее:

  • В поле Название (Title) введите composite
  • В поле Шаблон (Template) выберите Blank Composite Application. Нажмите ОК.

Рисунок 2. Создание базы данных составного приложения
Создание базы данных составного приложения

Для запуска редактора приложения Composite Application Editor выберите Действия (Actions) – Правка (Edit Application). Для переименования нового приложения выберите в диалоговом окне Правка (Edit) – Страница (Page) – Переименовать (Rename), далее введите composite в качестве нового имени.


Интеграция Lotus Notes Calendar Navigator с Lotus Notes Calendar View

Редактор Lotus Notes 8 Composite Application Editor содержит компоненты со встроенными свойствами и действиями. Если вы используете почтовый клиент mail8.ntf, в нем по умолчанию доступен компонент PIM (управление личной информацией). Для отображения компонентов PIM, которые можно добавить в приложение, разверните в редакторе приложений панель компонентов (Component Palette). На этой панели выделите Lotus Notes Calendar Navigator. Переместите выделенное в крайнюю левую часть панели приложения. Там же, в панели Component Palette, выделите Lotus Notes Calendar View. Переместите Lotus Notes Calendar View в крайнюю правую часть панели приложения. Ниже показано, как это выглядит.Рисунок 3.


Рисунок 3. Интеграция Lotus Notes Calendar Navigator с Lotus Notes Calendar View
Интеграция Lotus Notes Calendar Navigator с Lotus Notes Calendar View

Компоненты в приложении связаны таким образом, что инициализация пользователем одного компонента приводит к программному действию другого компонента. В этом приложении, когда выделенная дата в Lotus Notes Calendar Navigator или Lotus Notes Calendar View изменяется, это изменение отображается и в другом компоненте.

Для создания связи между Lotus Notes Calendar Navigator и Lotus Notes Calendar View правой кнопкой щелкните на навигационной панели Lotus Notes Calendar Navigator и выберите Связывание (Wiring). Выберите измененные свойства выделенных данных в Lotus Notes Calendar Navigator и перетащите их в окно Set (Задать) выбранных данных в Lotus Notes Calendar View. Далее выберите Lotus Notes Calendar View как связанный источник. И наконец, выберите свойство Selected data change (изменить выделенные данные) в Lotus Notes Calendar Navigator и перетащите их в действие Set selected date (Задать выбранную дату) в Lotus Notes Calendar View (см. рисунок 4).


Рисунок 4. Создание связи
Создание связи

Теперь следует протестировать созданные связи. Для этого надо выйти из страницы создания связи. При изменении даты в Lotus Notes Calendar Navigator выбранная дата аналогично поменяется и в Lotus Notes Calendar View. Соответственно, когда изменяются даты в Lotus Notes Calendar View, изменения отображаются и в Lotus Notes Calendar Navigator.


Интегрируйте Managed Browser для отображения Google Calendar

В этом разделе описывается, как использовать Managed Browser для просмотра календаря Google. Managed Browser - это встроенный элемент Lotus Notes 8 Composite Application Editor. Чтобы добавить его в приложение, щелкните правой кнопкой по панели компонентов и выделите Добавить компоненты (Add Components) - добавить локально установленные компоненты (Add Locally Installed Components). Далее выделите Managed Browser и нажмите OK (см. рисунок 5). После этого Managed Browser добавлен в панель Component Palette.


Рисунок 5. Добавление Managed Browser
Добавление Managed Browser

Перетащите Managed Browser в нижнюю часть страницы приложения. На навигационной панели правой кнопкой выделите Managed Browser. Как показано на рисунке 6, выберите Редактор Свойств Компонентов - Дополнительно (Edit Component Properties - Advanced) и добавьте следующее свойство:

initialURL=http://www.google.com/calendar


Рисунок 6. Конфигурирование Managed Browser
Конфигурирование Managed Browser

Теперь протестируйте приложение, как показано на рисунке 7. Когда приложение открыто, Managed Browser по умолчанию открыт на странице входа в систему.


Рисунок 7. Тестирование Managed Browser
Тестирование Managed Browser

Пока еще Lotus Notes Calendar и Google Calendar не могут взаимодействовать. В следующих разделах составное приложение использует RSS и API-интерфейс программирования приложений Atom для чтения данных Google Calendar и - XSLT для представления данных Google Calendar. После изменения выбранной даты в Lotus Notes Calendar, дата изменится и в Google Calendar.


Получение данных из Google Calendar на персональный web-навигатор

В этом разделе при создании и тестировании составного приложения вам предстоит работать с протоколами Google Calendar Atom, XSLT, WSDL и др.

Протокол Google calendar Atom

Google Calendar - бесплатный онлайновый календарный сервис, он содержит многочисленные интерфейсы API и виджеты. В своем приложении вы можете использовать интерфейс данных из Google Calendar для создания новых событий, правки и удаления событий и для поиска событий через интерфейс Google data (GData). GData использует два стандартных XML-формата: Atom и RSS. Она также использует систему автозаполнения полей, которая состоит из протокола публикаций Atom и некоторых расширенных возможностей для выполнения запросов (стандартный расширенный шаблон Atom).

Протокол публикаций Atom использует HTTP для правки и создания web-ресурсов при помощи следующих команд:

  • GET используется для поиска образа ресурса или для выполнения запросов.
  • POST используется для создания нового ресурса с динамическим именем.
  • PUT используется для обновления известного ресурса.
  • DELETE используется для удаления ресурса.

В следующем разделе мы покажем, как при помощи Google Calendar Atom API выполнять поиск событий в определенной последовательности.

Вы можете послать на календарный сервис такой HTTP-запрос:

  • URL:http://www.google.com/calendar/feeds/UserGoogleAccount/public/full?start-min=2007-09-11T00:00:00&start-max=2007-09-11T23:59:59
  • HTTP-команда: Get

Использование XSLT для изменения данных в Google Calendar

Для изменения данных GC в канале Atom используется схема XSLT. К файлу канала добавьте следующую строку. Файл XSLT включен в ZIP-архив с образцами.

<?xml-stylesheet type="text/xsl" href="gcal.xsl"?>

Изменения, показанные на рисунке 8, отобразились, когда канал открылся в браузере.


Рисунок 8. Изменение данных Google Calendar при помощи XSLT
Изменение данных Google Calendar при помощи XSLT

Получение канала Google Calendar в базе данных навигатора

База данных Lotus Notes используется для извлечения и кэширования данных Google Calendar в канале Atom. Откройте Lotus Domino Designer 8 и выберите Создать новое приложение (Create a new application). Введите Google Calendar Navigator в качестве названия и gcalnav.nsf в качестве имени файла. Выберите Show advanced templates (Показ дополнительных шаблонов) и выберите шаблон perweb50.ntf. См. рисунок 9.


Рисунок 9. Создание базы данных навигатора
Создание базы данных навигатора

Создайте действие для получения канала Google Calendar Atom. Откройте Просмотр всех страниц (All page view) и выберите Создать действие (Create Action) – Действие (Action). Введите Reload Gcal в качестве имени действия. Удалите действие Include из панели меню и Include из меню Действий (Actions). Код приведен в листинге 1. После его запуска, действие ищет в канале Google Calendar Atom файл full.xml. Здесь находятся все события, запланированные на 1 cентября 2007 г. Схема XSLT также прикреплена к файлу.


Листинг 1. Код действия

Sub Click(Source As Button)
	Dim s As New NotesSession, ws As New NotesUIWorkspace
	Dim uidb As NotesUIDatabase, db As NotesDatabase, doc As NotesDocument
	Set uidb = ws.CurrentDatabase 
	Set db = s.CurrentDatabase
	
	gcalurl$ = 
"http://www.google.com/calendar/feeds/UserGoogleAccount/public/full?start-min=
2007-09-01T00:00:00&start-max=2007-09-01T23:59:59"
	Dim xmlDoc As NotesDocument
	Set xmlDoc = db.GetDocumentByURL(gcalurl$,1)
	
	Dim xmlAttach As NotesEmbeddedObject
	Set xmlAttach = xmlDoc.GetAttachment("full")
	xmlAttach.ExtractFile("data/full.xml")
	Dim fileNum As Integer
	fileNum% = Freefile()
	Open "data/full.xml" For Input As fileNum%
	Input #fileNum%,xmlStr$
	Close #fileNum%
	
	Open "data/full.xml" For Output As fileNum%
	xmlStr$ = Left$(xmlStr$, 38) + "<?xml-stylesheet type=""text/xsl"" 
	href=""gcal.xsl""?>" + Right$(xmlStr$, Len(xmlStr$) - 38)
	Print #fileNum%, xmlStr$
	Close #fileNum%
End Sub

Создание WSDL и выявление свойств и действий

В окне навигатора Lotus Domino Designer 8 выберите Составные приложения (Composite Applications) – Свойства связываний – Свойства новых связываний (New Wiring Properties) и в качестве имени введите gcalnav. Выберите Открыть файл (Open File), чтобы открыть Property Broker Editor.

  1. Во вкладке Типы (Types) добавьте новую область имен, как показано на рисунке 10.
    • В поле Префикс (Prefix) введите pfx.
    • В поле Область имен (Namespace) введите http://www.ibm.com/wps/eb.
  2. В поле Типы (Types) выберите Новый тип (NewType) и введите:
    • В строке Имя (Name) - InURLType.
    • В строке Тип (Type) - String.
    • В строке Область имен (Namespace) - http://www.ibm.com/wps/eb.


    Рисунок 10. Создание WSDL-файла в базе данных навигатора
    Создание WSDL-файла в базе данных навигатора

  3. Откройте вкладку Свойства (Properties) и добавьте два свойства, указанные далее на рисунке 11:
    • Свойство LoadURLChanged
      • В строке Имя (Name) введите LoadURLChanged.
      • В строке Тип (Type) введите InURLType.
      • В строке Заголовок (Title) введите LoadURLChanged.
      • В строке Описание (Description) введите - Load URL when Changed.
    • Свойство SelectedDateChanged
      • В строке Имя (Name) введите SelectedDateChanged.
      • В строке Тип (Type) введите Date/Time.
      • В строке Заголовок (Title) введите SelectedDateChanged.
      • В строке Описание (Description) введите Selected Date Changed.


    Рисунок 11. Добавление свойств
    Добавление свойств

  4. Далее выберите вкладку Действия (Actions Actions) и введите следующую информацию:
    • В строке Действия (Actions) введите - Reloadonedaycal.
    • В строке Имя (Title) введите - Reloadonedaycal.
    • В строке Описание (Description) введите - Reload one day calendar.
    • В строке Параметр ввода действия - свойство (Action Input Parameter-Property) введите - SelectedDateChanged.
    • В строке Параметр вывода действия (Action Output Parameter) введите - LoadURLChanged.
    См. рисунок 12.


    Рисунок 12. Добавление действий
    Добавление действий

Сохраните WSDL-файл и закройте Property Broker Editor. Запустите команду Обновить (Refresh) и выберите WSDL-файл, который вы только что создали. Откройте свойства действия Перезапустить Gcal (Reload Gcal), далее откройте вкладку Дополнительно (Advanced) и выберите в поле Составные настройки (Composite Settings) Reloadonedaycal в качестве имени действия (см. рисунок 13).


Рисунок 13. Объединение действий
Объединение действий

Объедините код действия и код Property Broker.

Содержание Reload Gcal очень похоже на код, показанный в листинге 2


Листинг 2. Код Reload Gcal
Sub Click(Source As Button)
	Dim s As New NotesSession, ws As New NotesUIWorkspace
	Dim uidb As NotesUIDatabase, db As NotesDatabase, doc As NotesDocument
	Set uidb = ws.CurrentDatabase 
	Set db = s.CurrentDatabase
	
	Dim pb As NotesPropertyBroker  ‘create new NotesPropertyBroker object
	Set pb = s.GetPropertyBroker
	
	Dim pbInputProperty As NotesProperty, pbContext As Variant
	pbContext = pb.InputPropertyContext   ‘array of NotesProperty objects
	Set pbInputProperty = pbContext(0)    ‘handle to first NotesProperty object
	
	Dim InputPropertyName As String, NameSpace As String  
	InputPropertyName = pbInputProperty.Name   ‘name of NotesProperty object
	NameSpace = pbInputProperty.NameSpace   ‘namespace of NotesProperty object
	
	Dim pbValue As Variant
	pbValue = pb.getPropertyValue(InputPropertyName) ‘array of values of NotesProperty
	
	Dim cDT As NotesDateTime
	Set cDT = pbValue(0)  ‘first value from array NotesProperty object
	
	gcalurl$ = “http://www.google.com/calendar/feeds/xinrangw%40hotmail.com/
	public/full?start-min=” + cDT.DateOnly + “T00:00:00&start-max=” 
	+ cDT.DateOnly + “T23:59:59”

	……Get Google Calendar feed and add XSLT schema line……

	Call pb.setPropertyValue(“LoadURLChanged”,”c:\notes\data\full.xml”)
	Call pb.Publish()
End Sub

Добавление к составному приложению Google Calendar Navigator и его связывание с другими компонентами

Теперь вернитесь в редактор составных приложений (Composite Application Editor). На панели компонентов выберите вкладку Добавить компоненты (Add Components) – Добавить NSF-компонент (Add NSF Component). Далее введите:

  • В строке Имя компонента (Component Name) - Google Calendar Navigator.
  • В строке Описание компонента (Component Description) - Google Calendar Navigator.

Выберите Просмотр Lotus Notes URL (Browse Lotus Notes URL) и введите следующее:

  • В строке Вид объекта (Kind of object) - Database.
  • В строке Приложение (Application) введите - Google Calendar Navigator.

Смотрите рисунки 14 и 15.


Рисунок 14. Добавление компонента (1)
Добавление компонента (1)

Рисунок 15. Добавление компонента (2)
Добавление компонента (2)

Дважды нажмите ОК, после этого к компонентам добавится Google Calendar Navigator. Перетащите Google Calendar Navigator в нижнюю часть страницы приложения.

Теперь вы можете создать связь с Google Calendar Navigator. В панели навигации нажмите правой кнопкой на Notes Calendar Navigator и выберите Связывание (Wiring). Выделите опцию Изменения выбранной даты (Selected date changed) и добавьте ее в действие Reloadonedaycal в Google Calendar Navigator (см. рисунок 16).


Рисунок 16. Создание связи между Lotus Notes Calendar Navigator и Google Calendar Navigator
Создание связи между Lotus Notes Calendar Navigator и Google Calendar Navigator

Правой кнопкой нажмите на Google Calendar Navigator, далее - на опцию Выбрать в качестве источника связи (Select as wire source). Перетащите связь из LoadURLChanged в опцию . Задать для браузера URL (Set URL to browser) и загрузите в Managed Browser (см. рисунок 17).


Рисунок 17. Создание связи между Google Calendar Navigator и Google Calendar Navigator
Создание связи между Google Calendar Navigator и Lotus Calendar Navigator

Теперь вы можете протестировать свое приложение. Измените дату в LNCN, GCal должен показать вам такую же дату.


Заключение

С помощью этой статьи вы научились разрабатывать составное приложение Lotus Notes 8.0, которое позволяет вам создавать связь между GCal и LNC, основанную на технологиях Atom API и XSLT.



Загрузка

ОписаниеИмяРазмерМетод загрузки
Sample codesamplecode.zip1470KBHTTP

Информация о методах загрузки


Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Об авторах

Мин Чэнь (Ming Chen) ведущий инженер-программист в компании China Software Development Lab в Пекине. Он возглавляет отдел Lotus Connections System Testing Team в Пекине с декабря 2006 г. Мин работает в IBM с 2005 г., он разрабатывает тесты для IBM Lotus Workplace Business Controls & Reporting, а также IBM Lotus Active Insight. Вы можете связаться с ним адресу: mingchen@cn.ibm.com.

Синь Жан Ван (Xin Rang Wang) - ведущий инженер-программист компании IBM China Software Development Lab в Пекине. С апреля 2005 г. Синь Жан руководит группой тестирования IBM Lotus Notes и Domino Maintenance Release. Вы можете связаться с ней по адресу: wangxr@cn.ibm.com.

Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Спасибо. Эта запись была помечена для модератора.


Помощь по сообщениям о нарушениях

Сообщение о нарушениях

Сообщение о нарушении не было отправлено. Попробуйте, пожалуйста, позже.


developerWorks: вход


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


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

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

 


При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Выберите ваше отображаемое имя

При первом входе в 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=393142
ArticleTitle=Разработка составного приложения в программе IBM Lotus Notes для интеграции Lotus Notes с календарями Google
publish-date=06022009
author1-email=minghchen@cn.ibm.com
author1-email-cc=
author2-email=wangxr@cn.ibm.com
author2-email-cc=

Теги

Help
Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Используйте ползунок, чтобы отразить больше или меньше тегов.

КнопкаПопулярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere).

Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).

Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Кнопка Популярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere). Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).