N&D7-Development-2005(V.Panov)v3

advertisement
Notes & Domino 7
Новые возможности для
разработки приложений
Владимир Панов
О чем будет рассказано...

Domino Designer 7: изменения в интерфейсе, новые
функции и возможности
Новые элементы дизайна приложений
LotusScript, @-функции, Java, C/С++
Web-сервисы
NSFDB2 – новая подсистема хранения
данных Domino в базах DB2
Интеграция «толстых» клиентов (Notes и Workplace)

И другие, еще более интересные вещи…





Domino Designer 7.0

Изменен список элементов дизайна





Более удобное представление информации
Редактирование «по месту» названия и комментария
Сортируемая колонка «Комментарий»
Кнопка «Sign» в списках агентов, web-сервисов и библиотек
Кнопка/индикатор в тулбаре, управляющая LS-отладчиком
Новые функции для
разработчика приложений


Java-отладчик для агентов, web-сервисов и
библиотек (интеграция с внешней Java IDE,
например, Eclipse)
Профилирование операций с Notes-объектами в
LotusScript- и Java-агентах
Сравнить с TeamStudio Profiler
Новое в элементах
дизайна

Представления и папки:



Для работы с DB2 (подробнее дальше)



Shared-колонки (как отдельные элементы дизайна)
Right-click – меню
DB2 Query View
DB2 Access View
Web-сервисы
Shared-колонки
Right-click – меню

Определяемые разработчиком View или Folder
действия, запускаемые через меню правой кнопкой
мыши
Программирование


Java 1.4.2
Несколько новых методов и свойств в Notes-классах




Несколько новых @-функций


NotesDatabase.GetModifiedDocuments
NotesDocumentCollection.UntilTime
NotesDOM...
@DB2Schema, @IsDB2, @IsEmbeddedInsideWCT, ...
Notes C API



DB2 Support Functions
NSFDbStampNotesMultiItem
Encryption/decryption APIs
http://www-128.ibm.com/developerworks/lotus/library/nd7-security-api/

LotusScript: Практически ничего нового 
Web-Сервисы







Новая возможность для интеграции на базе
стандартов: SOAP 1.1, WSDL 1.1
Это можно делать и до 7-й версии, но «вручную»
Пока только в одну сторону: Domino выступает как
провайдер (host)
Новый элемент дизайна – Web Service, развитие webагентов
Designer 7 обслуживает разработку
Задача Http – обеспечивает выполнение
Программный код (на LotusScript или Java)
автоматически синхронизируется с WSDL-описанием
сервиса
Web-Сервисы
Security
Advan
ced
Web-Сервисы

Show
WSDL
Web
Services

При импорте WSDLфайла автоматически
создается
необходимая
структура классов
При изменении кода
WSDL-интерфейс
сервиса обновляется
Web-Сервисы


К web-сервисам применимы все правила
безопасности web-агентов
Вызов сервиса (HTTP Post):
http://host/busytimews.nsf/busytimelookup?OpenWebService

Получение WSDL-документа, описывающего
интерфейс сервиса (HTTP Get):
http://host/busytimews.nsf/busytimelookup?WSDL
NSFDB2

NSFDB2 в Domino 7 – результат нескольких
лет работы Lotus и IBM над проектом с
кодовым названием
«Mission IMPOSSIBLE»
NSFDB2:
Что это такое



Альтернативная подсистема хранения данных
Domino, использующая возможности DB2 8.2 вместо
обычной файловой системы
Это не замена для традиционной NSF. Они могут
сосуществовать на одном сервере Domino, одни
базы в обычных nsf-файлах, от других остаются
файлы размером 5 байт с текстом {DB2}.
По заверениям IBM традиционная NSF не будет
«забыта», более того, она продолжает
совершенствоваться
NSFDB2:
Конфигурации серверов
NSFDB2:
Цели проекта





Функциональная прозрачность для пользователей и
совместимость для традиционных приложений
Простые инструменты администрирования
Новая функциональность, основанная на
применении реляционных технологий
 DB2 Query View
 DB2 Access View
