2008-10-08 8 views
1

У меня есть веб-приложение, которое синхронизирует контакты Outlook с базой данных (и обратно) через CDO. БД содержит каждый контакт только один раз (по крайней мере теоретически, конечно, дублеты), предоставляя единую точку изменения для контакта, независимо от того, сколько пользователей имеет этот конкретный контакт в Outlook (например, взаимодействие или похожие продукты).Синхронизация контактов Outlook. Как определить правильный объект для синхронизации?

Процесс синхронизации не является автоматическим, но инициализирован пользователем. Произвольный промежуток времени может пройти, прежде чем пользователи решат синхронизировать свои контакты. Подмножество этих контактов могло быть обновлено другими пользователями за это время.

Как правило, это работает отлично, но я никогда не был в состоянии решить эту фундаментальную проблему:

Как определить, без сомнения объект контакта в почтовом ящике?

  1. я не могу полагаться на PR_ENTRYID, это изменения свойств на контактном ходу или перемещения почтового ящика.
  2. Я не могу полагаться на свои собственные идентификаторы (например, DB ID таблицы), потому что они скопированы с контактом.
  3. Я абсолютно не могу положиться на поля как имя или адрес электронной почты, они могут быть изменены и обновлены.

В настоящее время я использую комбинацию из 1 (предпочтительной) и 2 (отступающей). Но неизбежно, иногда пользователи сталкиваются с проблемой синхронизации с неправильным контактом, потому что нет ни одного заданного PR_ENTRYID, а два с тем же идентификатором DB, из которых выбран неправильный.

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

ответ

2

У меня была аналогичная проблема для преодоления с помощью внутреннего плагина Outlook, который связывается с синхронизацией. В итоге я оставил идентификатор базы данных в объекте Outlook и ссылался на это при выполнении синхронизации.

Разница заключается в том, что наша система имеет кучу дубликатов, которые позже разрешаются пользователями. Когда они объединяются, я удаляю старые записи и обновляю Outlook со всей новой информацией вместе с новым идентификатором.

Вы можете сделать нечеткое сопоставление, чтобы идентифицировать дубликаты, но дублирующее разрешение - это смешная проблема, которая в основном связана с проб и ошибок. Нам удалось реализовать «нечеткую» логику соответствия, используя алгоритм расстояния levenshtein для имен и адресов, очищенных до хэш-кода.

Удачи, мой опыт синхронизации был несколько болезненным.

+0

О, мужчина, только возраст вопроса говорит мне, что это не тривиальная проблема. Я также прикрепляю идентификатор базы данных к контакту, но это не помогает, когда контакт используется повторно (та же позиция, другой парень) или когда он копируется, чтобы создать шаблон для нового контакта в той же фирме. – Tomalak

+0

Все проголосовали. По крайней мере, у меня есть ваше сочувствие. :-D – Tomalak