Строим BusinessView. Часть 1

Наталья Пригодина

Данной статьей мы начинаем небольшой обзор работы с таким интересным источником, как Business View, доступным как пользователям SAP Business Objects Enterprise XI, так и пользователям Crystal Reports Server XI.

Business View выполняют роль промежуточного слоя между данными и отчетом. У этого слоя несколько функций, но в данной статье мы остановимся на одной, видимо, наиболее интересной:  возможности ограничивать просмотр данных в отчете на уровне строк и столбцов в зависимости от прав пользователя.

Для начала поставим себе несложную задачу, решая которую, изучим, как строится Business View и из каких элементов состоит. На втором этапе рассмотрим добавление собственных объектов в построенную на основе таблиц модель. Поле SQL-выражения, формулу, фильтр. И, разумеется, не обойдем вниманием сильную сторону Business View - возможности настройки прав доступа для групп и пользователей. Здесь мы рассмотрим получение отчета внутри Crystal Reports, в следующих статьях приведем примеры и размещения отчета в Web-портале.

1. Источник данных.

Источником данных при решении нашей задачи будет известная пользователям Crystal Reports XI БД Extreem.mdb, Access-файл, который устанавливался с версией Crystal Reports XI и Crystal Reports XI R2.

Схема базы данных приведена на рис.1.

Основные таблицы, с которыми мы будем работать, отмечены на рисунке. Есть Заказы (таблица Orders), которые оформляют Сотрудники (таблица Employee) для Покупателей (таблица Customer). У Заказа есть Строки Заказа (таблица Order Details), в которых указывается, какой Продукт покупает Заказчик, какое количество и по какой цене. У Продуктов (таблица Product) есть справочник, который относит их к определенному Типу (Product Type). Таблицы соединены посредством внешних ключей, что отражено на рисунке линиями связей.

2. Задача.

Задачей в данной статье будет создание Business View, которое будет содержать всего одно представление, отвечающее на вопрос - какие Заказы какие Покупатели оформляли.

3. Пользователи и группы.

Для данной задачи мы создадим 2 группы. К первой группе будут относиться пользователи отдела бонусов, она так и будет называться. Ко второй группе будут  относиться аналитики отдела, который занимается странами северной Америки - только США и Канадой. Для них мы установим фильтр, который будет ограничивать данные только этими двумя странами.

4. Реализация.

1. Создание соединения данных

Создание business view или бизнес-представления выполняется в приложении Business View Manager. Это клиент-серверное приложение, которое входит в поставку и SAP Business Objects Enterprise XI, и Crystal Reports Server XI. При открытии это приложение запрашивает вход в систему, которая обеспечивает функционирование репозитория, хранилища, где располагается те структуры, которые обеспечат функционирование нашего бизнес-представления.

В нашем примере осуществляем вход, используя учетную запись администратора для возможности настройки прав пользователей и уровней доступа к данным.

После выполнения входа мы увидим диалоговое окно, в котором перечислены элементы, которые могут созданы.

Это окно можно не отображать при следующем входе, для этого нужно всего лишь снять галочку "Отображать это окно…"

Все готово для создания элемента "Соединение данных". Выбираем этот элемент. Если окно приглашения закрыто, воспользуйтесь пунктом меню "Файл / Создать / Соединение данных".

При создании соединения выбираем файл с нашей тренировочной БД.

Тип соединения - файлы базы данных, прямое соединение. Разумеется, для каждого конкретного случая выбирается и свой тип подключения, и своя база данных.

Выбираем файл, подключаем его, нажав на кнопку "Открыть".

Соединение выбрано - ОК.

При задании параметров пароля соединения данных учитываем, что пароль будет сохранен в репозитории. Если политика безопасности позволяет настроить доступ к системе, то пароль может быть сохранен, чтобы не вводить его каждый раз при запуске документа, например, отчета .rpt

Даем имя нашему соединению и настраиваем свойства.

Для сохранения созданного соединения данных создаем новую папочку Extreem в репозитории, воспользовавшись проводником репозитория.

И сохраняем соединение.

2. Создание основания данных

Основание данных - первый уровень абстрагирования данных, благодаря им администраторы на уровне различных связей данных могут определять, к каким таблицам и полям пользователи могут осуществлять доступ.

Основание данных опирается на соединение данных, поэтому первым шагом при создании является указание соединения, с которым оно будет связано. Автоматически будет отображено окно выбора, отображением которого также можно управлять, устанавливая или убирая галочку "Отображать это окно…" внизу окна.

