регистрация | карта сайта
Постоянно обновляемая лента новостей
Обзоры, комментарии и статьи
Даты и дополнительная информация о событиях компьютерного рынка
Контакты, виды деятельности, предложения и другая информация о компьютерных компаниях
Новости, анонсы и пресс-релизы компьютерных компаний
Конференции с участием ведущих специалистов и экспертов
Информация для пользователей ITware, изменения персональных настроек, персональные закладки и web-карточки, служба переадресации
   
    
     Как искать?   Расширенный поиск
 ITware :. Конкурс статей Borland      Вход для зарегистрированных пользователейВыход

Конкурс статей Borland
Главная страница
Правила участия
Общий рейтинг
Призовой фонд
Сообщество ITware

Логин:
Пароль:
Забыли пароль? Забыли логин?

Зарегистрируйтесь сейчас - это абсолютно бесплатно!
Подпишитесь на рассылку ITware, чтобы ежедневно получать анонсы последних новостей и свежих материалов


CHIP online
Best Buy
Посоветуйся с Чипом!
Downloads

Контакты
Редакция:

Web-мастер:

 
Реклама






Lotus Notes и программа, написанная на Borland Delphi. Совмещение несовместимого.
28 августа 2003 01:02  drweb количество баллов: 62

Думаю, многие слышали о системе Lotus Notes. Некоторые даже имели с ним дело, и им возможно понравилась, а возможно и нет концепция данной СУБД (если можно так выразиться). Почему я высказал сомнения о СУБД? Очень просто, для этого есть несколько причин:
. это не реляционная база данных, а документоориентированная (то есть за основу берется не запись, а документ, у которого есть свои поля, при чем от документа к документу набор полей может быть разным);
. это более чем система управления базами данных, поскольку в ней так же интегрирован и WEB сервер, а также система обмена почтовыми сообщениями (дрожите фанатики ²Exchange Server⌡.a и ²Microsoft Offic⌡.a)
. предусмотрена очень хорошая система репликации данных: в каждом районном центре Украины стоит минимум один клиент Лотус Ноутс, с базой, которая реплицируется по иерархической линейке (район - область - столица) и проблемы, которые возникали при репликации, практически всегда были связаны только с неправильной настройкой даты на компьютерах.
. Поддерживается очень четкая система ведения логов. Можно выудить отчет о том, сколько времени пользователь сидел подключенным к данной базе и сколько документов прочитал и изменил.
. Также предусмотрена система разработки логики управления этими документами (приложение и база данных интегрированы в одном файле).
. Расширенные правила безопасности, по которым некоторому Пользователю можно давать/запрещать доступ к любому полю документа.
.
Но вместе с тем есть и некоторые недостатки данной системы.
Одним из недостатков это то, что у нас мало специалистов, которые занимаются разработкой приложений в Lotus Notes, другой недостаток. это плохая интегрированость с другими продуктами.
Именно второй недостаток мы сегодня и попробуем если не ²удалить⌡ то хотя бы приблизить до нуля.
Итак, мы будем интегрировать Lotus Notes с нашим приложением, написанным на Delphi.
Есть два варианта интеграции:
1. Чтение/запись данных в базу (с преобразованием документоориентированости в частичную реляционность)
2. отправка почты из программы через систему Lotus Notes и вся работа с документами, схожая на ту, которую клиент делает в Lotus Notes.

В первом варианте интеграции системы Lotus Notes есть свои два варианты решения (по крайней мере, я знаю только 2) Назовем их: ²вариант А⌡ и ²вариант Б⌡
Прошу принять во внимание, что подключаемся мы к документоориентированной базе. В ней в любом документе какое-нибудь поле может присутствовать, а может и отсутствовать. В этом случае заносить все таки все поля. Если в каком то документе какое-нибудь поле ненужно, лучше его просто внести как пустое, потому что если у нас будет несоответствие количества полей от документа к документу . то мы не сможем получить нормальную таблицу, и в лучшем случае у нас выплывет ошибка.
Итак ²вариант А⌡:
Устанавливаем NotesSQL ODBC driver, и, после настройки ODBC Data Source получаем такой доступ к базе как будто у нас не документоориентированная база, а простая реляционная база данных. У этого варианта есть один плюс и один минус. Плюс.это то, что мы работаем так же как и с стандартной СУБД, то есть пишем запросы на SQL и получаем наши результаты. Минус.это то, что такой вариант подключения достаточно медленный.
Здесь вроде все понятно и не должно вызвать никаких проблем. В настройках ODBC Data Source нужно только поставить галочку ²Return Notes implicit fields⌡. Это нам позволит видеть поля с уникальными кодами идентификаторами, которые Лотус выставляет каждому документу (можно использовать как ключевое поле для связей между таблицами). Кстати в это поле будет уникальное для всей распределенной базы данных (то есть, если у нас есть два филиала, у которых свои реплики, то система гарантирует уникальность этого поля на этапе внесения документа в базу данных). Согласитесь, это очень хорошо для программиста, который пишет распределенную базу.


Теперь рассмотрим ²вариант Б⌡ подключения к базе данных Lotus Notes:

Запускаем свой любимый браузер и вносим ему такой линк:
http://www.geocities.com/skolchin
Это страничка, на которой несколько российских разработчиков (а именно Sergey Kolchin, Sergey Kucherov, Sergey Okorochkov) держат свое детище с названием ²Lotus Notes object layer⌡. Фактически это библиотека, которая выступает как обертка вокруг Lotus Notes API (nnotes.dll). Так же нужно еще скачать компонент который с помощью ²Lotus Notes object layer⌡ покажет нам данные в стандартном датасете, называется сей компонент ²Notes/Delphi components⌡ (далее я буду называть его NDC). Все эти библиотеки freeware, что немаловажно для отечественных разработчиков.

