СПОСОБ СИНХРОНИЗАЦИИ ОБЪЕКТОВ ПЕРСОНАЛЬНОГО ИНФОРМАЦИОННОГО МЕНЕДЖЕРА И ВНЕШНЕГО СЕРВЕРА
METHOD FOR SYNCHRONISATION OF OBJECTS OF PERSONAL INFORMATION MANAGER AND EXTERNAL SERVER

Изобретение относится к способам синхронизации данных, а именно к системе и способу для синхронизации специализированных объектов между MICROSOFT Outlook и аналогичными клиентами для электронной почты и внешним сервером.
Microsoft Outlook стал основным почтовым приложением, которым пользуются миллионы пользователей по всему миру. Microsoft Outlook позволяет эффективно работать с большим количеством бизнес-объектов (в том числе специализированных объектов, которые будут описаны ниже), такие как почта, задачи, встречи, мероприятия и т.д. Однако Microsoft Outlook изначально не позволяет работать с бизнес-объектами, за которыми стоит расширенный поток работ (такими, как, например, заявки, проекты, бизнес-процессы, жалобы клиентов, запросы и т.д.). Данные потоки работ выполняются на внешнем сервере. Учитывая популярность программы Microsoft Outlook в качестве почтового клиента, а также отсутствие встроенной поддержки бизнес-объектов на базе потоков работ, желательно иметь возможность поддержать работу с бизнес-объектами с потоком работ из интерфейса Microsoft Outlook.
Таким образом, существует техническая необходимость в системе и способе синхронизации данных между Microsoft Outlook и внешним сервером, где данные сохраняются таким образом, чтобы позволить их постоянное обновление.
Далее приводится подробная ссылка на предпочтительные варианты настоящего изобретения, примеры которых проиллюстрированы в сопроводительных чертежах.
В настоящем описании Microsoft Outlook 2010 используется в качестве примера, хотя изобретение может быть применимо к любому приложению клиента для электронной почты (почтовому агенту пользователя (MUA)), который позволяет проектировать специализированный интерфейс и отображать в нем релевантные данные, такие как приложение настольного компьютера, которое используется для работы с электронной почтой и принадлежностями, такими как контакты, задачи, календарь и т.д. Можно также использовать особенный клиент электронной почты для управления специализированными Элементами, если он поддерживает, как было заявлено выше, проектировку специализированных форм и отображение в нем наших данных. Microsoft Outlook 2010 используется в описании как пример, так как он является одним из наиболее популярных клиентов для электронной почты и отвечает требованиям. Lotus Notes является другим примером, хотя изобретение не ограничивается каким-либо конкретным клиентом для электронной почты.
Специализированные Объекты могут быть преобразованы и сохранены в MICROSOFT Outlook как Элементы Outlook. Согласно рассматриваемому примеру специальные процессы непрерывно проверяют, есть ли изменения в Элементах Outlook и сохраняются ли данные изменения в хранилище данных, например на жестком диске. Элементы Хранения MICROSOFT (112, ФИГ. 1) используются для хранения информации о полях Элементов Outlook, которые были изменены в ОЗУ (142, ФИГ. 1) и о полях Элементов Outlook, которые были сохранены в хранилище данных пользователя (140, ФИГ. 1), таких как накопитель на жестком диске.
Информация, отражающая измененные и сохраненные поля, отправляется на внешний сервер. Впоследствии приходит уведомление об успешном сохранении поля на внешнем сервере. Также информация об измененном поле на внешнем сервере отправляется обратно. Поля, измененные на внешнем сервере, сохраняются в Объектах Outlook. Таким образом, достигается двусторонняя синхронизация между Microsoft Outlook и внешним сервером.
Таким образом, согласно рассматриваемому примеру в данном изобретении синхронизация реализуется за счет плагина Microsoft Outlook, разработанного с использованием Утилит MICROSOFT Office. Связь с внешним сервером осуществляется посредством интерфейса программирования приложений (API). API работает следующим образом:
а. Надстройка MICROSOFT Outlook формирует список всех объектов, хранящихся в Microsoft Outlook. Кроме того, для некоторых объектов содержится дополнительная информация о редактировании поля или удалении объекта, как показано ниже:
Объект 1
Объект 2
Объект 3
Объект 4
Объект 5
Объект 8
Объект 9
Поле 3: НовоеЗначение
Удалено
Поле 3: НовоеЗначение
Поле 9: НовоеЗначение
Поле7: НовоеЗначение
Поле 6: НовоеЗначение
Поле 9: НовоеЗначение
"Удалено" означает то, что объект был удален. "Поле#: НовоеЗначение" означает, что Значение Поля# в релевантном объекте было изменено на "НовоеЗначение".
б. После получения данных внешний сервер применяет изменения к объектам, сохраненным на внешнем сервере. Если происходит конфликт (например, когда данные на внешнем сервере отличаются от данных в MICROSOFT Outlook), данные на внешнем сервере не изменяются, и сообщение об ошибке отправляется в Надстройку MICROSOFT Outlook. Данные в MICROSOFT Outlook восстанавливаются на предыдущие, поскольку данные на внешнем сервере считаются более корректными по сравнению с данными в Microsoft Outlook, хотя пользователь может изменить данную опцию посредством настроек.
в. Внешний сервер формирует ответ для отправки в Надстройку MICROSOFT Outlook. Отправляются все поля всех измененных объектов, т.е. объектов, которые были изменены в MICROSOFT Outlook (как было сказано в предыдущем параграфе), и объектов, которые были изменены на внешнем сервере. Также отправляется подтверждение в Надстройку MICROSOFT Outlook о применении изменений к объектам, сохраненным на внешнем сервере, т.е. подтверждение об обновлении сохраненных объектов. Информация о времени последней успешной синхронизации сохраняется в Надстройке MICROSOFT Outlook. Также внешний сервер отправляет в Надстройку MICROSOFT Outlook следующую информацию:
г. Комментарии и Прикрепления синхронизируются также как Объекты, и формируются два дополнительных списка:
i. Для всех комментариев, добавленных ко всем объектам,
ii. Для всех прикреплений, добавленных ко всем объектам.
В случае прикрепления файла в Расширении MICROSOFT Outlook данное прикрепление загружается непосредственно на внешний сервер и ссылка на данное прикрепление отправляется как Значение поля "ПрикреплениеСсылка" на внешний сервер. В случае прикрепления файла на внешнем сервере ссылка также отправляется как Значение поля "ПрикреплениеСсылка" в Расширение MICROSOFT Outlook и Расширение MICROSOFT Outlook загружает прикрепленный файл и прикрепляет его к Элементу MICROSOFT Outlook. Ключевое слово "Удалено" также используется для обозначения того, что прикрепление было удалено.
На ФИГ. 1 показан способ синхронизации специализированных объектов между MICROSOFT Outlook и внешним сервером. Элементы MICROSOFT Outlook 110 являются стандартными объектами MICROSOFT Outlook, которые используются для хранения всех сущностей MICROSOFT Outlook (таких как, например, письма, контакты, задачи, расписания, встречи и т.д.). Элементы MICROSOFT Outlook хранятся в ОЗУ для постоянного хранения и имеют ассоциированные записи в хранилище данных (например, на жестком накопителе) компьютерной системы. В блоке 125 процесс проверяет наличие изменений в Элементах MICROSOFT Outlook.
Процесс блока 125 использует события MICROSOFT Outlook для регистрации всех сделанных изменений в Элементах MICROSOFT Outlook. Затем, если в блоке 130 были обнаружены изменения, то в блоке 145 процесс записывает их в список измененных полей в ОЗУ. Список полей, которые были изменены в Элементах MICROSOFT Outlook, записывается в "Элементы Хранения, хранящиеся в ОЗУ" 142, которые являются частью Элементов Хранения 112. Стоит отметить, что записывается только список измененных полей (а не фактические значения полей). Список измененных полей может быть представлен массивом. Стоит отметить, что список измененных полей может быть обновлен после каждого изменения в Элементе Microsoft Outlook. Список измененных полей может быть создан для каждого Элемента Microsoft Outlook после того, как Элемент открыт. Стоит отметить, что список измененных полей может быть очищен или удален для текущего Элемента Microsoft Outlook, если пользователь или система (например, в случае критической ошибки) не сохранит изменения для данного Элемента.
Также стоить отметить, что список измененных полей является опциональным, поскольку измененные поля могут быть записаны в "Элементы Хранения, хранящиеся в ОЗУ" 142.
Элементы Хранения 112 являются Стандартными объектами MICROSOFT Outlook, которые используются для хранения информации, которая не может быть сохранена в Элементах Outlook. В иллюстративном варианте Элементы Хранения 112 используются для хранения информации об измененных полях и о сохраненных полях (обсуждаемых ниже).
Если в блоке 130 новые изменения не были обнаружены, то процесс продолжает проверять Элементы Outlook на Элемент изменений в блоке 125. Затем в блоке 115 процесс проверяет наличие сохраненных Элементов Outlook. Таким образом, если в блоке 120 обнаружены сохраненные изменения, в блоке 135 процесс записывает информацию о сохраненных полях. Согласно иллюстративному варианту этот процесс использует события MICROSOFT Outlook для регистрации события сохранения изменений в Элементах Хранения 112.
Процесс записывает тот факт, что поля были сохранены в Элементах Хранения. В одном из вариантов изобретения технически это означает добавление переменной булевского типа в массив измененных полей, сохраненных в Элементах Хранения. В другом варианте изобретения, после того как изменения были сохранены, "Элементы Хранения, хранящиеся в ОЗУ" 142, обновляют "Элементы Хранения, хранящиеся в хранилище данных" 140 последними изменениями, которые были сделаны после последнего сохранения. Таким образом, последние сохраненные изменения могут быть стерты из "Элементов Хранения, хранящихся в ОЗУ" 142. Если в блоке 120 новые сохраненные изменения не были зарегистрированы, то в блоке 115 процесс продолжает проверять наличие событий сохранения в Элементах Outlook. В блоке 150 процесс проверяет наличие изменений в "Элементах Хранения, хранящихся в хранилище данных" 140. Процесс непрерывно проверяет "Элементы Хранения, хранящиеся в хранилище данных" 140 на наличие информации о новых сохраненных полях (которые были отмечены как сохраненные в блоке 135). Фактически, в блоке 150 начинается процесс синхронизации.
Если в блоке 155 выявлены новые измененные и сохраненные поля, в блоке 160 процесс извлекает актуальные значения для измененных полей. Процесс читает Элементы MICROSOFT Outlook и извлекает актуальные значения для полей, которые были выявлены как сохраненные в блоке 155. Для каждого поля, обозначенного как сохраненное, берется обновленное значение поля (актуальное значение, которое было получено из Элементов MICROSOFT Outlook) и в блоке 165 отправляется на внешний сервер. Если в блоке 155 новые сохраненные поля не выявлены, то в блоке 150 процесс продолжает проверять наличие новых сохраненных полей в "Элементах Хранения, хранящихся в хранилище данных" 140.
В блоке 170 процесс получает информацию об обновленных и новых полях, включая значения с внешнего сервера. Фактически, новыми полями являются поля, которые были изменены, например, другим пользователем из другого почтового клиента или посредством интернет-браузера. Также, эти поля могут отличаться от обновленных полей, полученных в шаге 160. Затем в блоке 185 процесс обновляет Элементы MICROSOFT Outlook новыми полями. В блоке 175 процесс получает уведомления о сохраненных полях на внешнем сервере. Данный процесс обеспечивается работой специализированного ИПП. Затем, в блоке 180, процесс обновляет "Элементы Хранения, хранящиеся в хранилище данных" 140 посредством информации, отражающей тот факт, что поля были успешно сохранены на внешнем сервере.
Это значит, что записи как об измененных, так и о сохраненных полях были удалены из "Элементов Хранения, хранящихся в хранилище данных" 140.
На ФИГ. 2 показана блок-схема формирования списка измененных полей согласно иллюстративному варианту. В блоке 210 синхронизирующее приложение проверяет, являются ли значимыми для процесса изменения, сделанные в Элементе. В иллюстративном варианте   значимыми изменениями являются изменения, которые были сделаны в Специализированном Объекте, так как объект синхронизируется по существу. Специализированный Объект представляет собой Объект (бизнес-объект, специализированный объект), за которым стоит некий поток работ и который хранится на внешнем сервере. Специализированные Объекты могут представлять собой, например: Жалобы, Запросы службе поддержки, Запросы на предоставление отпуска, Вакансии, Кандидаты, Служащие, Отчеты о командировочных расходах, Ошибки в программном обеспечении, Предложения по функционалу, Заявки на страхование, Заказы на покупки, Медицинские отчеты, Запросы на замену, Находящееся на балансе оборудование, Находящееся на балансе программное обеспечение, Сценарий тестирования, Запросы на отгул и т.д. Если Специализированные Объекты нормально не поддерживаются стандартными почтовыми клиентами, тогда Специализированные Объекты могут быть преобразованы в Элементы клиента электронной почты. Например, данные (данные, содержащиеся в специализированных объектах, таких как дата создания специализированного объекта, автор специализированного объекта и т.д.) с внешнего сервера могут быть получены и записаны в Элементы клиента электронной почты.
Далее, если в блоке 220 были зафиксированы изменения в значимых Элементах, то в блоке 230 система проверяет, были ли внесены изменения в значимые поля. Если в блоке 240 выявлены изменения в значимые поля, то в блоке 250 создается список измененных полей. Таким образом, список измененных полей ("Элементы Хранения, хранящиеся в ОЗУ" 142) обновляется с каждым измененным значимым полем. Если в блоке 220 изменения не выявлены, то в блоке 260 процесс заканчивается.
На ФИГ. 3 изображена блок-схема формирования списка сохраненных полей согласно иллюстративному варианту. В блоке 310 синхронизирующее приложение проверяет, является ли значимым для процесса Элемент, который был сохранен. В иллюстративном варианте значимыми являются события сохранения, которые касаются Специализированного Объекта, так как он синхронизируется.
Если в блоке 320 в значимых Элементах MICROSOFT Outlook выявлены события сохранения, то в блоке 330 синхронизирующее приложение проверяет факт сохранения значимых полей. Если в блоке 340 выявлены значимые поля, то в блоке 350 создается список сохраненных полей. Процесс копирования измененных полей из "Элементов Хранения, хранящихся в ОЗУ" 142 в "Элементы Хранения, хранящиеся в хранилище данных" 140 может быть использован для каждого сохраненного поля вместо создания списка сохраненных полей. Если в блоках 320 и 340 изменения не выявлены, то процесс заканчивается в блоке 360.
На ФИГ. 4 приведена архитектура системы согласно иллюстративному варианту. Компонент слушатель событий изменений 410 предназначен для отслеживания (мониторинга) событий, которые показывают изменения Элементов Outlook 400. Компонент слушатель событий сохранений 420 предназначен для отслеживания событий, которые показывают сохранение Элементов Outlook 400. Компонент чтения/записи из Элементов Outlook 440 предназначен для чтения информации из Элементов Outlook 400, чтобы проверить, были ли изменения, и для последующей записи обновленных полей, полученных с внешнего сервера 460.
Компонент чтения/записи из Элементов Хранения 450 предназначен для записи информации об измененных полях и о сохраненных полях, полученной от компонентов 410 и 420 соответственно. Далее компонент 450 читает информацию как об измененных, так и сохраненных полях из Элементов Хранения 455 для запуска процесса отправки обновленных полей на внешний сервер 460 посредством компонента передачи/получения данных 430. Данный компонент предназначен для отправки полей, обновленных в Элементах Outlook, на внешний сервер 460 и для получения обновленных полей с внешнего сервера 460.
Согласно другому иллюстративному варианту синхронизирующее приложение обеспечивает тесную интеграцию с MICROSOFT Outlook. Синхронизирующее приложение обладает функциональными возможностями менеджера задач (менеджера специализированных объектов), который работает с задачами и специализированными объектами. Однако описанные здесь задачи являются значительно более продвинутыми по сравнению со стандартными задачами MICROSOFT Outlook. В частности, данные задачи обладают следующими дополнительными функционалами:
1. Обсуждение с иерархией комментариев, отправленных пользователями;
2. История со списком всех изменений, которым подверглась задача;
3. Журнал регистрации времени (потраченное время), т.е. приблизительно подсчитанное время, потраченное на задачу;
4. Неограниченное количество подзадач; и
5. Структурированные ссылки на другие Специализированные Объекты в системе. Специализированные Объекты могут быть взаимосвязаны друг с другом при помощи гиперссылок. Это позволяет гибко моделировать данные.
Иллюстративный вариант позволяет пользователям, использующим MICROSOFT Outlook, продолжить работать в привычной для них среде. Другими словами, менеджер задач интегрирован в интерфейс Microsoft Outlook при помощи средств разработки Outlook. Таким образом, расширенные задачи используются в Microsoft Outlook. Новые задачи представляют собой задачи, похожие на типичные задачи Microsoft Outlook, однако обладают более широкой функциональностью. Пользователи могут создавать интегрированные Специализированные задачи, редактировать их, назначать задания и т.д. Информация передается на внешний сервер (то есть на внешний сервер, синхронизированный с Microsoft Outlook).
Например, расширенные задачи могут включать обсуждение с иерархией комментариев, отправленных пользователями. В отличие от собственных задач MICROSOFT Outlook расширенные задачи обладают ассоциированными с ними комментариями. Комментарии обладают иерархической структурой, так что пользователи могут отправить новые комментарии или ответить на другие комментарии. Пользователи могут редактировать комментарии, которые они отправили. Этот функционал обеспечивает возможность обсуждения в реальном времени в пределах конкретной задачи с сохранением контекста, что делает данную задачу более удобной для целей совместной работы.
У расширенных задач также может быть своя история изменений со списком всех изменений, сделанных в задаче. Каждое изменение, сделанное в задаче, может быть просмотрено в истории в удобной форме. Таким образом, пользователь может анализировать историю всех изменений, которые когда-либо были сделаны в задаче. Это помогает решить спорные вопросы или точно восстановить непреднамеренно удаленные данные.
У расширенных задач также может существовать журнал регистрации времени (потраченное время), отражающий общее время, потраченное на задачу. Пользователь может посмотреть количество времени, потраченного на задачи в специальной таблице. Затем могут быть подготовлены объединенные отчеты по затраченному времени для конкретных задач. Данная информация полезна для целей составления счетов и анализа затрат.
Расширенные задачи могут также иметь неограниченное количество подзадач. При помощи подзадач пользователь может разделить работу на несколько более мелких частей и дать каждую часть конкретному сотруднику. Поскольку иерархия подзадач неограниченна, пользователь может управлять довольно сложными проектами только посредством расширенных задач. Список всех подзадач со статусами и именами тех, кому они назначены, можно посмотреть в первичной задаче.
Расширенные задачи также могут иметь структурированные ссылки на другие специализированные объекты в системе. Элементы могут быть связаны друг с другом для целей навигации, статистики и быстрого перехода к контексту. Пользователь может установить ссылку от задачи на любой Элемент, сохраненный на сервере, после чего быстро передвигаться, используя эту ссылку. Информация о связанных задачах также может быть просмотрена в соответствующих Элементах.
Типичный внешний вид интегрированных задач проиллюстрирован на Фигурах 5-7. На ФИГ. 5 показан один из вариантов моментального снимка экрана интерфейса обсуждения (комментарии пользователя) согласно иллюстративному варианту. На ФИГ. 6 показан один из вариантов моментального снимка экрана интерфейса истории согласно иллюстративному варианту. На ФИГ. 7 показан один из вариантов моментального снимка экрана интерфейса подзадач согласно иллюстративному варианту.
Специалист примет во внимание то, что предлагаемый метод и система обеспечивают эффективную двухстороннюю синхронизацию между MICROSOFT Outlook и внешним сервером.
Двусторонняя синхронизация необходима, чтобы пользователь мог также работать со специализированными объектами в других интерфейсах, реализованных в виде дополнительных программных модулей для других приложений (то есть MICROSOFT Visual Studio). Внешний сервер также обеспечивает свой собственный веб-интерфейс, посредством которого пользователь может работать со специализированными объектами.
Со ссылкой на ФИГ. 8, типичная система для реализации изобретения включает в себя многоцелевое вычислительное устройство в виде компьютера 20 или сервера, включающего в себя процессор 21, системную память 22, системную шину 23, которая связывает различные системные компоненты, включая системную память к процессору 21.
Системная шина 23 может быть любого из различных типов структур шин, включающих шину памяти или контроллер памяти, периферийную шину и локальную шину, использующую любую из множества архитектур шин. Системная память включает постоянное запоминающее устройство (ПЗУ) 24 и оперативное запоминающее устройство (ОЗУ) 25. В ПЗУ 24 хранится базовая система ввода/вывода 26 (БИОС), состоящая из основных программ, которые помогают обмениваться информацией между деталями внутри компьютера 20, например, в момент запуска.
Компьютер 20 также может включать накопитель на жестких магнитных дисках (НЖМД) 27, накопитель на жестких магнитных дисках (НГМД) 28 для чтения и записи информации с/на гибкий магнитный диск 29 и оптический привод 30 (например, CD-привод, DVD-привод, BD-привод, GD-привод и подобные) для чтения/записи информации с/на оптический диск 31. НЖМД 27, НГМД 28 и оптический привод 30 связаны с системной шиной 23 посредством интерфейса НЖМД 32, интерфейса НГМД 33 и интерфейса оптического привода 34 соответственно. НЖМД 27, НГМД 28 и оптический привод 30 и соответствующие им накопители обеспечивают энергонезависимые хранилища данных, таких как машиночитаемых инструкций, структур данных, программных модулей и других данных компьютера 20.
Стоит также отметить, что описанные выше устройства для хранения информации не ограничиваются перечисленными устройствами, поскольку вместо них могут быть использованы любые типы устройств, предназначенных для хранения информации, такие как флеш-память, магнитные кассеты и пленки, цифровые видеодиски, картриджи Бернулли.
На НЖМД 27, ПЗУ 24, ЗУПД 25, НГМД 28 и оптических приводах 30 могут быть сохранены различные программные модули, включая операционную систему 35. Компьютер 20 включает файловую систему 36 связанную с операционной системой 35 или включенную в нее, одно или более приложений/программ 37, иные программные модули 38 и программные данные 39. Пользователь может вводить команды и информацию в компьютер 20 при помощи устройств ввода, таких как клавиатура 40 и манипулятор "мышь" 42. Другие устройства ввода (не показаны здесь) могут включать микрофон, джойстик, спутниковую антенну, сканер или любое другое.
Эти и другие устройства ввода достаточно часто работают с процессором 21 посредством интерфейса последовательного порта 46, связанного с системной шиной, однако они также могут работать с процессором посредством других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина. Монитор 47 или любой другой тип дисплея также подключается к системной шине 23 посредством интерфейса, например видеоадаптера 48. Кроме монитора 47 к персональным компьютерам обычно подключают другие периферийные устройства вывода информации (не показано), например динамики и принтеры.
Компьютер 20 может работать в сетевом окружении посредством логических подключений/соединений к одному или нескольким удаленным компьютерам 49. Удаленный компьютер (или компьютеры) 49 может представлять собой другой компьютер, сервер, роутер или общие сетевые узлы, а также обычно включает множество устройств и элементов, которые были описаны выше для компьютера 20, хотя на чертеже и указано только устройство хранения информации 50. Логические подключения/соединения включают в себя локальную сеть (ЛВС) 51 и глобальную компьютерную сеть (ГКН) 52. Такие сетевые окружения обычно распространены в компаниях, корпоративных компьютерных сетях, Интранете (Интрасети) и Интернете.
Компьютер 20, используемый в сетевом окружении локальной сети, подключается к локальной сети (ЛВС) 51 посредством сетевого интерфейса или адаптера 53. При использовании в сетевом окружении ГКН компьютер 20 обычно использует модем 54 или другие средства для установления связи с ГКН 52, например, с Интернетом.
Модем 54 может быть внутренним или внешним и подключается к системной шине 23 посредством интерфейса последовательного порта 46. В сетевом окружении программные модули или части их, исполняемые компьютером 20, могут храниться на удаленном устройстве хранения информации. В данном примере показан пример сетевых соединений, однако для соединения компьютера с другими компьютерами могут быть использованы любые другие типы соединения.