Инструменты сторонних разработчиков, например,
для Backup
Производительность НЕ была целью для 7.0 !
NSFDB2: Архитектура
Domino7
NSFDB2:
Архитектура Domino7




Граница проведена на очень низком уровне
Обеспечивается API-совместимость
Все сервисы Domino работают без модификаций
Проводимая оптимизация влияет на все приложения
Domino
NSFDB2:
Структура данных

Для каждой базы Domino в DB2 создается своя «схема», содержащая
один и тот же набор таблиц (см.дальше).
Название схемы соответствует имени файла NSF:
I3,I2
I3,I2
I3,I2
I3,I2
I3,I2
I3,I2
I3,I2
I3,I2
I3,I2
I3,I2
I3,I2
I2
VIEWID
COLLATION
NOTEID
UNID
REFUNID
BRANCH
SUBTREE
SUMTYPE
SUMMARY
S1
HASSUBCATEGORY
MODIFIED
BIGSUMMARY
HUGESUMMARY
SUBTOTALTYPE
SUBTOTALS
HUGESUBTOTALS
MARKERNO
WINDOWSIZE
S2
S3
S4
S5
S6
S7
S8
S9
S10
S11
S12
D1
D2
D3
D4
D5
D6
D7
D8
D9
D10
D11
D12
N1
N2
N3
N4
N5
N6
N7
N8
N9
N10
N11
N12
UAVID
NSFNOTE
DB2MAP
NIFDATA
OWNER
NOTEREF
CATEGORY
TYPE
ACTION
NAME
COLREF
DROPORDER
REFNOTE
STATUS
SQL
UAVID
NIFCTL
PK
VIEWID
VIEWNAME
BRANCH
VERSION
DESC
PLATFORM
MARKERSIZE
MARKERS
UAVID
NSFOBJECT
PK,U1
NOTEID
U1
I2,I1
U1
U1
I3
UNID
MODIFIED
SEQUENCE
SEQTIME
FORMUNK
ACTIVEDATANOTE
GHOST
NOPURGE
DELETED
NOTECLASS
ACCESSDEF
BODYHDR
DATAHDR
RESPONSE
SUMMARY
NONSUMMARY
RESPBLOB
SUMBLOB
NSBLOB
UAVID
U1
U1
I2,I1
RRV
OBJBLOBLEN
HEADER
OBJBLOB
INLINE
NOTEID
UNID
PA
FILENAME
FILESIZE
FILEMOD
HOSTTYPE
UAVID
NSFDATA
NOTEID
SEQNUM
TYPE
DATA
UAVID
PROPERTIES
NSFOBJNAM
NAME
GROUP
TEXTPROP
STREAMPROP
BLOBPROP
UAVID
NAME
NAMESPACE
NAMEDOBJENTRY
ID
DESIGNDATA
UAVID
NSFDB2:
NSFSCHEMA
Элементы NSF (Notes Storage
Fasility) – документы - не
раскладываются полями по
отдельным колонкам таблиц. На
каждый документ создается одна
запись в таблице NSFNOTE, все
поля помещаются в «бинарном»
виде в несколько колонок типа
BLOB
NSFSLOT
PK
MAINDOCS_T
SLOTNO
CONTENTS
#NOTEID
I1
I2
#READERS
#UNID
#MODIFIED
CATEGORIES
SUBJECT
FROM
Элементы NIF (Notes Storage Fasility) – индексы
представлений и папок.
Колонки индексов раскладываются по отдельным
колонкам таблицы NIFDATA, содержащей индексы
всех представлений базы Domino.
Запись в таблице NIFDATA = «строка» представления
(ViewEntry)
NSFDB2:
DB2 Access View

DAV – определяемое разработчиком DB2-view,
обеспечивающее «внешний» (из любых приложений
DB2) доступ к определенным записям (документам)
Domino
NSFDB2:
DB2 Access View





