Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программные интерфейсы для управления календарными событиями в веб-среде

Введение

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

 

Программные интерфейсы для управления календарными событиями в веб-среде

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

Веб Интерфейс Пользователя CommuniGate Pro позволяет вам работать с Календарём (организовывать встречи, совещания и т.д.). Для представления информации используется стандарт iCalendar, что обеспечивает совместимость как с программами для коллективной работы, использующими открытые стандарты, так и с приложениями для коллективной работы Microsoft Windows, включая Microsoft Outlook (через компонент MAPI-Коннектор). Информация, содержащаяся в Календаре, доступна через XIMSS и CalDAV протоколы. Старые приложения для коллективной работы могут подписаться на неё, используя метод HTTP Публикация/подписка (ICS). Информация, содержащаяся в Календаре, может быть экспортирована как текстовый файл в формате VCALENDAR. Функции Календаря в Веб Интерфейсе Пользователя доступны только если в Установках Пользователя и в Установках Домена включена Услуга WebCal.

Коммерческая версия Scalix, обладает хорошим функционалом, и системой поддержки. Но управление и приобретение этой системы вызывают некоторые вопросы.

Календарь Google предлагает множество способов создания и отправки содержания, кроме веб-интерфейса. Разработчики могут использовать протокол данных Google для создания приложений, использующих все функции Календаря Google. Можно добавить на сайт родной дизайн и стиль Google, встроив календари Google и график событий.

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

Google Calendar API: возможности и преимущества

API данных Google – это простой стандартный протокол чтения и записи данных в Интернете. Эти API в стиле REST основаны на протоколе публикации Atom (AtomPub), использующем стандартный формат синдикации данных Atom для представления данных и HTTP для связи. Протокол·API данных Google также распространяет функции AtomPub на обработку запросов, аутентификацию, пакетные запросы и предоставление альтернативных форматов вывода (JSON, RSS).

Многие службы Google поддерживают протокол API данных Google. Следующие API данных позволяют использовать клиенты для взаимодействия со службами Google:

Такое решение предоставляют приложения интерактивного планирования (например, Google Calendar). Централизуя отображение и управление событиями, пользователи Google Calendar могут совместно использовать и поддерживать данные событий на одном сайте, что устраняет один из множества возможных источников ошибок процесса организации событий. Члены сообщества могут посещать интерактивный календарь, чтобы быть в курсе предстоящих событий и действий, не путаясь в устаревшей информации на разрозненных Web-страницах. По-видимому, интерактивные приложения планирования являются идеальным решением.

API данных Google предоставляет много Atom-фидов (feed), содержащих документы и информацию для значительной части Web-сервисов, предлагаемых Google. Google Calendar не является исключением, предоставляя несколько фидов, инкапсулирующих основную часть данных Google Calendar. Имеются фиды с HTTP-аутентификацией и общедоступные. Для извлечения и взаимодействия с аутентифицируемыми фидами HTTP-клиент должен предоставить информацию для аутентификации вместе с GET-запросом HTTP. Аутентифицируемый фид может также обновлять учетную запись Google Calendar при помощи POST-запросов HTTP. HTTP-клиенты, использующие аутентифицируемые фиды, могут добавлять и удалять события, подписываться и отменять подписку на календари, создавать и удалять календари из учетной записи Google.

Google Calendar API предоставляет фиды для доступа ко всем индивидуальным календарям, к которым имеет доступ пользователь из графического пользовательского интерфейса Google Calendar. Сюда относятся календари, принадлежащие пользователю, календари, принадлежащие кому-нибудь еще, но на которые пользователь подписан, и календари, которые пользователь импортировал в режиме "только чтение". Эти календари имеют свои собственные аутентифицируемые частные (private) и общедоступные (public) фиды событий, в которых перечисляются индивидуальные события в календаре.

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

В листинге 1 показана запись о событии в примере фида.

<entry> <id> http://www.google.com/calendar/feeds/foss.sanjuan%40gmail.com/public/full/ s19o15ve3nn209gv5qf6c43ao4 </id> <published>2007-08-12T15:45:40.000Z</published> <updated>2007-08-12T15:53:37.000Z</updated>......

Листинг 1. Пример одной записи о событии фида Google Calendar: ID и метки времени

Элемент id предоставляет уникальный идентификатор URI (Uniform Resource Identifier), который идентифицирует данное событие в системе Google Calendar. Он не только содержит уникальный номер, но также идентифицирует фид, из которого событие было извлечено. Элементы published и updated используют формат метки времени RFC 3339. Элемент updated указывает последнее время редактирования события, или, в случае нового события, время его создания.

После элементов id, published и updated идут элементы с более читабельной информацией, показанные в листинге 2. Эта информация может быть отображена в боковой панели или на странице событий.

...... <title type="text">Linux Install Fest</title>...... <author> <name>Open Source San Juan</name> <email>foss.sanjuan@gmail.com</email> </author>...... <gd:eventStatus value="http://schemas.google.com/g/2005#event.confirmed"/>......

