|
|
|||||||||||||||||||||||||||||
|
Как передается контекст параметров в Oracle BI EE+Источник: ashmakov Антон Шмаков
Достаточно часто возникают вопросы каким-образом работает связка промптов и отчетов или как устроена передача параметров при навигация между отчетами и интерактивными страницами в Oracle Business Intelligence Enterprise Edition+. Данная тема напрямую связана с понятием контекста параметров. Попытаюсь описать основные принципы работы. За основу контекста в Oracle BI EE+ положена сущность - [Презентационная таблица (Presentation Table)].[Презентационная колонка (Presentation Column)]. Причем именно презентационные таблицы и колонки, а не логические, т.е. те объекты, которые отображаются слева в списке доступных, когда вы работаете в Oracle BI Answers. Название презентационного каталога (Presentation Catalog) не входит в состав контекста. Данный факт имеет как хорошее, так и плохое значение. С одной стороны могут возникнуть проблемы с передачей параметров, если у вас есть 2 два разных презентационных каталогах, в которых присутствуют одинаковые структуры типа [Презентационная таблица].[Презентационной колонка], тем самым может возникнуть путаница. С другой стороны это позволяет настраивать передачу параметров между различными бизнес-областями, для этих целей достаточно иметь одинаковые объекты в двух областях. Таким образом, контекст параметров в Oracle BI - это набор колонок и их значений. Самым распространенным применением контекста параметров в Oracle BI является связка промтов (Prompt) с отчетами. Промпты и отчеты создаются в инструменте Oracle BI Answers. При этом работа с логической моделью данных строго детерминирована по выбранной бизнес-области (презентационный каталог), т.е. перед тем как построить отчет или фильтр пользователь обязан выбрать бизнес-область, тогда ему становятся доступны структуры логической модели для дальнейшей работы. Промпт в Oracle BI - является визуальным объектом системы, отображающим контекст параметров - набор колонок и область видимости контекста, которая бывает двух типов - только на страницу, где расположен промпт или на весь дэшборд. Для каждой колонки в промпте может указывать дополнительные свойства - тип параметра (одно значение или множество), тип объекта для ввода параметра (edit, combobox, mutli-select), подпись, связь колонки с механизмом переменных и другие. Также следует отметить, что контекст параметров является частью более общего объекта системы - фильтра. Фильтры - это набор предикатов, основанных тех же сущностях [Презентационная таблица].[Презентационная колонка]. Предикаты бывают разными - равенство, в списке, больше, меньше, между, подстрока, пустое значение и т.д. Таким образом - контекст это частный случай фильтра с предикатами равенства, константы для которых устанавливаются пользователем в онлайне. Для фильтров значения хранятся постоянно, но могу меняться во время работы. Фильтры и промпты хранятся в веб-каталоге (web catalog) системы. Любой объект системы, который обрабатывается презентационным сервером (Presentation Server) представлен в xml-виде. Отчеты, фильтры, промпты, страницы, дэшборды и т.д. - представляются в xml-виде. Следует отметить, что фильтры имеют принципиальное отличие, они привязываются к определенной бизнес-области. Для полной ясности приведу пример: XML представление сохраненного в веб-каталоге фильтра D2 Market.M04 Region = East:
Теперь рассмотрим каким образом происходит передача выбранного значения из промпта в отчеты, которые расположены рядом с промптом. Работа осуществляется следующим образом - пользователь выбирает значения для параметра (например: D2 Market.M04 Region), а затем нажимает кнопку перейти (Go). После этого запускаются процедуры JavaScript ядра презентационного сервера, которые формируют динамический HTTP POST запрос посредством объекта DOM форма (DOM). Основные параметры указанного запроса это:
В атрибуте P0 содержится самое важное - XML с фильтром, которые формируется на основе контекста параметров промпта и выбранных значений. Пример сформированного XML с выбором D2 Market.M04 Region = North:
В указанном примере контекст параметров промпта - это объект D2 Market.M04 Region. Далее сервер "просматривает" все отчеты, которые расположены на странице и проверяет их фильтры. Каждый фильтр имеет свой контекст параметров, если происходит совпадение колонок в контексте параметров промпта и фильтра отчета, тогда сервер подставляет в отчет фильтр, который вернул промпт и применяет его. Таким образом проверка идет на совпадение [Презентационная таблица].[Презентационная колонка] в фильтре промпта и фильтре отчета. Поэтому для того, что выбор параметров в промпте передавался в отчет нужно обязательно, чтобы в отчете был фильтр с колонкой, значения для которой фильтруются. Именно для этих целей существует фильтр заглушка - "снабжен подсказкой" (is prompted), который добавляет колонку в контекст параметров с пустым фильтром. Рассмотрим теперь механизм навигации (Navigate) между отчетами. Механизм детализации (Drill) работает по-другому, здесь я не буду его рассматривать. В любом виде представлений отчетов - Таблица, Кросс-Таблица, Диаграмма, График навигация осуществляется одинаковым образом. Для определенной колонки в критерии отчета указывается свойства навигации (для графиков настраивается отдельно в представлении) и определяется конечный отчет или страница. После указанных действий в исходном отчет появляются активные ссылки на значениях или заголовках (в зависимости от того что настроено), нажимая на которые пользователь переходит в другой отчет. Как и в случае с промптом, в момент когда пользователь нажимает на ссылку (значение справочника или показателя, заголовок, график и т.д.) презентационный сервер формирует динамический XML фильтр с контекстом параметров. Указанный контекст параметров - это точная координата объекта в представлении отчета. Например, если представление - это таблица, то контекст параметров - это все видимые столбцы таблицы со значениями, соответствующими строке, в которой находится объект на котором произведено действие. Если представление - это кросс-таблица, то контекст параметров - это все видимые разрезы и их значений на пересечении которых находится объект. Принцип работы с графиками и диаграммами аналогичен кросс-таблице. Для примера приведу динамический XML фильтр, сформированный при переходе из значения кросс-таблицы с двумя разрезами - D2 Market.M01 Market и D4 Product.P02 Product Type:
Дополнительный бонус: Для отладки сложных решений в Oracle BI связанных с навигации, полезным бывает посмотреть какой фильтр формируется при навигации между отчетами. Это можно сделать следующим образом: в ресурсном файле viewhelper.js, расположенном в папке [OBIEE_HOME]/oc4j_bi/j2ee/home/applications/analytics/analytics/res/b_mozilla (для OC4J), надо найти функцию: Не забудьте удалить вызов alert после завершения работы. Любые изменения в коде продукта Oracle Business Intelligence Enterprise Edition+ вы делаете на свой страх и риск и несете полностью отвественность за любые ошибки, проблемы или потери важной информации. Ссылки по теме
|
|