DB2 Access View (DAV) – элемент дизайна, определяющий,
какие поля из каких документов базы должны быть
представлены в колонках соответствующей таблицы в базе DB2
Могут быть выбраны все документы базы или документы
определенной формы
Спец.колонки #NoteId, #UNID, #Modified
Поддерживаются типы данных:
Text, Text List, Time, Number
Multi-value – поля преобразуются в текст с заданным
разделителем 
NSFDB2:
DB2 Access View

Обращаясь к DAV с помощью SQL, можно:


Читать Notes-данные с учетом прав доступа к базам и
документам. Domino участвует в определении прав доступа.
Чтение выполняется быстро, так как обрабатывается самой
DB2.
Добавлять, модифицировать и удалять записи. Такие
операции транслируются в запросы к Domino, чтобы решить
проблемы конфликтов, блокировок и т.п.
Однако, транзакции Domino по-прежнему поддерживает
только на уровне отдельного документа
NSFDB2:
DB2 Query View



DB2 Query View (DQV) - «обычное» view, но вместо @-формулы отбора задается
SQL-запрос
(тоже SELECT, но совсем другой).
Поля получаемой по запросу таблицы могут использоваться в формулах
колонок вида.
SQL-запрос выполняется каждый раз при открытии вида пользователем или
приложением, Domino не хранит индекс, как для обычных view


Текст SQL-запроса задается @формулой, которая вычисляется при
открытии QueryView, => можно
передавать параметры, зависящие от
пользователя, настроек, данных
SQL-запрос выполняется DB2 – одной
из самых современных РСУБД.
Возможности почти безграничны.
Примеры далее...
NSFDB2:
DB2 Query View

Возможности применения

Доступ к DB2 Access View в текущей базе Domino. Если в SELECT присутствует
колонка #NoteId, документы даже открываются.
Имеет смысл, если требуется «join» с другими данными или еще какие-нибудь
операции, выполняемые DB2 лучше, чем Domino
Доступ сразу ко многим базам Domino
Доступ к «обычным» базам DB2, в том числе «федеративный»
DB2 Enterprise включает средства для подключения других баз, например,
Oracle, MSSQL, ..., можно добраться и до них
Можно использовать функции DB2 XML-Extender, получая данные в том xmlформате, который нужен, например, web-приложению. Вероятно, можно
использовать и другие «расширители», например, TextExtender – можно
выполнять полнотекстовые запросы по данным в DB2
Рекурсивные SQL-запросы позволяют оперировать с иерархией произвольной
«глубины», таким образом, можно представить и обработать в DB2 иерархию
ответных документов





NSFDB2:
Пример DB2 QueryView
На рисунке - структура данных примерной базы, входящей в комплект DB2.
Если построить аналогичное Notes-приложение традиционным способом, не
обойтись без дублирования данных. Например, в документе Employee просто
необходимо поле DeptName. Применение DAV+QV позволит этого избежать
EMP_RESUME
PK
PK
DEPARTMENT
EMPNO
RESUME_FORMAT
RESUME
EMP_PHOTO
PK
PK
EMPLOYEE
EMPNO
PHOTO_FORMAT
PICTURE
EMPNO
FIRSTNME
MIDINIT
LASTNAME
WORKDEPT
PHONENO
HIREDATE
JOB
EDLEVEL
SEX
BIRTHDATE
SALARY
BONUS
COMM
DEPTNO
DEPTNAME
MGRNO
ADMRDEPT
LOCATION
PROJECT
EMP_ACT
PROJNO
PROJNAME
DEPTNO
RESPEMP
PRSTAFF
PRSTDATE
PRENDATE
MAJPROJ
EMPNO
PROJNO
ACTNO
EMPTIME
EMSTDATE
EMENDATE
NSFDB2:
…Пример DB2 QueryView
SQL-запрос для QueryView, в котором можно сгруппировать сотрудников по
подразделениям (достаточно указать DEPTNAME в категоризованной колонке):
Select e.EMPNO, e.FirstNme ||' '|| e.LastName as NAME, e.PHONENO, e.SALARY,
d.DEPTNAME
from DB2ADMIN.SAMPLE_EMPLOYEE As e,
DB2ADMIN.SAMPLE_DEPARTMENT As d
where e.WORKDEPT = d.DEPTNO
SQL-запрос для QueryView, в котором, наоборот, показываются только
подразделения, но для каждого вычисляется суммарная зарплата сотрудников:
Select d.DEPTNAME, sum(e.SALARY) as SAL_TOTAL
from DB2ADMIN.SAMPLE_EMPLOYEE
As e,
DB2ADMIN.SAMPLE_DEPARTMENT As d
where e.WORKDEPT = d.DEPTNO
group by d.DEPTNAME
NSFDB2:
Возможности применения