Листинг 2. Пример записи о событии фида Google Calendar: заголовок, автор и статус

Элемент title - это простая строка, идентифицирующая событие. Она не обязательно должна быть уникальной. Элемент author состоит из элементов name и email. Автором события является пользователь Google Calendar, который ввел событие в календарь. Если установить соответствующим образом права доступа по записи для аутентифицируемых фидов, пользователи Google Calendar, не являющиеся владельцами календаря, могут создавать события в календаре другого пользователя. В таблице 1 описаны возможные значения элемента status.

Таблица 1. Возможные значения для элемента gd:eventStatus

Значение Описание
http://schemas.google.com/g/2005#event.cancelled Событие отменено.
http://schemas.google.com/g/2005#event.confirmed Событие подтверждено.
http://schemas.google.com/g/2005#event.tentative Событие запланировано условно.

Затем идут элементы, описывающие время и место проведения события, как показано в листинге 3.

...... <gd:when startTime="2007-08-03T16:00:00.000-04:00" endTime="2007-08-03T19:00:00.000-04:00"/> <gd:where valueString="Guaynabo Public High School Auditorium, Guaynabo, PR"/> </entry>

Листинг 3. Пример записи о событии фида Google Calendar: когда и где

Элемент when содержит два атрибута: время начала и конца события, оба в формате метки времени RFC 3339. Атрибут valueString элемента where можно найти в приложении Google Calendar и через API. Google Calendar и API данных Google не поддерживают поиск по конкретному элементу. Вместо этого они выполняют полнотекстовый поиск по строковым элементам, таким как title, author, description и атрибуту valueString элемента where. Как вы увидите далее, исключением является поддержка API данных Google установки интервалов дат начала события для ограничения числа событий, включаемых в результаты запроса.

Чтобы обеспечить возможность извлечения определенных наборов данных, API данных Google поддерживает концепцию параметров http-запроса GET. Используя эти параметры, клиент API данных Google может указать максимальное количество возвращаемых записей (при помощи параметра max-results), элемент, используемый для сортировки записей в фиде (при помощи параметра orderby), и времена начала и конца для возвращаемого диапазона записей (при помощи параметров start-min и start-max). Последние два параметра относятся к диапазону времен начала включаемых в результат событий. start-min указывает начальную дату в диапазоне, а start-max указывает конец диапазона. Оба параметра имеют формат метки времени RFC 3339.

Наконец, можно облегчить синтаксический анализ повторяющихся событий, включив параметр singleevents в строку запроса. Если параметр singleevents имеет значение true, повторяющиеся события указываются в фиде так, как будто они являются отдельными единичными событиями. В противном случае повторяющиеся события включают в себя элемент <gd:recurrence>, который содержит правила повторения в формате iCal.

В листинге 4 показан URL фида событий, в который добавлены все параметры запроса. Он отредактирован и разбит на несколько строк для удобства чтения.

http://www.google.com/calendar/feeds/foss.sanjuan%40gmail.com/public/full? max-results=25& singleevents=true& orderby=starttime& start-min=2007-05-22T09%3A58%3A47-04%3A00& start-max=2007-11-06T09%3A58%3A47-04%3A00

Листинг 4. Пример URL фида Google Calendar с параметрами запроса


Листинг 5. Синтаксический анализ фида событий Google Calendar с использованием DOM API

В этом примере исходного кода задается URL фида с необходимыми параметрами, открывается фид, а затем все записи о событиях извлекаются в список DOMNodeList, который можно обработать при помощи итератора foreach. Для каждой записи о событии сравнивается атрибут value элемента gd:eventStatusс известным значением для подтвержденных (confirmed) событий. Префикс gd: указывать не нужно для тега элемента. PHP DOM API работает с пространствами имен, и префикс gd: нужно опускать, иначе анализатор не найдет нужного элемента.

Если запись о событии подтверждена, извлекаются элементы title, gd:when и gd:where. Элементы gd:when и gd:where требуют запроса специфических атрибутов, например, startTime и valueString. Чтобы отобразить даты события в читабельном формате извлекается атрибут startTime элемента gd:when для преобразования его в значение long integer, представляющее время. Затем это значение передается в функцию date с указанием обычного формата отображения.

Одним из недостатков DOM API является его детальность. Назначение каждого выражения понятно, поскольку оно соответствует текстовому описанию алгоритма, но код не так лаконичен, как мог бы быть. Методы getElementsByTagName и getAttributeNode для классов DOMNode и DOMDocument существенно увеличивают объем кода.

Листинг 6. Синтаксический анализ фида событий Google Calendar с использованием SAX API

