На самом деле, COM-интерфейс для Lotus Notes довольно хорошо документированы, может быть, потому, что он принадлежал IBM уже более десяти лет. Здесь вы найдете один из способов: http://www.ibm.com/support/knowledgecenter/SSVRGU_9.0.0/com.ibm.designer.domino.main.doc/H_ACCESSING_THE_DOMINO_OBJECTS_THROUGH_COM.html.
Для Delphi вам необходимо создать блок импорта Domino_Tlb.Pas для COM-интерфейса Notes; это время, так как я сделал это, но я думаю, что вы это делаете, используя Delphi TypeLib Importer в Notes NlsXbe.Dll, который является частью как установки клиента Notes, так и сервера.
AFAIR, ноты «COM-поддержка не выставляет никаких COM-событий, поэтому нет поддержки« подписки »в смысле исходящего, управляемого событиями интерфейса. Тем не менее, для Notes важно использовать свой язык, похожий на VB-язык LotusScript, для записи «агентов», которые могут контролировать файлы почты, чтобы инициировать любые действия, соответствующие тем требованиям, которые необходимы для бизнеса. Поскольку нет «событий», агентов, реализованных с использованием интерфейса COM, они должны работать, периодически опросив интересующую базу данных Notes, и есть функции, доступные для поиска ранее необработанных почтовых отправлений (отправленных или полученных). Например, можно опрашивать Входящие Заметки DB с кодом, как это:
View := DB.GetView('($Inbox)');
Res := View.FTSEARCH('FIELD PostedDate < ''01/05/2012'' or FIELD DeliveredDate < ''01/05/2012''', 0);
Doc := View.GetFirstDocument;
Done := Doc <> Nil;
while not Done do begin
vFrom := Doc.GetItemValue('INetFrom');
[...]
Doc := View.GetNextDocument(Doc);
if Doc = Nil then
Done := True;
end;
Update: Агенты, написанные на LotusScript имеют доступ к встроенной коллекции UnprocessedDocuments
, который является уникальным для индивидуального агента, так что могу сказать уже обработал ли документ (см. http://www-12.lotus.com/ldd/doc/lotusscript/lotusscript.nsf/1efb1287fc7c27388525642e0074f2b6/fa9dc4724dab0fed8525642e007702d6?OpenDocument). Я не помню, будет ли это работать для COM-агента, но я сомневаюсь, что это имеет значение, если бы это произошло не потому, что COM-агент мог всегда писать собственный собственный элемент в документ, чтобы указать, что он его обработал.
ISTR, что было бы довольно неприятно узнать, какие поля Notes используются для этой цели. Работа с документами Notes с использованием интерфейса COM довольно проста, и когда я делал такие вещи десять лет назад, я никогда не сталкивался с непреодолимыми препятствиями для того, что мне нужно было делать.
Я сомневаюсь, что большинство администраторов Notes разрешили бы делать подобные вещи на сервере Notes, но все это отлично работает с клиентской машины и благодаря встроенной поддержке репликации db вы можете сделать это либо на сервере версии db или локальной реплики.
По существу, те же функции, что и в LotusScript, доступны через интерфейс COM.
Я боюсь, что у меня возникло желание установить Java-агентов на сервер Domino - см., Например, Running java agents in lotus notes.В моей фирме мы устранили это как возможность очень рано из-за хаоса, создающего потенциал плохого агента на живом корпоративном почтовом сервере.
От OLE, я полагаю, вы имеете в виду * COM *. OLE уже давно мертв. Google * Автоматизация Lotus Notes *, которая позволит вам получить доступ к функциям Notes для внешних приложений. Тем не менее, подготовка к кошмару документации, не соответствующей фактической реализации. –
Lotus поддерживает оба класса COM и OLE. Классы COM основаны на lotus.NotesSession, а классы OLE основаны на Notes.NotesSession и Notes.NotesUIWorkspace. Классы OLE требуют, чтобы клиент Notes выполнялся - и запустит его, если это не так. Для классов COM не требуется, чтобы клиент Notes работал, но требует, чтобы он был установлен и настроен. –
А прослушивание событий возможно с помощью OLE? У вас есть код примера? – rimes