В состав NDC входят:

TLnDatabase Инкапсулирует TNotesDatabase класс.
TLnTable Это изюминка библиотеки. TDataset-наследник компонент, который позволяет работать с Notes базами и views как со стандартными BDE таблицами. ВСЕ Data Controls будут работать с ним, будь то Grid или editors.
TLnAddressEdit Позволяет вводить одну или несколько Notes адресов с возможностью перелистывания их в базе Address book.
TLnAddressDlg Инкапсуляция of LnAddress функции . выбор адреса адресата
TLnBrowseDlg Инкапсуляция LnBrowse функции . показывает диалог выбора базы данных на сервере или локальном диске. (Очень похож на стандартный Open dialog в самой системе Lotus Notes)
TLnSendMailDlg Mail sender . с помощью этого компонента можно отослать почту

Используя первых два компонента из этого набора мы получаем доступ к базе данных Lotus Notes. Минусом такого варианта подключения к базе на Lotus Notes это то, что TLnTable не поддерживает SQL (это вроде и так понятно, хотя жаль, что нет аналога TQuery). Плюс же такого способа обмена данными . это намного большая скорость обмена.


А теперь перейдем ко второму варианту интеграции с Lotus Notes, а именно
²отправка почты из программы через систему Lotus Notes и вся работа с документами, схожая на ту, которую клиент делает в Lotus Notes⌡.
Для отправки почты, нам хватит компонентов LDC.(использкуя TLnAddressEdit, TLnAddressDlg, TLnSendMailDlg).
А вот для более конкретной работы с Lotus Notes мы будем использовать именно ²Lotus Notes object layer⌡:
В этой библиотеке есть целый набор классов, которые позволяют делать практически всю работу Lotus Notes через наше приложение.
Иерархия Список классов ²Lotus Notes object layer⌡:
-ELotusNotes
---ELnFormulaCompile
--TNotesACL
--TNotesACLEntry
--TNotesDatabase
--TNotesDirectory
--TNotesDocument
--TNotesDocumentCollection
---TNotesView
----TNotesFolder
--TNotesItem
---TNotesRichTextItem
-TNotesName

Несколько примеров, которые я взял из справочной системы к ²Lotus Notes object layer⌡:

Пример отправки почты средствами ²Lotus Notes object layer⌡:
procedure SendMail (anAddress, aSubject, aBody: string);
var
MailDb: TNotesDatabase;
MailDoc: TNotesDocument;
begin
MailDb := TNotesDatabase.create;
try
MailDb.OpenMail;
MailDoc := MailDB.CreateDocument;
try
MailDoc.SendTo := anAddress;
MailDoc.Subject := aSubject;
MailDoc.BodyAsString := aBody;
MailDoc.CheckAddress;
MailDoc.Send (False, '');
finally
MailDoc.free;
end;
finally
MailDb.free;
end;
end;

Вот один из примеров работы с базой (как удалить все документы из данной формы):
procedure DeleteAll (Db: TNotesDatabase; FormName: string);
var
Docs: TNotesDocumentCollection;
i: integer;
begin
Docs := Db.Search ('Form=" + FormName + '"');
try
for i := 0 to Docs.count-1 do Db.Delete (Docs.DocumentId[i]);
finally
Docs.free;
end;
end;


Думаю, теперь можно сказать что Lotus Notes это не такой уже и страшный зверь и что все таки можно интегрировать его с другими средствами разработки программного обеспечения (здесь я двумя руками голосую за Borland Delphi). И в этом нам помогли ребята из России: Sergey Kolchin, Sergey Kucherov, Sergey Okorochkov. Большое им спасибо за это.

Кстати, вот что написано в одном из отзывов на сайте автора:


By Julian 2003/06/04.
Posted at Oct 6, 2002:
Very interesting - 8 years Notes/Domino experience with VB. Used to program in Pascal, so interested in developing in Delphi.

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

Использованная литература.
. Документарные базы Lotus Notes http://msk.nestor.minsk.by/kg/1999/kg9911/kg94428.html
. ²Lotus Notes object layer⌡ home page http://www.geocities.com/skolchin/lndelphi_desc.html
. Lotus Notes . миф и реальность http://www.interface.ru/fset.asp?Url=/misc/news/n020213141.htm





Статьи данного автора в акции Borland:
Обсуждение
9 сентября 2003 - 10:52 drweb Во прикол....
А конкурс то продлили.... хотя почему? нигде не сказано о причине продления конкурса... ИМХО это не есть хорошо :(
5 сентября 2003 - 08:50 rollback А может так?
Надо попробовать ставить линк на картинку где-то в другом месте сети. Имхо, теги не обрезают. А, вообще-то, загрузка статей не самое сильное место сайта. Больше всего бесит невозможность отредактировать собственную-же статью. Угадать, в каком она появиться виде сложно.
30 августа 2003 - 08:03 aeff конструктив
Как подметил Rollback в комментариях к статье ╚Методика разработки программного обеспечения в среде Delphi для систем промышленной автоматизации╩, особенностью конкурса на itware есть то, что в статье позволено размещать только одну картинку и то в конце статьи, а я вижу 2 статьи, к которым это не относится. У нас, есть черные и белые люди? Это же не честно. Предлагаю исключить из конкурса статьи, у которых больше одного рисунка. ИМХО это будет справедливо...
Новое сообщение
Логин:
Пароль:
Заголовок:
Сообщение:

© ICC. Перепечатка допускается
только с разрешения .
Новости Публикации Календарь событий Пресс-центр
IT-каталог: продукты IT-каталог: компании Библиотека
Форум Персональные сервисы Регистрация Карта сайта
Звуки му последнее представление в киеве