Выбираем ранее созданное нами Соединение данных Extreem и определяем таблицы, которые войдут в наше основание данных.

При выборе необходимы таблиц не забываем о настраивании связей между ними. Воспользуемся автоматической установкой связей посредством ключа.

Даем имя нашему основанию данных и сохраняем его в папке "Extreem".

Именно на основании данных можно настроить формулы, фильтры, выражения SQL. Это тот уровень, где осуществляется основная настройка прав доступа и защиты данных. Элементы, включенные в основание данных, определяют, какие поля доступны дизайнерам отчета в процессе его создания. Таким образом, администратор может контролировать доступ пользователей к таблицам и столбцам.

1. Формула

Об использовании формул много сказано в документации по Crystal Reports, поэтому мы ограничимся кратким : используем формулу в том случае, когда необходимо значение, которого нет в полях базы данных. Например, мы создадим формулу, которая считает сумму, затраченную на продукт, в строке заказа (таблица Orders Detail).

Даем имя нашей формуле. Обратите внимание, что перед нами среда, абсолютно привычная нам по Crystal Reports. Здесь мы можем пользоваться теми же возможностями и преимуществами. Сохраняем ее, используя кнопочку "Применить", и закрываем формулу.

2. SQL-выражение

О полях SQL-выражений справка говорит так:

"Выражения SQL похожи на формулы, но используют язык структурированных запросов (SQL). Они предназначены для оптимизации выполнения отчета, так как выполняемые ими задачи исполняются на сервере базы данных (в отличие от формул, которые обычно вычисляются на локальном компьютере)."

Создадим поле SQL-выражения, которое будет вычислять полное имя сотрудника.

3. Фильтр

Фильтры основания данных позволяют ссылаться на поля, формулы, SQL-выражения, параметры и другие фильтры, которые могут быть подключены с помощью логических операторов. Фильтры устанавливают защиту данных на уровне строк. Фильтры , применяемые в основании данных, еще называют бизнес-фильтрами.

Используем такой фильтр, чтобы ограничить просмотр записей в нашей базе данных Северной Америкой - странами США и Канадой.

Сохраняем наше основание данных. Мы вернемся к нему, когда будем настраивать права доступа.

3. Бизнес-элементы.

Бизнес-элемент приблизительно напоминает измерение OLAP или логическое представление. Он состоит из логически связанной совокупности полей данных основания данных. Такие поля могут быть организованы в виде иерархической структуры, порождая различные уровни бизнес-элемента.

Необходимо помнить, что нельзя создать бизнес-элемент с помощью информации, полученной более чем из одного основания данных. Эти ограничения задаются природой отношений между бизнес-элементом и основанием данных.

На уровне основания данных мы формируем и устанавливаем спецификацию информации из источника данных. На уровне бизнес-элемента мы получают эту информацию и упорядочиваем ее в структуру, понятную с точки зрения конкретной деятельности. В действительности, информация в бизнес-элементе зависит от информации его родительского основания данных.

В нашей базе данных мы сделаем "условный" бизнес-элемент, который будет обеспечивать вывод списка заказов с фамилией сотрудника, который оформил заказ, и названием фирмы-покупателя. Возможно, в реальном проекте такой запрос (поля, собранные в нем) будет распределен на несколько бизнес-сущностей (бизнес-элементах), или будет не востребован вообще.

При создании бизнес-элемента необходимо указать основание данных, на которое он будет ссылаться, и откуда будут выбираться данные.

Добавляем бизнес-поля. Используем таблицы нашего основания данных.

Также используем наше поле SQL-выражения, которое мы создали на этапе построения основания данных. Далее даем каждому бизнес-полю наименование, бизнес-термин.

Обратите внимание, что мы включили в запрос страну Покупателя, а не Сотрудника.

Даем наименование нашему элементу и сохраняем его.

4. BusinessView

После создания одного или нескольких бизнес-элементов можно создавать бизнес-представление.

В одно бизнес-представление можно включить различное количество бизнес-элементов. Один и тот же бизнес-элемент может входить в различные бизнес-представления. Единственное ограничение между компонентами может быть обусловлено отношением между бизнес-элементом и родительским основанием данных. Бизнес-представление сможет включить бизнес-элементы только одного основания данных.

