Применение новых элементов разработки в приложении ITSO Electronics
Новые функции и возможности Lotus Domino Designer 7 основаны на более тесной интеграции с развивающимися стандартами Web, увеличении функциональной совместимости с другими стандартами программного обеспечения IBM и упрощении использования приложений разработчиками и пользователями.
В этой лекции мы проиллюстрируем, как новые функции Lotus Domino 7 используются для улучшения приложения ITSO Electronics. Рассмотрим следующие функции:
- команды контекстного меню;
- свойство формы AutoSave;
- общие столбцы;
- расширенные настройки для представлений и папок;
- дополнения к языку формул;
- дополнения к классам LotusScript, COM и OLE;
- дополнения к классам Java и CORBA.
4.1 Команды контекстного меню
У разработчиков приложений теперь появилась возможность добавлять действия в меню, выпадающее по нажатии правой кнопки мыши (иначе их называют контекстными) в представлениях и папках. По правому щелчку мыши открывается быстрый доступ к функциям, к которым пользователи обращаются регулярно. Такой способ воздействует на выбранные документы в представлении и технически ничем не отличается от щелчка по кнопке в панели Action. С точки зрения пользовательского интерфейса, эта функция полезна, когда пользователь предпочитает обрабатывать одиночный документ на основе информации, имеющейся в представлении, например при отправке файла в часто используемую папку, удалении или выделении фрагмента текста. Добавление действий в контекстное меню может быть использовано как в качестве альтернативы, так и вместе с действиями в панели Action и меню Action. В контекстное меню могут быть добавлены и новые, и уже существующие действия.
В приложении ITSO Electronics в представлении "Sales Activity By Customer" существует командная кнопка Create New Sales Activity. Для того чтобы увеличить эффективность использования приложения, мы обновили параметр Display окна свойств Action и отметили галочкой свойство Include in right mouse button menu (Включить в контекстное меню) ( рис. 4.1).
После щелчка правой кнопкой мыши в представлении появится контекстное меню, в котором будет только что добавленное действие ( рис. 4.2). Мы также добавили в контекстное меню и другие действия.
4.2 Свойство формы AutoSave
AutoSave в клиенте Lotus Notes – это функция, с помощью которой осуществляется регулярное автоматическое сохранение документов Lotus Notes в локальную базу через определенные интервалы времени, определяемые пользователем. В случае сбоя программы, рабочей станции или перебоев в питании пользователь сможет восстановить документ, который редактировал.
4.2.1 Включение поддержки функции AutoSave в клиенте Lotus Notes
При установке Lotus Notes 7 функция AutoSave не включена по умолчанию. Для ее включения необходимо выбрать соответствующий параметр в Lotus Notes Client User Preferences (Параметры пользователя клиента Lotus Notes).
- Выберите File => Preference => User Preferences (Файл Параметры Параметры пользователя).
- На вкладке Basics в параметрах Startup Options (Параметры запуска) активируйте опцию AutoSave every 15 minutes (Производить автосохранение каждые 15 минут) (см. рис. 4.3).
- (Дополнительно) увеличьте или уменьшите интервал выполнения AutoSave.
- Щелкните по кнопке ОК.
Параметры AutoSave в окне User Preferences соответствуют трем переменным в файле NOTES.INI. Эти переменные приведены в табл. 4.1.
4.2.2 Активирование AutoSave для формы
В Lotus Domino Designer использованы преимущества новой функции AutoSave, заключающиеся в возможности ее активизации в форме, находящейся в приложении Lotus Notes. Если пользователи активируют функцию AutoSave в параметрах Lotus Notes, как показано в предыдущем разделе, документы, которые они создают или редактируют, будут сохранены в отдельную локальную зашифрованную базу данных с помощью формы, в которой активированы AutoSave. Для того чтобы активировать функцию AutoSave для формы, откройте форму в Domino Designer и поставьте галочку рядом с опцией Allow Autosave (Разрешить выполнение Autosave ) в окне свойств Form (см. рис. 4.4). Если функция AutoSave активирована в клиенте Lotus Notes, ее выполнение каждый раз будет отображаться в строке состояния.
Разработчикам приложений следует убедиться в том, что функция AutoSave при активации в формах приложения корректно работает с их приложением. Во многих приложениях Lotus Notes и Domino присутствует код, создающий элементы по событиям Save (Сохранение) и Postsave (Постсохранение) или производящий проверку достоверности в момент загрузки. Из-за того что коды проверки достоверности и события формы не выполняются во время автоматического сохранения документа, автоматически сохраненный документ может не загрузиться после восстановления. Возможно, потребуется добавить код в событие Queryopen, чтобы установить значения по умолчанию для конкретных элементов, чтобы гарантировать правильную загрузку документов после восстановления.
Элемент $AutosaveRecovery можно использовать для работы с восстанавливаемыми документами. $AutosaveRecovery доступен для восстановленных документов до события PostOpen, а после этого события он удаляется. Например, форма может содержать код Queryopen, предотвращающий открытие документа в режиме редактирования, если поле Status не эквивалентно полю Draft. Если пользователь изменил статус на "Public" и произошло автоматическое сохранение, а после этого произошел сбой в работе компьютера, пользователю все еще необходимо открыть этот документ в режиме редактирования, несмотря на то, что значение поля Status кажется некорректным. Обратите внимание на следующий код:
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant) Dim doc As NotesDocument If Mode And Not Isnewdoc Then Set doc = Source.Document If doc.Status(0) <> "Draft" Then Continue = False Messagebox "Only Draft documents may be edited.", _ MB_ICONSTOP, "Edit Error" End If End If End Sub
Вместо этого можно написать:
If doc.Status(0) <> "Draft" And Not doc.HasItem("$AutosaveRecovered ") Then
Элемент $DontAutosave можно использовать для отключения функции AutoSave в данном конкретном документе. Функция AutoSave может быть снова активирована путем удаления $DontAutosave.
4.2.3 Восстановление документов, сохраненных с помощью AutoSave
Автоматически сохраненные документы могут быть восстановлены либо сразу после загрузки, либо в любое другое время после запуска. При выполнении запуска после сбоя системы или перебоя в питании, после аутентификации пользователю предлагается восстановить несохраненный документ (см. рис. 4.5).
Если вы щелкнете по кнопке Yes (Да), откроется окно Recover Unsaved Documents (Восстановить несохраненные документы), в котором перечислены все документы, которые могут быть восстановлены (см. рис. 4.6).
В табл. 4.2 описаны функции каждой из четырех кнопок окна, представленного на рис. 4.6.
Если пользователь щелкнул по кнопке No, то восстановление документов, сохраненных автоматически, можно осуществить позже, выбрав File => AutoSave => Recover AutoSaved Documents (Файл Автоматическое сохранение Восстановить документы, сохраненные автоматически). После этого появится окно Recover Unsaved Documents, и пользователь сможет восстановить или удалить документы описанным выше способом.
Документ не может быть восстановлен, если не найдена реплика базы данных документов. Он остается в базе данных AutoSave "как есть", и позже можно снова его восстановить. Если документ был модифицирован с момента автоматического сохранения, появится соответствующее сообщение и пользователю будет предложено либо переписать документ, используя сохраненный вариант, либо сохранить внесенные изменения. Если пользователь решит восстановить документ, полученный в результате автоматического сохранения, документ будет открыт в Lotus Notes в режиме редактирования. AutoSave не будет автоматически сохранять документ от лица пользователя после восстановления. Если документ восстановлен из базы данных AutoSave, он также удаляется из базы данных, что позволяет поддерживать приемлемые размеры базы данных AutoSave.
4.2.4 Использование функции AutoSave вручную
Иногда пользователю, редактирующему документ, требуется немедленно его сохранить. Текущий документ можно сохранить в базу данных AutoSave, выбрав File => AutoSave => Autosave Now (Файл Автоматическое сохранение Выполнить автоматическое сохранение немедленно).
4.2.5 Получение доступа к базе данных AutoSave
База данных AutoSave находится в пользовательской директории Data. После создания база данных AutoSave именует файлы так же, как файлы почты. К названию базы данных добавляется приставка as_. В нашем сценарии у пользователя Manny Santana база данных AutoSave будет называться: as_msantana.nsf. Если база данных с таким именем уже существует, то к названию будет добавлена цифра 1 и далее, до тех пор, пока не будет создано уникальное имя.
Учитывая особенности присвоения имен в базе данных AutoSave будут возникать конфликты с такими именами пользователей, как John Doe, Jane Doe, James Doe и т. д. Чтобы быть уверенными в том, что AutoSave соответствует текущему пользователю, после создания базы данных необходимо проверить пользователя, указанного в файле NOTES.INI:
AUTO_SAVE_USER,<Abbreviated User Name>=<Database name relative to data directory>
В нашем приложении этот элемент будет добавлен к файлу NOTES.INI пользователя Manny Santana:
AUTO_SAVE_USER,Manny Santana/ITOSElectronics=as_msantana.nsf
Когда пользователь запускает Lotus, происходит проверка файла NOTES.INI на наличие элементов, относящихся к базе данных AutoSave. Если такие элементы найдены, название базы, заданное в элементе, используется в качестве названия базы данных AutoSave. Если пользователь не обладает доступом к заданной базе данных AutoSave, он получит сообщение об ошибке и функция AutoSave будет отключена. Если заданной базы данных не существует, будет создана новая база данных, при этом будет использовано имя, заданное в элементе. Если соответствующий элемент с именем пользователя отсутствует в файле NOTES.INI, то он в нем создается, соответственно создается база данных с учетом правил присвоения имен, описанных выше.