Сегодня выбор продуктов и сервисов, связанных с календарями, весьма широк. Среди них: 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 и выберите Связывание (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. Как показано на рисунке 6, выберите Редактор Свойств Компонентов - Дополнительно (Edit Component Properties - Advanced) и добавьте следующее свойство:
initialURL=http://www.google.com/calendar
Рисунок 6. Конфигурирование Managed Browser
Теперь протестируйте приложение, как показано на рисунке 7. Когда приложение открыто, Managed Browser по умолчанию открыт на странице входа в систему.
Рисунок 7. Тестирование 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 - бесплатный онлайновый календарный сервис, он содержит многочисленные интерфейсы 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 в базе данных навигатора
База данных 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.
- Во вкладке Типы (Types) добавьте новую область имен, как показано на рисунке 10.
- В поле Префикс (Prefix) введите
pfx. - В поле Область имен (Namespace) введите
http://www.ibm.com/wps/eb.
- В поле Префикс (Prefix) введите
- В поле Типы (Types) выберите Новый тип (NewType) и введите:
- В строке Имя (Name) -
InURLType. - В строке Тип (Type) -
String. - В строке Область имен (Namespace) -
http://www.ibm.com/wps/eb.
Рисунок 10. Создание WSDL-файла в базе данных навигатора
- В строке Имя (Name) -
- Откройте вкладку Свойства (Properties) и добавьте два свойства, указанные далее на рисунке 11:
-
Свойство LoadURLChanged
- В строке Имя (Name) введите
LoadURLChanged. - В строке Тип (Type) введите
InURLType. - В строке Заголовок (Title) введите
LoadURLChanged. - В строке Описание (Description) введите -
Load URL when Changed.
- В строке Имя (Name) введите
-
Свойство SelectedDateChanged
- В строке Имя (Name) введите
SelectedDateChanged. - В строке Тип (Type) введите
Date/Time. - В строке Заголовок (Title) введите
SelectedDateChanged. - В строке Описание (Description) введите
Selected Date Changed.
- В строке Имя (Name) введите
Рисунок 11. Добавление свойств
-
Свойство LoadURLChanged
- Далее выберите вкладку Действия (Actions Actions) и введите следующую информацию:
- В строке Действия (Actions) введите -
Reloadonedaycal. - В строке Имя (Title) введите -
Reloadonedaycal. - В строке Описание (Description) введите -
Reload one day calendar. - В строке Параметр ввода действия - свойство (Action Input Parameter-Property) введите -
SelectedDateChanged. - В строке Параметр вывода действия (Action Output Parameter) введите -
LoadURLChanged.
Рисунок 12. Добавление действий
- В строке Действия (Actions) введите -
Сохраните 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)
Рисунок 15. Добавление компонента (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
Правой кнопкой нажмите на Google Calendar Navigator, далее - на опцию Выбрать в качестве источника связи (Select as wire source). Перетащите связь из LoadURLChanged в опцию . Задать для браузера URL (Set URL to browser) и загрузите в Managed Browser (см. рисунок 17).
Рисунок 17. Создание связи между Google Calendar Navigator и Google Calendar Navigator
Теперь вы можете протестировать свое приложение. Измените дату в LNCN, GCal должен показать вам такую же дату.
С помощью этой статьи вы научились разрабатывать составное приложение Lotus Notes 8.0, которое позволяет вам создавать связь между GCal и LNC, основанную на технологиях Atom API и XSLT.
| Описание | Имя | Размер | Метод загрузки |
|---|---|---|---|
| Sample code | samplecode.zip | 1470KB | HTTP |
Научиться
-
Начните с IBM Lotus Notes and Domino V8 technical content.(EN)
-
Оригинал статьи, "Developing a composite application in IBM Lotus Notes to integrate Lotus Notes and Google calendars."(EN)
-
Прочтите вводную статью к данной серии "Приложение Lead Manager в IBM Lotus Notes V8: Обзор."
-
Прочтите статью на сайте developerWorks® "Проектирование составных приложений: Проектирование компонентов."
-
Прочтите статью на сайте developerWorks "Проектирование составных приложений: Шаблоны проектирования."
-
Прочтите статью на сайте developerWorks "Проектирование составных приложений: Тестирование блоков."(EN)
-
Прочтите статью на сайте developerWorks "Проектирование составных приложений: Создание Eclipse-компонента для IBM Lotus Notes."(EN)
-
Прочтите статью на сайте developerWorks "Что нового в IBM Lotus Notes и Domino V8."(EN)
-
Прочтите статью на сайте developerWorks "Расширение почты IBM Lotus Notes V8 с помощью Eclipse."(EN)
-
Прочтите статью на сайте developerWorks "Интеграция данных IBM Lotus Notes в боковую панель и панель инструментов Lotus Notes V8."(EN)
-
Прочтите статью на сайте developerWorks "Расширение боковой панели и панели инструментов IBM Lotus Notes V8."(EN)
-
Прочтите статью на сайте developerWorks "Усиление пользовательского контекста в боковой панели и в панели инструментов IBM Lotus Notes V8."(EN)
-
Начните с IBM Lotus Domino Designer 8 Help.(EN)
-
Посетите страницу сайта developerWorks о составных приложениях Lotus.(EN)
-
Прочтите "Путеводитель по Lotus Notes и Domino 8."(EN)
-
Прочтите "Что представляют собой интерфейсы и инструменты Google Calendar?."(EN)
-
Узнайте больше об Atom Publishing Protocol.(EN)
Получить продукты и технологии
-
Загрузите пробную версию IBM Lotus Domino.(EN)
-
Загрузите пробную версию IBM Lotus Notes, Domino Designer и клиенты Domino Administrator.(EN)
Обсудить
- Примите участие в обсуждении материала на форуме.
-
Станьте участником блога группы Lotus на сайте developerWorks.(EN)
Мин Чэнь (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.