Создаем новое бизнес-представление, используя окно диалога или пункт меню. Выбираем бизнес-элементы, которые войдут в наше бизнес-представление. У нас это единственный пока элемент, Список заказов (Сотрудники и покупатели). Затем даем наименование нашему представлению и сохраняем его в папочке Extreem, как и остальные элементы в нашем примере.

Итак, источник данных для нашего отчета почти готов. Дальше мы остановимся на настройке прав доступа и защиты данных.

5. Пользователи и группы.

В нашей системе существует 2 группы, на примере которых мы покажем, как устанавливать фильтрацию данных на уровне строк и на уровне столбцов.

1. Группа "Северная Америка", которая занимается данными по странам USA и Canada.

2. Группа "Отдел бонусов", которая занимается начислением премиальных в зависимости от заказов, оформленных сотрудником.

И разрешение на доступ к основанию данных для этих групп.

Настройка прав производится в обозревателе свойств. Используем кнопочку "…" в свойстве "Права" или пункт меню "Настроить права". Добавляем группы "Северная Америка" и "Отдел бонусов" в список групп, работающих с основанием данных Extreem.

Изначально в списке присутствуют 2 основные группы. Выбираем кнопку "Добавить группы".

Теперь обеим группам разрешен просмотр.

6. Работаем с BusinessView.

1. Создание отчета на основе Business View.

Для проверки работоспособности созданного бизнес-представления спроектируем отчет в среде Crystal Reports с правами администратора.

При выборе соединения данных указываем источником - Репозиторий и выполняем вход в систему с логином Администратора.

Выбираем источник данных - бизнес-представление Extreem. Обращаясь к этому промежуточному слою данных, мы увидим названия и бизнес-термины, которые понятны пользователям, поэтому даже если отчет будет создаваться самим пользователем с соответствующими правами, его разработка будет гораздо более понятной, чем если бы осуществлялся прямой коннект к БД.

Выбираем бизнес-представление BV Extreem и бизнес-элемент Список заказов (Сотрудники и покупатели).

На его основе создаем отчет.

Используем все поля нашего источника, размещаем их в теле отчета.

На предварительном просмотре убеждаемся, что присутствуют все страны и все поля отображаются.

Сохраняем отчет.

И публикуем его на сервере в папку, к которой имеют доступ на просмотр обе группы - и Северная Америка, и Отдел бонусов. Так же мы можем разместить этот отчет в папках конкретных пользователей.

Запускаем просмотр отчета. Убедимся, что отображаются все страны.

2. Установка фильтра на основание данных для группы пользователей.

Для установки защиты данных на уровне строк используются фильтры. Установим применение фильтра на уровне основания данных для группы Северная Америка. Выбираем Фильтр Северная Америка и используем в свойствах обозревателя  свойство Права. Добавляем пользователей группы.

При добавлении группы появляется галочка "Применяется", то есть конкретный фильтр к пользователям конкретной группы.

3. Работа созданного отчета для группы пользователей, для которых установлен фильтр.

После сохранения основания данных делаем обновление на сервере. Отправляемся в InfoView в качестве пользователя группы Северная Америка -na1. Отчет принимает такой вид:

То есть, видно, что в отчет вошли только те строки, в которых Покупатель  относится к этим странам. То есть, достаточно такого установленного фильтра, сам отчет, уже опубликованный на сервере, менять не требуется.

4. Установка запрета на просмотр  поля БД.

На уровне основания данных установим защиту на столбец с наименованием Покупателя для группы Отдел бонусов.

В выбранной таблице Customer на уровне основания данных выбираем поле Customer Name и в обозревателе свойств определяем права путем добавления группы Отдел бонусов и установки права доступа в положение Запрещено.

Сохраняем основание данных и обновляем его на сервере.

5. Работа отчета при установленном запрете на просмотр  поля БД.

Войдем в InfoView как пользователь группы Отдел бонусов - hr1.

Запускаем отчет, он принимает такой вид:

То есть, Покупатель (в отчете выполнена группировка по этому полю) не виден. Сам по себе пример несколько надуман, но задача, решаемая в нем, довольно часто встречается в реальных проектах.

7. Итоги и выводы.

Можно установить ограничение прав для каждого объекта, элемента так, чтобы определенные группы и пользователи могли или не могли просматривать объект. В бизнес-полях также может быть применена безопасность на уровне столбцов. Пользователи, не имеющие право просмотра данного бизнес-объекта, не смогут создать основанный на нем отчет, но если отчет уже создан, и установлена безопасность на уровне столбцов, то определенное содержимое столбца во время исполнения преобразуется в нулевые значения.


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=25719