Самая «тесная» интеграция приложений Domino и
DB2
«Нормализация» обычных Domino приложений
(особенно в сочетании с LEI или DECS)
Построение отчетов, которое в Domino всегда было
проблемой
Идея: Формирование истории изменений Dominoдокументов (триггерами на DAV), затем показ в
приложении данных на определенный момент
времени в прошлом (с помощью QueryView)
NSFDB2:
Архитектура ИС

Принципы построения архитектуры информационной системы
1.
2.
3.
4.
5.
6.
Минимизировать дублирование атрибутивной информации в документах
(оставить только то, что необходимо для FT-поиска и управления доступом
к документам, так как эти функции работают "по-старому".
Минимизировать использование "обычных" view, вместо них создавать
DB2 Query View (DQV) с SQL-запросами по таблицам, созданным как DB2
Access View (DAV).
Атрибутивные поля документов "опубликовать" в DB2 с помощью DAV. Как
правило понадобится по одному DAV на каждую форму (тип документа).
Получим дублирование всей атрибутивной информации, но только
однократное, а не многократное (и в документах и в индексах
представлений), как это обычно бывает.
Все необходимые представления реализуются как DQV (пока непонятно,
как быть с иерархией респонсов, можно ли ее реализовать в DQV).
В формах необходимые данные из других (взаимосвязанных) документов
также получаются при открытии с помощью Lookup по представлению типа
DQV.
Опционально, можно реализовать агенты (бизнес-процедуры),
модифицирующие взаимосвязанные документы, как встроенные
процедуры (в том числе триггеры).
NSFDB2:
Архитектура ИС

Отрицательные моменты в применении
перечисленных выше правил:


Ясно, что применение этих правил в полном объеме к
существующей системе потребует почти полной ее
переделки.
Такая система вообще не будет работать в NSF-варианте,
то есть, например, не будет работать локально.
NSFDB2:
Чего НЕТ в 7.0


Нет официального релиза!!! 
NSFDB2 пока может использоваться только в опытном режиме
Также отсутствуют:









NSF”Oracle”, NSF”MSSQL”,…
Fast Replication (репликация в пределах кластера на уровне
файловой системы)
Локальное шифрование баз (локально для сервера)
Shared Mail, IMAP4, LOG.NSF (нельзя разместить в DB2)
Максимум - две интернациональных последовательности
сортировки одновременно (в NSF до 256)
Полнотекстовый индекс пока создается и используется постарому (в файловой системе)
Не все платформы поддерживаются, в основном Windows и AIX
Производительность не была целью проекта 7.0,
… вот она и не достигнута! 
Задача HTTP не поддерживает DB2 QueryView 
NSFDB2 или DECS/LEI?

NSFDB2


DECS/LEI



SQL QueryView – возможность, которой нет в DECS/LEI
Возможность независимого определения структур данных
и последующей интеграции
Virtual Documents – документы существуют только как
записи в прикладной базе DB2 заданной структуры
Вывод: и в NSFDB2 и в DECS/LEI есть свои
уникальные фичи. Поэтому целесообразно
использовать сочетание NSFDB2 и DECS/LEI
NSFDB2:
Кому все это надо?




Если в вашей организации уже используется
система на основе DB2
Если вам нужно решать задачи, перечисленные
ранее
Если разработчики имеют опыт работы с SQL
Если использование инструментов
администрирования DB2 имеет конкретные
преимущества для вашей организации
Кое-что еще…



Более высокая производительность Domino 7:
Миф или реальность?
Интеграция Notes 7 и Workplace Rich Client
Что дальше?
Будет ли жизнь после
Производительность Domino 7:
Миф или реальность?

IBM:



Domino 7 использует CPU на 15-50% меньше, чем Domino 6
Domino 7 поддерживает на 50% больше пользователей на
той же платформе
Примечание: в тестах учитывалась только работа
пользователей с почтовой системой
(много «небольших» баз единоличного пользования)

Информация общедоступна:
• http://www-128.ibm.com/developerworks/lotus/library/nd7-perform/
• http://www.NotesBench.Org/
Производительность Domino 7:
Миф или реальность?

ИнтерТраст:
(по результатам нагрузочного тестирования CompanyMedia 3.1)




База СМ-ВнД объемом 9ГБ содержит 800тыс.док, с ней
одновременно работают несколько сотен пользователей
При равных условиях Domino 7 больше грузит CPU, чем D6 
Однако, при некотором числе Notes-пользователей Domino 6
перестает реагировать на клиентские запросы, даже если
ресурсов хватает (для IBM xSeries 366 это примерно 250)
Если ресурсов достаточно, Domino 7 может поддерживать в 3 раза
больше пользователей, например, когда D6 перестает реагировать
на запросы более чем 200 Notes-клиентов, Domino 7 уверенно
тянет 600 и не «зависает» даже при 1000! 
Интеграция «толстых»
клиентов (Notes и Workplace)


IBM Workplace Rich Client - он же:
 IBM Workplace Client Technology (WCT)
 IBM Workplace Managed Client (WMC)
«Толстый» клиент - целый программный комплекс, устанавливаемый
на рабочей станции и обеспечивающий:






Доступ к приложениям Workplace
множество общих для разных приложений элементов интерфейса
(например, программ редактирования офисных документов) и сервисов,
например:
локальное хранилище данных (причем, защищенное шифрованием)
синхронизацию данных с LWP-сервером
автоматическую установку/обновление клиентского ПО с сервера в
соответствии с заданными политиками
и даже облегченный вариант J2EE - EJB-контейнер, обеспечивающий
выполнение в клиенте бизнес-логики приложений, в том числе, в off-line
режиме
IBM Workplace Rich Client




Основа “толстого клиента" Workplace Eclipse Rich Client Platform (RCP), обладающая совершенной открытой
архитектурой, и поразительной расширяемостью, заложенной в саму
платформу.
Она то и позволяет на небольшой основе (объем Eclipse RCP 3.0
RunTime – около 8МБ) создавать очень разные клиентские приложения
или достраивать ее новыми слоями технологических компонент, опять
таки наследующими возможности расширения и кастомизации от
базовой платформы.
Одно из интересных «расширений» - Workplace Designer,
обеспечивающий визуальную среду разработки J2EE- приложений для
Workplace.
Другое – Notes-PlugIn. Начиная с версии 7 Notes клиент может
запускаться «внутри» Rich-клиента Workplace как его расширение.
Rich Client, Notes-PlugIn и
Notes-приложения...



Начиная с Notes 7.0 и WMC 2.5
один толстый клиент может
становиться частью другого
На существующие Notesприложения эта замена
практически не влияет,
поскольку функциональность
Notes внутри WMC
поддерживается полностью
В 2006г. появится такой
«сборный» клиент (Notes+WMC)
на платформе Linux.
Rich Client, Notes и CompanyMedia
...Rich Client, Notes-PlugIn и
Notes-приложения


В последующих версиях (7.x, 8, 9, …) IBM собирается
развивать это направление интеграции Notes и LWP,
и со временем для Notes-приложений, работающих в
Notes-Plugin внутри WMC, откроются
дополнительные функциональные возможности,
основанные на интеграции с приложениями и
компонентами WMC, разрабатываемыми как IBM,
так и другими компаниями.
Например, можно будет использовать в Notes
встроенные в WMC "офисные" приложения для
работы с текстами, электронными таблицами и
презентациями
Перспективы совместного развития
Notes/Domino
и Workplace .
Вопросы?
Владимир Панов
panov@intertrust.ru
Download