В этом коде показаны функции startElement, endElement и textData, ккоторые регистрируются программным механизмом SAX-анализатора в примере сценария. В этом фрагменте кода показана обработка нескольких интересующих нас элементов. Код становится довольно сложным, поскольку XML-элементы в SAX читаются сверху вниз XML-документа. Нельзя проверить, имеет ли текущая запись о событии статус confirmed, до тех пор, пока не обработает некоторый из элементов. Например, элемент gd:eventStatus расположен после элемента title в event. Другим источником сложности является то, что фид имеет элемент title, и каждая запись тоже имеет элемент title. Необходимо устанавливать флажок, чтобы код знал, читается ли элемент title внутри записи. Имеется также элемент gd:when внутри элемента gd:originalEvent в повторяющихся событиях, который не является интересующим нас элементом gd:when. Без такой логики проверки состояния простое соответствие названий элементов выдает неверные результаты.

Данный пример демонстрирует два недостатка SAX API: он намного более многословен, чем DOM API, и в сравнении с примером DOM-кода SAX-анализатор в несколько раз сложнее.

Листинг 7. Запрос и обработка фида событий Google Calendar с использованием PHP-классов Zend

Одним из преимуществ классов Zend API данных Google является то, что после извлечения объекта eventFeed элементы и атрибуты фида можно обходить иерархически как свойства объекта eventFeed. Это делает исходный код обработки более читабельным, поскольку различные элементы организованы аналогично их представлению в XML-документе. Атрибуты также можно обходить иерархически, начиная с родительских элементов, в отличие от метода DOMNode getAttributeNode("attributeName")->value.

Листинг 8. Синтаксический анализ фида событий Google Calendar с использованием XPath и SimpleXML

Недостатком PHP-API SimpleXML является то, что он может быть до четырех раз медленнее, чем DOM или SAX. Это связано с тем, что SimpleXML создает узлы element и attribute "на лету", используя динамическую природу PHP. В сравнении с классами Zend API данных Google, которые определяют узлы element и attribute в коде класса. Это делает иерархический обход узлов с использованием классов Zend более быстрым.

Еще одним недостатком SimpleXML является его поддержка пространств имен XML. Для извлечения элементов из пространства имен необходимо вызывать метод children() элемента. При этом возвращается объект с элементами этого пространства имен как свойствами. DOM и классы Zend обеспечивают лучшую поддержку, представляя все элементы всех пространств имен как отдельные узлы других элементов, которые можно обходить иерархически.

Заключение

Google Calendar предоставляет внешний интерфейс централизованного Web-приложения, в котором организация и ее руководство могут поддерживать и публиковать календарь событий для своих членов и для широкой общественности в целом. API данных Google предоставляет Atom-фиды и протокол Atom Publishing Protocol для извлечения, запроса, обновления и создания событий и другой информации в Google Calendar и почти всех остальных приложениях Google.

Используя XPath, можно автоматически поддерживать отображение на Web-сайте предстоящих событий в актуальном состоянии путем запроса фидов событий API данных Google и синтаксического анализа его записей для извлечения релевантной информации об их элементах. Хотя XPath не является самым быстрым XML API в наборе инструментальных средств PHP, он является одним из самых простых в использовании, когда работа ведется с XML-документом. Для снижения отрицательного влияния относительно медленной работы XPath можно использовать кэширование.

 

Литература

1. http://www.ibm.com/developerworks/ru/library/os-php-xpath/index.html.

2. Алгерих Л., Чой В. Профессиональное PHP программирование”. Второе издание, Символ-плюс 2003. – 1048 с.

3. http://code.google.com/intl/ru-RU/apis/calendar/

 

 

Введение

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

 

Программные интерфейсы для управления календарными событиями в веб-среде

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

Веб Интерфейс Пользователя CommuniGate Pro позволяет вам работать с Календарём (организовывать встречи, совещания и т.д.). Для представления информации используется стандарт iCalendar, что обеспечивает совместимость как с программами для коллективной работы, использующими открытые стандарты, так и с приложениями для коллективной работы Microsoft Windows, включая Microsoft Outlook (через компонент MAPI-Коннектор). Информация, содержащаяся в Календаре, доступна через XIMSS и CalDAV протоколы. Старые приложения для коллективной работы могут подписаться на неё, используя метод HTTP Публикация/подписка (ICS). Информация, содержащаяся в Календаре, может быть экспортирована как текстовый файл в формате VCALENDAR. Функции Календаря в Веб Интерфейсе Пользователя доступны только если в Установках Пользователя и в Установках Домена включена Услуга WebCal.

Коммерческая версия Scalix, обладает хорошим функционалом, и системой поддержки. Но управление и приобретение этой системы вызывают некоторые вопросы.

Календарь Google предлагает множество способов создания и отправки содержания, кроме веб-интерфейса. Разработчики могут использовать протокол данных Google для создания приложений, использующих все функции Календаря Google. Можно добавить на сайт родной дизайн и стиль Google, встроив календари Google и график событий.

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



Поделиться:


Последнее изменение этой страницы: 2016-08-01; просмотров: 192; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.61.142 (0.009 с.)