|
|
|||||||||||||||||||||||||||||
|
Книга по Lotus. Разработка приложений в среде Domino 7: Глава 2Источник: IBM developerWorks Россия Команда Авторов International Technical Support Organization, специалисты International Technical Support Organization, IBM
В этой главе мы обсудим новые возможности, возникающие при интеграции IBM Lotus Notes и Domino 7 с IBM DB2 Universal Database (UDB). Там, где это необходимо, мы используем в качестве примера приложение ITSO Electronics для объяснения новых возможностей разработки приложений. Ниже вы найдете информацию, в которой будут раскрыты следующие темы:
Замечание. IBM Lotus Notes и Domino 7 с DB2 были выпущены с ограниченной доступностью (Limited Availability); как таковые они недоступны для общего пользования, а рассчитаны только для оценки их возможностей. Для получения дополнительной информации о программе Limited Availability, а также другой важной информации, касающейся этой темы, посетите страницу в Интернете http://www.ibm.com/lotus/nsfdb2. 2.1 Введение в интеграцию Domino и DB2Lotus Notes и Domino имеет ряд преимуществ в плане интеграции реляционных баз данных, бизнес-систем, а также систем планирования и управления ресурсами предприятия (enterprise resource planning - ERP), интеграция которых осуществлялась с помощью таких продуктов как: Lotus Enterprise Integrator, Domino Enterprise Connection Services, Data Connection Resources и Lotus Connectors LotusScript Extensions. Lotus продолжает эти традиции с Notes и Domino 7 и обеспечивает новыми децентрализованными возможностями разработки приложений для интеграции реляционных баз данных IBM DB2, которые одинаково могут применять как пользователи, занятые в области производства, так и ведущие разработчики приложений. Торговые марки Lotus и DB2 в пределах корпорации IBM работали вместе для улучшения интеграционных возможностей, а сервер Domino 7 обеспечивает возможность выборочно определить новые или существующие базы данных Domino, так как в них включена поддержка DB2. Пользователи получают открытый доступ к базам данных Domino с поддержкой DB2 через сервер Domino 7, но сами базы данных хранятся в DB2. Таким образом, становится возможным в базе данных Domino с поддержкой DB2 использовать реляционную структуру, а также данные из базы данных Domino с поддержкой DB2 в реляционной структуре, и в то же время сохраняется поддержка функций Notes API, включая репликацию данных, маршрутизацию почты и административный доступ. Так как IBM DB2 является реляционной системой базы данных, данные с отдельных баз данных DB2, таблиц, видов и интегрированных объектов могут быть легко скомбинированы в новые наборы данных, используя их общие поля данных и отношения. Все это позволяет разработчику работать и представлять данные другими, более удобными способами, и облегчает создание более интегрированных и значимых приложений в среде Domino и других средах, использующих данные Domino, данные DB2 и реляционные возможности. Более подробно эти возможности мы обсудим далее в этой главе. До того как использовать новые интеграционные возможности Domino и DB2, вы должны установить сервер DB2 и сконфигурировать сервер Domino 7 для подключения к серверу DB2. В Lotus Domino 7 новые интеграционные возможности доступны в операционных системах Microsoft Windows и IBM AIXТ 5LTM. Локальная установка DB2При настройке интеграции Domino и DB2 можно выбирать между локальной или удаленной установкой. При выборе локальной установки оба сервера, и Domino и DB2, будут установлены на одной вычислительной машине. Локальную установку лучше использовать для тестовой среды или же для системы с малой производительностью. На рис. 2.1 показана система с локальной установкой. Рис. 2.1. Локальная установка: сервер Domino и сервер DB2 установлены на одном компьютере Удаленная установка DB2Для систем с высокой нагрузкой на сервер, лучше, скорее всего, будет выполнить удаленную установку. В таком случае сервер Domino и сервер DB2 будут установлены на разных компьютерах. На рис. 2.2, представлен пример удаленной установки. Рис. 2.2. Удаленная установка: сервер Domino и сервер DB2 установлены на разных компьютерах Существует два уровня интеграции DB2. В первом случае сервер Domino и сервер DB2 устанавливаются на одном и том же компьютере, а во втором случае на разных компьютерах. Если вы решили установить оба сервера на одном компьютере, то вам необходимо выполнить приведенную ниже процедуру.
Если вы решили устанавливать оба сервера, Domino и DB2, на разных компьютерах, то вам необходимо выполнить приведенную ниже процедуру.
Замечание. Убедитесь в том, что вы удалили с компьютера, на котором вы собираетесь устанавливать сервер DB2 Access все версии Lotus Notes и Domino, вышедшие раньше версии 7.0. В противном случае система не будет работать. Если есть необходимость сохранить раннюю версию сервера Lotus Notes/Domino, то переименуйте папку, в которой хранятся файлы этой программы. Убедитесь в том, что nnotes.dll не находится в PATH. В данном издании мы заостряем внимание на новых элементах разработки приложений, появившихся в Domino 7. Поэтому рассматривается только основные моменты процесса установки. Для получения более подробной информации о том, как установить и обслуживать интеграцию Domino и DB2, обратитесь к следующим источникам:
Совет. Во время установки необходимо определить несколько имен пользователей DB2. Имена пользователей DB2 должны соответствовать приведенным ниже правилам присвоения имен и всегда должны быть написаны заглавными буквами:
2.2 DB2 Access ViewsВ Lotus Notes и Domino применяется иной принцип хранения данных по сравнению с тем, что используется в реляционных базах данных, таких как DB2. В реляционных базах данных информация упорядочивается и распределяется по хорошо определенным таблицам, а в базе данных Domino документы или «записки» («notes»), состоящие из списка полей, сохраняются в формате неструктурированного файла. Такой способ хранения информации усложняет доступ к данным Domino из DB2. Для решения данной проблемы в Domino 7 были введены DB2 Access Views, общие ресурсы, позволяющие отделить DB2 views от данных Domino путем систематизации данных в таблицу, которую можно запросить с помощью языка структурированных запросов (SQL). DB2 Access Views являются элементами разработки приложений заднего плана и не видны конечным пользователям. DB2 Access Views доступны только для баз данных, сохраненных на сервере DB2. Перед тем как создавать DB2 Access View, на сервере Domino должна быть активирована DB2 и база данных должна находиться в системе DB2. Если вы создадите локальную реплику базы данных или же реплику на сервере Domino 7.0, на котором DB2 не активирована, то DB2 Access View все еще будет находиться в базе данных, однако им нельзя будет воспользоваться или он не будет видимым в Lotus Domino Designer. Когда в базе данных Lotus Notes включается поддержка DB, Domino создает схему базы данных DB2, чтобы поддерживать доступные для пользователей виды просмотров данных в базе данных Lotus Notes. Имя схемы основывается на имени файла NSF. Любые созданные вами DB2 Access Views будут также расположены в этой схеме. Когда вы создаете DB2 Access View, информация копируется и резервируется в таблице DB2. После создания и инициализации данных в DB2 Access View Domino автоматически синхронизирует обновления между неструктурированными данными Domino и структурированными данными столбцов в DB2 Access View. Следовательно, обновлять DB2 Access View нет необходимости. 2.2.1 Создание DB2 Access ViewsДля создания нового DB2 Access View вам необходимо выполнить приведенные ниже действия. К тому же вы можете обратиться к справке Lotus Domino 7 Designer, которую можно найти по следующему адресу в Интернете:
Таблица 2.1. Виды данных и их длина в DB2 Access View
2.2.2 Экспортирование данных с типом TIMEDATE в DB2 Access ViewТип данных Lotus Notes TIMEDATE позволяет хранить дату, время, временную зону, а также индикатор летнего времени, однако временная отметка DB2 позволяет хранить только дату и время. В DB2 считается, что все даты и время локальны по отношению к часовому поясу сервера DB2. Это может привести к неверному отображению времени при экспортировании данных с типом TIMEDATE в DB2 Access View или к чтению данных с типом TIMESTAMP из DB2 в Query View (вне зависимости от того, откуда они взяты: из DB2 Access View или же из других таблиц DB2). Существует два варианта сохранения даты и времени в DB2 Access View: локальное (местное) время или время, измененное в соответствии с GMT (стандартизованное). Вы можете изменить способ работы с ними, используя параметр «Normalize to GMT for time zone conversions» на закладке Advanced окна свойств Access View Entry. Замечание. Если этот параметр изменен в существующем DB2 Access View, вы должны будете перестроить DB2 Access View. 2.2.3 Размещение диапазонов дат в DB2 Access ViewПри вставке или обновлении диапазонов дат в документе, расположенном внутри DB2 Access View через SQL, необходимо определить диапазоны дат в полном формате временной отметки DB2, например такой, как yyyy-mm-dd-hh.mm.ss.subsec (год-месяц-день-час.минута.секунда.миллисекунда) или 2005-12-12-08.06.30.123456. Если при выполнении данного этапа произошла ошибка, вставленное значение будет не определено или равно нулю. 2.2.4 Проверка статуса DB2 Access ViewПри выборе DB2 Access View в Domino Designer показывается список всех DB2 Access View, находящихся в базе данных. Перед каждым DB2 Access View отобразится иконка, показывающая его статус. Данные иконки с соответствующими расшифровками приведены на рис. 2.7. Рис. 2.7. Иконки, символизирующие статус каждого DB2 Access View
2.2.5 Дополнительный анализ создания DB2 Access ViewВы можете создать сколь угодно много DB2 Access View в базе данных, например по одному на каждую форму. Тем не менее, легче создать один или два больших DB2 Access View и включить в них данные из всех форм, к которым вы хотите иметь доступ. Чтобы ограничить количество столбцов в DB2 Access View, попробуйте использовать одинаковое имя для соответствующих полей в разных формах. Domino невероятно гибок, когда дело доходит до полей и соответствующих им типов данных. Два документа, основанные на одной и той же форме, в Lotus Notes и Domino могут иметь разные типы данных. Это преимущество в гибкости может вызвать проблемы, например когда вы попытаетесь создать DB2 Access View. DB2 крайне строга по отношению к типам данных. Необходимо будет часто чистить данные в базе данных, а также быть уверенным в том, что содержимое всех полей, использованных в DB2 Access View, обладает одним и тем же типом данных. Если в документе Lotus Notes будет потеряно какое-либо поле, или значение этого поля будет отсутствовать, то никаких проблем не возникнет. В DB2 Access View значение такого поля будет просто установлено на нуль, и при любых запросах, касающихся этого поля, будет отображаться пустое (нулевое) значение. Поля с типом rich text и formula, не поддерживаются в DB2 Access View. Если вы включите такие поля в DB2 Access View, то сообщения об ошибке выдаваться не будет, но вместо содержимого поля будет отображаться нуль. Размеры DB2 Access View и его элементов (таблиц, видов, триггеров и индексов) не включаются в итоговый размер файла базы данных Lotus Notes с поддержкой DB2, для которой оно было создано. Таким образом, если у вас есть множество DB2 Access View, связанных с базой данных Lotus Notes с поддержкой DB2, следует помнить, что они займут такое количество дискового пространства, которое будет превышать дисковое пространство, отведенное под саму базу данных Lotus Notes с поддержкой DB2. Тем не менее, в результате долгих дискуссий сотрудники корпорации IBM пришли к тому, что использование большого количества дискового пространства часто оказывается необоснованным. На ранних этапах развертывания было показано, что даже DB2 Access View с большим количеством столбцов обычно занимает всего лишь от 2% до 3 % от дискового пространства, занимаемого базой данных. 2.2.6 Применение DB2 Access View в рамках приложения ITSO ElectronicsВ нашем сценарии, приведенном в качестве примера, компании ITSO Electronics требуется использовать новую возможность Query Views, к обсуждению которой мы перейдем в п. 2.3, «Query Views». Для того чтобы подготовить базу данных к использованию Query Views, нам необходимо создать несколько DB2 Access View. В этом примере мы решили использовать только по одному DB2 Access View на каждую базу данных Lotus Notes приложения ITSO Electronics. Для начала создадим DB2 Access View для базы данных ITSO Electronics Sales, которую назовем SALESDAV. В табл. 2.2 представлены выбранные поля. Таблица 2.2. DB2 Access View SALESDAV в базе данных Sales
Следующий DB2 Access View, который мы создадим в базе данных ITSO Electronics Customer, будет называться CUSTOMERDAV (см. табл. 2.3). Таблица 2.3. DB2 Access View CUSTOMERDAV в базе данных Customer
И наконец, мы создадим DB2 Access View в базе данных ITSO Electronics Products и назовем его PRODUCTSDAV. Таблица 2.4. DB2 Access View PRODUCTSDAV в базе данных Products
В дальнейшем мы используем эти DB2 Access View при создании Query View, которое рассмотрено в п. 2.3, «Query Views». 2.3 Query ViewsQuery Views - это новый тип видов в базе данных Notes (NSF). Они заполняются путем выполнения запросов, написанных на языке структурированных запросов (SQL). На первый взгляд кажется, что виды Query Views - это всего лишь еще один способ сбора и представления данных. Однако при более пристальном изучении становится очевидно, что Query Views заставляют вас по-новому посмотреть на данные в Lotus Domino. Здесь впервые возможно отображать информацию из более чем одной базы данных Lotus Notes в пределах одного вида. Вы можете использовать приведенные ниже конструкции SQL.
Запросы динамически строятся на основе языка SQL и не занимают места в базе данных. SQL-выражение, в свою очередь, может быть динамически построено с использованием языка формул Lotus Notes. Вы можете свободно использовать такие @-формулы, как @Username и @Today, не опасаясь возникновения проблем с индексированием, которые могли бы возникнуть в стандартных представлениях Lotus Notes. Можно даже управлять содержимым представления с помощью @-формулы взаимодействия пользователя с системой @Prompt. Описанием подобного рода аспектов мы займемся в п. 2.3.4, «Динамическое создание Query Views с помощью @-формул». 2.3.1 Создание Query ViewQuery View не способен напрямую отображать данные документа Lotus Domino. Чтобы сделать это, необходимо в первую очередь, создать DB2 Access View, как описано в п. 2.2.1, «Создание DB2 Access View». Затем можно приступить к созданию Query View, выполнив приведенную ниже последовательность действий.
Возможно, вы захотите разделить на части ваше SQL-выражение и записать его в несколько строк для удобочитаемости, как показано в примере 2.2, однако применение такого метода при написании SQL-выражений приведет к появлению сообщений об ошибках. Пример 2.2. Такой способ написания SQL-выражений вызовет появление сообщений об ошибках
Когда мы работали над созданием приложения ITSO Electronics, то пришли к выводу, что написание SQL-выражений в виде строк, объединенных знаком «+», позволяет достигнуть той же легкости при чтении и что, самое главное, они работают в Lotus Domino 7. Пример представлен в примере 2.3. Каждая часть SQL-выражения должна быть заключена в кавычки. Пример 2.3. Этот способ написания SQL-выражений удобочитаем и работает
Язык SQL позволяет использовать упрощенный способ написания SQL-выражений, в котором используются псевдонимы для источников данных. Код программы, представленный в примере 2.3, можно переписать по-другому (см. пример 2.4). Хотя фактически разницы нет, впоследствии этот способ написания SQL-выражений поможет вам понять более сложные примеры. Пример 2.4. SQL-выражение, написанное более простым способом с помощью псевдонимов
2.3.2 Создание Query View с помощью оператора JoinВ Lotus Domino 7 вы можете соединить данные из различных DB2 Access View в один Query View. При этом не играет никакой существенной роли, находятся ли DB2 Access View в одной базе данных или же в разных. Каждый элемент представления может показывать связанные данные, взятые из различных документов, что возможно благодаря DB2 Access View. На рис. 2.9 показано, как информация из DB2 Access View ORDERDAV и CUSTOMERDAV объединяется в ResultSet SQL. Рис. 2.9. Создание Query View, используя оператор Join В примере 2.5 показано соответствующее SQL-выражение, которое было использовано для этой цели. Пример 2.5. SQL-выражение, использующее оператор Join для создания Query View
На рис. 2.10 показано представление Customer Sales, созданное на основе SQL-выражения, рассмотренного в примере 2.5. Рис. 2.10. Query View, созданный при помощи оператора Join
2.3.3 Создание Query View с помощью оператора UnionКомпания ITSO Electronics настаивает на том, чтобы все ее внешние контакты были объединены в одно представление. При этом информация о поставщиках хранится в базе данных Products, а данные покупателей хранятся в базе данных Customer. В Lotus Notes и Domino Release 6 данную задачу можно выполнить, лишь создав отдельную базу данных, в которую помещается информация. Однако с появлением Lotus Domino 7 у нас появилась возможность создать Query View с помощью оператора Union в пределах нашего SQL-выражения. На рис. 2.11 показано, как с помощью оператора Union происходит создание Query View из отдельных DB2 Access View. Рис. 2.11. Создание Query View, используя оператор Union В примере 2.6 показано SQL-выражение, используемое для сбора данных представления, в котором содержатся все внешние контакты компании ITSO Electronics. Для того чтобы оператор Union заработал, необходимо, чтобы каждая формула отбора возвращала одинаковое число столбцов с одинаковыми именами столбцов. К тому же у соответствующих столбцов каждого набора результатов должны быть соответствующие типы полей. Пример 2.6. SQL-выражение для объединения
На рис. 2.12 показан Query View, отображающий данные поставщиков, и покупателей компании ITSO Electronics, располагающиеся в различных базах с использованием SQL-кода, приведенного в примере 2.6. Рис. 2.12. Query View, созданный с помощью объединения
Динамическое создание Query Views с помощью @-формулВо всех приведенных и использованных до сих пор примерах применялись статические SQL-выражения. Однако во многих случаях лучше создавать SQL-выражения на лету, когда Query View уже открыто. К счастью, Lotus Domino 7 позволяет подсчитывать Query View на языке @-формул. В примере 2.7 представлено простое SQL2.3.4-выражение, которое «собирает» все мероприятия по сбыту для покупателя «ITSO» из DB2 Access View SALESDAV. Для этой цели в нем используется условие S.CUSTOMERNAME=‘ITSO’. Пример 2.7. Статическое SQL-выражение
Вместо этого статического выражения вы можете динамически выбрать название компании при открытии представления. Для достижения этой цели вам необходимо добавить в код команду @Prompt, чтобы пользователь смог ввести название компании, информацию о которой он ищет. См. пример 2.8. Пример 2.8. Динамически составляемое SQL-выражение, использующее язык формул
Теперь каждый раз при запуске этого кода перед пользователем будет появляться запрос на ввод имени покупателя. Как уже было отмечено в п. 2.3.1, «Создание Query View», вы не можете быть уверены в том, что название схемы SQL для базы данных останется тем же, после того, как она будет скопирована или продублирована на другом сервере. Поэтому рекомендуется избегать статических ссылок на схему базы данных в ваших SQL-выражениях. Способ обхождения этого ограничения состоит в использовании функции @DB2Schema которая была внедрена в Lotus Notes и Domino 7. Описание данной функции см. в п. 4.5, «Дополнения к языку формул». Чтобы получить SQL DB2Schema для текущей базы данных необходимо использовать команду @DB2Schema вместе с функцией @DBName. Если поместить эти команды в SQL-выражение из примера 2.7, мы получим код, похожий на тот, что представлен в примере 2.9. Пример 2.9. Динамически вычисляемая схема текущей базы данных
Также может возникнуть необходимость написать SQL-выражение, позволяющее получить доступ к DB2 Access View в другой базе данных. Если предположить, что эта база данных находится в той же папке, что и текущая, то SQL-выражение, основанное на примере 2.7, будет похоже на решение, представленное в примере 2.10.
Если при создании SQL-выражения вы не будете уверены в том, по какому пути находится база данных, к которой необходимо получить доступ, можно воспользоваться одной из приведенных ниже команд для получения информации о пути, по которому располагается интересующая вас база данных, не используя при этом конфигурационные документы:
|
SELECT S.AType, S.Anumber,S.Product1 , C.CUSTOMERNAME, C.OWNERNAME, C.#NOTEID, C.#OID, S.CUSTOMERNUMBER, S.MadeSale FROM SALES.SALESDAV S Left outer JOIN CUSTOMER.CUSTOMERDAV C ON S.CustomerNumber=C.CustomerNumber WHERE C.OWNERNAME<>'' |
В начальном релизе Lotus Domino 7.0, к сожалению, функция просмотра Query View через Web-браузеры недоступна. Корпорация IBM планирует внедрить поддержку Web-браузеров в последующих релизах Lotus Domino. Для получения дополнительной информации, касающейся обновлений, которые позволяют обеспечить поддержку Web-браузеров, посетите Web-сайт IBM с документацией по продуктам линейки Lotus: http://www.lotus.com/ldd/doc.
Несмотря на то, что Query View позволяет открывать документы в представлении, доступ к ним можно получить и с помощью LotusScript (см. п. 2.3.5, «Открытие документов из Query Views»). В этом случае подойдет даже простой скрипт, приведенный в примере 2.11. Если вы не можете открыть документы из Query View, то в отмеченной строке этого скрипта переменная с типом Object установлена не будет.
Пример 2.11. Простой LotusScript, организующий циклическое прохождение через представление
Sub Click(Source As Button) Dim session As New notessession Dim db As NotesDatabase Dim view As NotesView Dim doc As notesdocument Dim Item As notesitem Set db=session.currentdatabase Set view =db.Getview("<ПРЕДСТАВЛЕНИЕ>") Set doc=view.GetFirstDocument ‘ <================================= Do While Not doc Is Nothing Set Item =doc.GetFirstItem("<ЭЛЕМЕНТ В БАЗЕ ДАННЫХ>") Print(item.text) Set doc=view.GetNextDocument(doc) Loop End Sub |
Есть также еще один способ получить доступ к данным в Query Views, не позволяющих открыть документы с помощью LotusScript. Доступ к таким представлениям необходимо осуществлять через класс элементов представления, как это показано в примере 2.12.
Пример 2.12. Простой скрипт, позволяющий получить доступ к элементам представления
Sub Click(Source As Button) Dim session As New notessession Dim db As NotesDatabase Dim view As NotesView Dim doc As notesdocument Dim Item As notesitem Dim entry As NotesViewEntry Set db=session.currentdatabase Set view =db.Getview("<Имя Вашего представления>") Set Entry = View.GetEntryByKey( "<Имя элемента представления>", True) Msgbox(entry.ColumnValues(1)) End Sub |
Как и с любыми другими представлениями, вы можете внедрить Query View в форму, подформу, страницу или в документ. В нашем приложении ITSO Electronics в качестве примера мы выполнили внедрение представления Customer Sales Query View в форму Sales Person. Пользователи, обращающиеся к документу Sales Person, теперь могут без особых затруднений увидеть информацию из представления Customer Sales, не закрывая документ (см. рис. 2.13). Для получения дополнительной информации о создании внедренных представлений, обратитесь к справке Lotus Domino 7 Designer, доступной по следующему адресу в Интернете:
http://www.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf
Рис. 2.13. Query View, внедренное в форму Sales Person приложения ITSO Electronics
В этом разделе приведены дополнительные рассуждения, касающиеся Query View.
Разделение списковых элементов
В DB2 Access View текстовые списки хранятся в виде текстовой строки, и поскольку Query View считывает данные из DB2 напрямую, то именно эта текстовая строка и возвращается в Query View. Таким образом, если у вас есть списковый элемент, который вы хотите разделить в вашем Query View, необходимо использовать функцию @Explode в столбце, содержащем несколько значений. Чтобы убедиться в том, что представление способно работать с несколькими строками данных, в окне свойств View Ю выберите закладку Style, после чего установите параметры Row Height и Shrink Rows to Content в соответствии с вашими данными.
Обновление Query View
Учитывая то, что Query View можно построить из комбинаций данных Notes и интегрированных данных, обновление Query View зависит от содержания добавленных или измененных данных и от того, как эти данные были добавлены.
Установка максимального числа строк в запросах SQL
По умолчанию максимальное количество строк, возвращаемых по запросу SQL, равно 500. Существует два способа изменения этой величины:
Параметр DB2QueryViewRowLimit=величина в файле NOTES.INI
.
Установите значение величины, равное нулю, если хотите снять ограничение с количества возвращаемых строк.
Если задействованы оба способа, будет использоваться наименьшее значение из двух.
Рис. 2.14. Закладка Options в окне свойств View
До этого пункта мы занимались обсуждением Query Views, отображающих данные Lotus Domino путем опрашивания DB2 Access View. Однако можно создать Query View, способные отображать любые данные, видимые базе данных DB2, используя DB2 federation - мощный компонент интеграционной архитектуры DB2 и Domino. Интегрированные данные - это данные, которые хранятся в базах данных, не являющихся базами данных Lotus Domino (например, Oracle, Microsoft SQL, другие базы данных DB2). Их можно сделать видимыми для Lotus Domino, изменив конфигурацию базы данных Lotus Domino, включив в ней поддержку интеграции. Впоследствии вы можете создать Query View, отображающие только данные Lotus Domino, либо только интегрированные данные, либо и то, и другое вместе.
При изменении конфигурации базы данных Lotus Domino в DB2 с целью включения в ней поддержки интеграции, позволяющей получать доступ к объектам, находящимся вне текущей базы данных (база данных определена в закладке DB2 серверного документа, находящегося в директории Domino), вы можете указать, какие именно объекты будут рассматриваться как интегрированные. Эти интегрированные объекты DB2 позволяют вам не только получать доступ к другим таблицам DB2, которые находятся в других базах данных DB2, но также и к другим системам управления базами данных (СУБД).
В приложении ITSO Electronics нам необходимо создать новый интегрированный Query View, который будет обращаться к информации отдельной базы данных DB2, принадлежащей отделу кадров и содержащей данные о служащих. В приведенной ниже последовательности действий показано, как изменить конфигурацию сервера DB2 для включения поддержки интеграции.
Установите переменную окружения, DB2_ALLOW_SETAUTH_WITH_REMOTECONNECT, чтобы Query View смог работать. Используйте следующие путь и команду:
C:\Program Files\IBM\SQLLIB\BIN>db2set -i DB2 DB2_ALLOW_SETAUTH_WITH_REMOTECONNECT=1
где -i определяет имя вашего экземпляра DB2 (который обычно, как и в нашем сценарии, называется DB2).
Перезапустите DB2 для того, чтобы переменная окружения начала работать.
Обратите внимание на то, что с помощью приведенного ниже пути и команды можно обновить конфигурацию DB2 Database Manager, для того чтобы активировать интеграцию в DB2:
C:\Program Files\IBM\SQLLIB\BIN>db2 update dbm cfg using FEDERATED YES
Подключитесь к вашей базе данных Lotus Domino в DB2 Control Center (центре управления DB2). Убедитесь в том, что в вашей базе данных Lotus Domino включена поддержка интеграции. Для этого щелкните правой кнопкой мыши по вашему экземпляру DB2 и выберите из контекстного меню Configure Parameters (Изменить параметры). Откроется окно DBM Configuration (см. рис. 2.15). Прокрутите это окно вниз до раздела Environment. Найдите ключевое слово FEDERATED и убедитесь, что в поле Value стоит значение Yes. Если же в поле Value стоит No, однако в поле Pending Value стоит Yes, и вы выполнили команду db2set, которую мы рассматривали на этапе 1, необходимо перезапустить DB2, чтобы в поле Value ключевого слова FEDERATED появилось слово Yes.
Для того чтобы создать интеграционную оболочку в DB2 для внешней базы данных DB2, (в нашем сценарии это база данных DB2 отдела кадров) необходимо вернуться в DB2 Control Center и для базы данных Lotus Domino перейти к папке Federated Database Objects. Далее щелкните по Create New Wrapper (Создание новой оболочки), так же, как на рис. 2.16.
Рис. 2.16. Папка Federated Database Objects в DB2 Control Center
В результате откроется окно Create Wrapper (см. рис. 2.17). На закладке Wrapper из выпадающего списка Data source выберите источник данных, в качестве которого в нашем сценарии мы будем использовать DB2 UDB. Введите название оболочки в поле Wrapper name; в нашем случае мы использовали DB2WRAP. Щелкните по кнопке ОК.
Рис. 2.17. Окно Create Wrapper
Замечание. Для получения дополнительной информации, касающейся оболочек, а также включения поддержки интегрированных данных в DB2, посетите Информационный центр DB2, который находится по следующему адресу в Интернете: http://publib.boulder.ibm.com/infocenter/db2help/index.jsp
После того как вы создадите оболочку, она появится в папке Federated Database Objects в DB2 Control Center (рис. 2.18). Выберите папку Server Definitions (Описания сервера) и щелкните по командной кнопке Create New Server Definition (Создать новое описание сервера). Откроется окно Create Server Definitions, представленное на рис. 2.19.
В окне Create Server Definitions щелкните по кнопке Discover (Найти). Появится список объектов. Выберите подходящий объект, которым в нашем сценарии является база данных SAMPLE (так называется база данных DB2 отдела кадров), см. рис. 2.19.
Щелкните по кнопке Properties (Свойства), откроется окно Server Definition Properties (Свойства описания сервера), которое показано на рис. 2.20. Введите соответствующие значения во все поля закладки Server Definition, которая представлена на рис. 2.20. Все введенные в эти поля данные соответствуют нашему сценарию. Для поля Type (Тип) из выпадающего списка выберите DB2/UDB. Для поля Version (Версия) из выпадающего списка выберите 8.2, а в полях User ID (Идентификатор пользователя) и Password (Пароль) используйте соответствующие данные пользователя DB2 (или администратора DB2) у которого есть доступ к внешней базе данных DB2 (в нашем случае это база данных DB2 отдела кадров).
Перейдите к закладке Settings (Параметры), (см. рис. 2.21) и введите название базы данных DB2 в поле Value (Значение) для параметра DBNAME. В нашем сценарии это название базы данных отдела кадров - SAMPLE. Кнопка ОК станет доступной. Щелкните по ней.
Рис. 2.21. Окно Server Definitions Properties: закладка Settings
Теперь нам надо добавить привязку пользователей к этой интеграционной оболочке, присваивая пользователя сервера Lotus Domino к удаленному соединению, используя имя и пароль пользователя. В нашем сценарии в качестве пользователя сервера Lotus Domino мы взяли DB2DOMINO и такую же учетную запись, предназначенную для разблокирования сервера. В DB2 Control Center под недавно созданным описанием сервера для базы данных SAMPLE щелкните по кнопке Create New User Mapping (Создать новую привязку пользователя), как показано на рис. 2.22.
Откроется окно Create New User Mapping (рис. 2.23). На закладке Users (Пользователи) выберите один или несколько идентификаторов (ID) локальных пользователей, которые необходимо связать с удаленным идентификатором. В нашем сценарии мы выбрали ID пользователя DB2DOMINO.
Перейдите к закладке Settings и введите соответствующие значения в поля Value параметров REMOTE_AUTHID и REMOTE_PASSWORD. В нашем сценарии мы использовали значения DB2DOMINO и DB2DOMINO соответственно, для того чтобы появились параметры, представленные на рис. 2.24. (На нашем сервере DB2 также есть ID пользователя DB2DOMINO, мы применяли его для реализации привязки пользователя. Тем не менее, привязка между ID пользователя, с помощью которого Domino подключается к DB2 (в нашем примере в качестве него использован DB2DOMINO), и ID пользователя, который зарегистрирован на удаленном компьютере DB2 (параметры REMOTE_AUTHID и REMOTE_PASSWORD), могут быть названы идентификаторами пользователя). После этого станет доступной кнопка ОК. Щелкните по ней.
Рис. 2.24. Окно Create User Mappings: закладка Settings
Замечание. Если вы столкнетесь с какими-либо проблемами при установке и настройке привязки пользователей, вернитесь в DB2 Control Center, выберите базу данных, к которой хотите подключиться, щелкните по ней правой кнопкой мыши из контекстного меню выберите пункт Connect (Подключиться), после чего введите ID пользователя и пароль. В приложении, использованном в нашем сценарии, мы применяли ID пользователя базы данных DB2DOMINO и его пароль.
В DB2 Control Center создайте псевдоним, связывающий локальный объект с внешним объектом. Псевдоним используется в SQL-выражении Query View. Выберите папку Nicknames (Псевдонимы) и щелкните по командной кнопке Create New Nickname (Создать новый псевдоним), как показано на рис. 2.25.
Откроется окно Create Nicknames (Создание псевдонимов). Щелкните по кнопке Discover, после чего откроется окно Discover, которое представлено на рис. 2.26. Щелкните по кнопке ОК.
Затем окно Create Nicknames заполнится объектами, которым вы можете присвоить псевдонимы. В приложении ITSO Electronics для достижения поставленных целей необходимо нажать на кнопку Uncheck All (Снять все), а затем поставить флажок в столбце Create (Создать) для псевдонима EMPLOYEE, как видно из рис. 2.27. Щелкните по кнопке ОК.
После этого будет создан псевдоним EMPLOYEE, в этом можно убедиться в DB2 Command Center. Дважды щелкните по псевдониму, чтобы отобразить интегрированную таблицу EMPLOYEE, представленную на рис. 2.28.
Завершающий этап состоит в присвоении привилегий объекту псевдонима, необходимость в которых объясняется тем, что из всех пользователей DB2 необходимо выбрать тех, которым вы хотите разрешить доступ к интегрированной таблице. В нашем сценарии мы хотим предоставить доступ пользователю с идентификатором MANNYSANTANNA. Чтобы завершить этот этап, выполните приведенную ниже последовательность действий из командной строки или из DB2 Command Editor (Редактор команд DB2. Войдите в вашу базу данных в качестве пользователя сервера Lotus Domino или же в качестве другого администратора. Затем выполните одно из приведенных ниже действий:
из командной строки выполните приведенную ниже команду, чтобы предоставить привилегии доступа какому-либо пользователю, в данном случае мы присвоили эти привилегии пользователю MANNYSANTANNA:
GRANT SELECT ON DB2DOMINO.EMPLOYEE TO MANNYSANTANA
выполните эту же команду из DB2 Command (см. рис. 2.29).
Теперь вы можете создавать Query View с интегрированными данными, благодаря чему значительно ускоряется доступ к данным вашего приложения Lotus Domino.
После завершения настройки интеграции DB2 и Notes на сервере DB2 мы можем получать доступ к интегрированным данным путем создания интегрированных Query View в нашем приложении ITSO Electronics, что является значительным шагом в реализации функциональности интеграции DB2. Чтобы создать интегрированный Query View в приложении ITSO Electronics, выполните следующие действия.
Откройте базу данных ITSO Electronics Sales в Lotus Domino Designer и выберите пункт меню Create ? View. Откроется окно Create View (Создать представление) (рис. 2.30). В поле «Имя» и введите HR Employees; под таким именем будет значиться ваш новый интегрированный Query View; после чего установите переключатель Selection conditions в положение By SQL Query. Введите строку запроса SQL и щелкните по кнопке Save and Customize (Сохранить и настроить), чтобы настроить представление и добавить новые столбцы.
Добавьте новые столбцы, в которых будут отображены Employee No (Числовое значение), First name и Last Name из интегрированной таблицы Employee (рис. 2.31). Для каждого столбца определите соответствующее имя столбца из интегрированной таблицы в виде формулы значения столбца.
После сохранения представления и добавления представления в схему Outline, выберите интегрированный Query View HR Employees в клиенте Lotus Notes, чтобы отобразить информацию из таблицы HR Employees, также как на рис. 2.32.
При запуске DB2 и Lotus Domino следует помнить о том, что:
Allow_Anonymous_Access_From_DB2=значение
0 - отключает доступ по анонимной учетной записи;
1 - включает доступ по анонимной учетной записи через механизм DB2 GRANT.
Когда параметры файла NOTES.INI активированы, будет осуществляться анонимный доступ к Lotus Notes всякий раз, когда имя пользователя
"com.ibm.db.DataException: A database manager error occurred.: [IBM][CLI Driver][DB2/NT] SQL0443N Routine "ISREADER3" (specific name "") has returned an error SQLSTATE with diagnostic text "14512 : No matching Notes user found for DB2 user and anony". SQLSTATE=04004 |
DB2 не связано с именем пользователя Lotus Notes.
Замечание. Хотя активирование анонимного доступа и позволяет избавиться от привязки имен, Domino все же продолжает управлять доступом к DB2 Access View. Чтобы включить поддержку анонимного доступа, сервер Lotus Domino должен разрешить анонимный доступ и уровень доступа по умолчанию к базе данных (NSF), связанной с DB2 Access View, который в свою очередь, должен обеспечивать достаточными правами, необходимыми для осуществления запрошенной операции SQL, например разрешения SELECT для читателя, разрешение INSERT для автора и т. д.
Дополнительную информацию по безопасности и интеграции DB2 можно получить в Lotus Domino 7 Designer Help в разделе DB2 Access View security по адресу в Интернете:
http://www.lotus.com/ldd/doc/domino_notes/7.0/help7_designer.nsf
В этом разделе мы рассмотрели только аспекты безопасности, связанные с интеграцией DB2 и Domino. Для получения более полного обзора по безопасности в Lotus Domino вы можете обратиться к готовящемуся к выходу руководству Security Considerations in Notes and Domino 7 , REDP-4104.
В этом разделе предоставляется несколько советов по устранению проблем, связанных с интеграцией DB2. Для получения дополнительных сведений перейдите к разделу DB2 Integration and Troubleshooting в справке Lotus Domino 7 Designer.
Если при интеграции Domino и DB2 возникают какие-либо проблемы, первое, что необходимо сделать, - проверить конфигурацию сервера DB2 Access. Инструмент DB2 Access Test тестирует все поля параметров сервера DB2 Access, начиная с серверного документа и заканчивая всеми параметрами сервера DB2 Access из файла NOTES.INI. Если все поля и параметры верны, этот инструмент приступает к проверке соединения между сервером DB2 Access и выбранным сервером Lotus Domino, проверяет, все ли функции и свойства присутствуют, определяет, корректен ли документ Connection на сервере DB2 Access, после чего он пробует открыть директорию Domino на сервере DB2 Access. Если же DB2 Access Test обнаруживает какие-либо проблемы, то информация о неполадке возвращается в консоль сервера Lotus Domino или же в клиент Lotus Domino Administrator. Для того чтобы воспользоваться инструментом DB2 Access Test, сделайте следующее:
На рис. 2.33 показан результат работы инструмента DB2 Access Test.
Рис. 2.33. Результат работы инструмента DB2 Access Test
Если при использовании DB2 Access View пользователи столкнутся с проблемой получения доступа к вашей базе данных Lotus Notes с поддержкой DB2, убедитесь в том, что элемент ACL для каждого пользователя идентичен первому элементу в поле User name в документе Person пользователя, хранящемся в директории Domino на сервере Domino.
Вообще, когда вы получаете сообщение об ошибке при открытии Query View, лучше всего взглянуть на серверную консоль на сервере Lotus Domino. Сообщения об ошибке, появляющиеся на серверной консоли, обычно напрямую указывают на источник той или иной проблемы.
В приведенном ниже списке представлены самые распространенные сообщения об ошибках и некоторая информация о них.
Существует три возможные причины появления этого сообщения об ошибке:
Из соображений безопасности SQL-выражения в Query View были ограничены до выражений, которые возвращают наборы результатов. Команды Update и Insert не работают, когда используются для выборки. Например, если вы хотите выполнить в качестве первой команды SELECT, и допустили ошибку при наборе SQL-выражения, такую как написание команды SELCT вместо SELECT, это может вызвать ошибку.
Вероятнее всего, вы пытаетесь открыть Query View на местной копии сервера или на системе, в которой не включена поддержка DB2.
Одна из возможных причин появления данной ошибки заключается в существовании более ранней версии Lotus Notes и Domino на данной системе. Для решения данной проблемы достаточно будет просто удалить более раннюю версию или переименовать папку.
Совет. Упростите код или конструкцию вашего приложения пошаговым образом до тех пор, пока ошибки не прекратят появляться. Очень часто после выполнения такой операции раскрываются истинные причины той или иной проблемы. Во многих случаях решение проблемы становится очевидным.
Часто оказывается полезным собрать информацию, касающуюся диагностики. Это поможет вам, вашим коллегам или персоналу IBM найти источники проблемы.
Главная страница - Программные продукты - Статьи - Разработка ПО, Разработка веб-приложений, Интеграция приложений и данных, СУБД и хранилища данных, IBM |
Распечатать »
Правила публикации » |
Написать редактору | |||
Рекомендовать » | Дата публикации: 08.02.2007 | |||
|
Новости по теме |
Стали известны самые популярные техники хакеров за I-III кварталы
|
Рассылки Subscribe.ru |
Статьи по теме |
Новинки каталога Download |
5 бесплатных приложений, которые будут напоминать вам отдохнуть от экрана компьютера или смартфона
|
Исходники |
Документация |