Читайте также:
|
|
Пример. Узнаём, сколько раз пользователь открывал тот или иной документ. Для этого в программе для события QueryClose проверяется, находится ли документ в режиме редактирования. Если да, то значение специального скрытого поля (оно сохраняется вместе с документом), увеличивается на 1. Если документ не редактируется, то происходит переключение в режим редактирования, увеличивается на 1 счетчик того, сколько раз документ читался, затем документ сохраняется, при этом пользователь ничего не замечает.
Sub QueryClose (Source As Notesuidocument, Continue As Variant)
Dim ntr As Long
Dim Note As NotesDocument
Set note=Source.Document
If note.IsNewNote Then
Ntr=0
Else ntr=clng(note.NumTimesRead(0))
EndIf
ntr=ntr+1
Call note.ReplaceItemValue(“NumTimesRead”,cstr(ntr))
Call note.Save(True, false)
EndSub.
Clng – возвращает значение, преобразованное к типу long.
Cstr – возвращает значение, преобразованное в строку.
В рассмотренном выше примере действия производятся не над клиентским документом, хотя он является исходным документом в данной программе (используем объект Source класса NotesUIDocument). В программе происходит переход от клиента к серверу, для чего объектной переменной note присваивается значение свойства Document источника. Все действия осуществляются на сервере, т.к. это проще и программный код определяет событие QueryClose (пользователь находится в режиме закрытия документа), поэтому нет необходимости выполнять какие либо действия в документе клиента. Далее проверяем, не является ли документ новым, если это так, то счётчик обнуляем, иначе присваиваем ему значение поля NumTimesRead, в котором хранится число обращений к данному документу. Т.к. изменения осуществляются для сервера, то нет необходимости знать в каком режиме (редактирования или чтения) находится клиентский документ, т.к. если документ не редактировался, то сервер сам переключит его в режим редактирования и пользователь ничего не заметит (см. в постановке примера). Далее увеличим счётчик на 1, независимо от того, это новый документ или нет. Сохраним полученное значение счётчика в поле NumTimesRead и сохраним документ сервера.
67 Работа с программами-агентами.
Для создания программы-агента необходимо раскрыть Shared Code à Agents в Domino Designer, нажать кнопку New Agent. Для вновь созданного агента необходимо написать программный код (на языке формул, Lotus Script, Java, Java Script или выбрать простое действие из списка) хотя бы в одном из двух событий: Initialize, Terminate (последнее используется реже).
Управляющими средствами программ-агентов являются события.
Программы-агенты можно запускать по расписанию в любое время, они могут выполняться как следствие изменения или дополнения документа. Пользователь может запускать программу-агент, она может быть также запущена в результате получения почтового сообщения.
Все действия, отображаемые в меню Actions – это программы-агенты, они также используются повсеместно в почтовой базе Mail и инструментах календаря.
Если в меню Design выбрать программы-агенты, то список всех доступных программ-агентов базы данных будет показан в представлении, столбцы которого описывают различные свойства программ-агентов:
1) Name/ Comment – имя программы-агента и сопроводительные документы;
2) Alias – псевдоним имени программы-агента;
3) Trigger – значения поля When Should This Agent Run (когда должна выполняться данная программа-агент);
4) Owner (владелец) – Shared, если это общая программа-агент или имя конкретного пользователя;
5) Notes – если отмечено, то программа-агент запускается в Notes;
6) Web – если отмечено, то программа-агент запускается в Web.
Рассмотрим несколько примеров программ-агентов. Программа-агент Archive переносит документы в архив почтовой базы данных. Программа-агент Page Minder в Notes Personal Navigator проверяет наличие обновлений для выбранной Web-страницы, а затем обновляет ее по расписанию.
В типичном приложении, например, в приложении рабочего потока, программы-агенты могут отсылать уведомления о том, что время просмотра истекло. Другая программа-агент может добавить или изменить вновь созданный документ. Дискуссионные базы данных часто содержат программы-агенты, отправляющие сообщения участникам дискуссии после изменения документа или при добавлении нового документа в базу данных. Более сложные программы-агенты могут управлять перемещением данных из внешних баз данных в базы данных сервера Domino. Для выполнения сложного многоэтапного процесса программы-агенты могут подключать другие программы.
Очень большое количество программ-агентов можно создать для работы исключительно в Web-приложениях. Их можно создать, например, с помощью Java, а затем расширить их возможности для применения в Web-браузерах.
68 Создание программ-агентов Lotus Script.
Пример. Программа-агент для отправки по почте напоминаний, написанная на языке LotusScript. Нижеописанная программа-агент выполняется ежедневно по расписанию в базе данных, содержащей формы REQ. В этих формах существуют: поле CompletionDate, содержащее дату выполнения задания; поле Status, отображающее статус документа; поле PersonAssigned, указывающее, кто отвечает за выполнение задания. Программа-агент выполняется каждый день, просматривая все документы в базе данных. Если срок исполнения документа уже прошел, а документ не завершен, то исполнитель получает почтовое напоминание со ссылкой на незавершенный документ.
Sub Initialize
Dim s As New Notes Session
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim note, memo As NotesDocument
Dim item As NotesItem
Dim rtitem As NotesRichTextItem
Dim cutoff As New NotesDateTime (Today)
Dim duedate As NotesDateTime
Set db = s.CurrentDatabase
Set collection = db.AllDocuments
Set note = collection.GetFirstDocument
Дата добавления: 2015-09-10; просмотров: 75 | Поможем написать вашу работу | Нарушение авторских прав |