(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Как передается контекст параметров в 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:

<?xml version="1.0" encoding="utf-8"?><saw:filter xmlns:saw="com.siebel.analytics.web/report/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sawx="com.siebel.analytics.web/expression/v1" subjectArea=""Sample Sales""><sawx:expr xsi:type="sawx:comparison" op="equal"><sawx:expr xsi:type="sawx:sqlExpression">"D2 Market"."M04  Region"</sawx:expr><sawx:expr xsi:type="xsd:string">East</sawx:expr></sawx:expr></saw:filter>
XML представлении сохранненого в веб-каталоге промта по колонке D2 Market.M04 Region:
<?xml version="1.0" encoding="utf-8"?><saw:view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:saw="com.siebel.analytics.web/report/v1" xsi:type="saw:globalFilterPrompt" rptViewVers="200510010">            <saw:prompt type="columnFilter" formula=""D2 Market"."M04  Region"" subjectArea=""Sample Sales"" eOperator="in" eControl="drop" includeReportDefaults="true" includeAllChoices="true" columnID="c0"><sawx:expr xmlns:sawx="com.siebel.analytics.web/expression/v1" xsi:type="sawx:special" op="prompted"><sawx:expr xsi:type="sawx:sqlExpression">"D2 Market"."M04  Region"</sawx:expr></sawx:expr></saw:prompt></saw:view>

Теперь рассмотрим каким образом происходит передача выбранного значения из промпта в отчеты, которые расположены рядом с промптом. Работа осуществляется следующим образом - пользователь выбирает значения для параметра (например: D2 Market.M04 Region), а затем нажимает кнопку перейти (Go). После этого запускаются процедуры JavaScript ядра презентационного сервера, которые формируют динамический HTTP POST запрос посредством объекта DOM форма (DOM). Основные параметры указанного запроса это:

  • Action = applyfilter;
  • Page = [Название страницы] (пример: Page 1);
  • PortalPath = [Путь в веб-каталоге к дешборду] (пример: /shared/Samples Sales/_portal/Test);
  • P0 = [динамически сформированный фильтр]

В атрибуте P0 содержится самое важное - XML с фильтром, которые формируется на основе контекста параметров промпта и выбранных значений. Пример сформированного XML с выбором D2 Market.M04 Region = North:

<sawx:expr xmlns:sawx="com.siebel.analytics.web/expression/v1" xsi:type="sawx:list" op="in" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><sawx:expr xsi:type="sawx:sqlExpression">"D2 Market"."M04  Region"</sawx:expr><sawx:expr xsi:type="sawx:untypedLiteral">North</sawx:expr></sawx:expr>

В указанном примере контекст параметров промпта - это объект D2 Market.M04 Region. Далее сервер "просматривает" все отчеты, которые расположены на странице и проверяет их фильтры. Каждый фильтр имеет свой контекст параметров, если происходит совпадение колонок в контексте параметров промпта и фильтра отчета, тогда сервер подставляет в отчет фильтр, который вернул промпт и применяет его. Таким образом проверка идет на совпадение [Презентационная таблица].[Презентационная колонка] в фильтре промпта и фильтре отчета. Поэтому для того, что выбор параметров в промпте передавался в отчет нужно обязательно, чтобы в отчете был фильтр с колонкой, значения для которой фильтруются. Именно для этих целей существует фильтр заглушка - "снабжен подсказкой" (is prompted), который добавляет колонку в контекст параметров с пустым фильтром.

Рассмотрим теперь механизм навигации (Navigate) между отчетами. Механизм детализации (Drill) работает по-другому, здесь я не буду его рассматривать. В любом виде представлений отчетов - Таблица, Кросс-Таблица, Диаграмма, График навигация осуществляется одинаковым образом. Для определенной колонки в критерии отчета указывается свойства навигации (для графиков настраивается отдельно в представлении) и определяется конечный отчет или страница. После указанных действий в исходном отчет появляются активные ссылки на значениях или заголовках (в зависимости от того что настроено), нажимая на которые пользователь переходит в другой отчет. Как и в случае с промптом, в момент когда пользователь нажимает на ссылку (значение справочника или показателя, заголовок, график и т.д.) презентационный сервер формирует динамический XML фильтр с контекстом параметров. Указанный контекст параметров - это точная координата объекта в представлении отчета. Например, если представление - это таблица, то контекст параметров - это все видимые столбцы таблицы со значениями, соответствующими строке, в которой находится объект на котором произведено действие. Если представление - это кросс-таблица, то контекст параметров - это все видимые разрезы и их значений на пересечении которых находится объект. Принцип работы с графиками и диаграммами аналогичен кросс-таблице. Для примера приведу динамический XML фильтр, сформированный при переходе из значения кросс-таблицы с двумя разрезами - D2 Market.M01  Market и D4 Product.P02  Product Type:

<sawx:expr xmlns:sawx="com.siebel.analytics.web/expression/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="sawx:logical" op="and"><sawx:expr xmlns:sawx="com.siebel.analytics.web/expression/v1" xsi:type="sawx:comparison" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" op="equal"><sawx:expr xmlns:sawx="com.siebel.analytics.web/expression/v1" xsi:type="sawx:sqlExpression" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">"D2 Market"."M01  Market"</sawx:expr><sawx:expr xmlns:sawx="com.siebel.analytics.web/expression/v1" xsi:type="sawx:untypedLiteral" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Market 2</sawx:expr></sawx:expr><sawx:expr xmlns:sawx="com.siebel.analytics.web/expression/v1" xsi:type="sawx:comparison" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" op="equal"><sawx:expr xmlns:sawx="com.siebel.analytics.web/expression/v1" xsi:type="sawx:sqlExpression" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">"D4 Product"."P02  Product Type"</sawx:expr><sawx:expr xmlns:sawx="com.siebel.analytics.web/expression/v1" xsi:type="sawx:untypedLiteral" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Type 3</sawx:expr></sawx:expr></sawx:expr>


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

Дополнительный бонус: Для отладки сложных решений в Oracle BI связанных с навигации, полезным бывает посмотреть какой фильтр формируется при навигации между отчетами. Это можно сделать следующим образом: в ресурсном файле viewhelper.js, расположенном в папке [OBIEE_HOME]/oc4j_bi/j2ee/home/applications/analytics/analytics/res/b_mozilla (для OC4J), надо найти функцию:
function NQNavigateHandler(tInfoBag, target)
Далее в ней найти следующую конструкцию:

if (nVals > 0)
tForm.P0.value = saw.getXmlText(tExpr);
else
tForm.P0.value = "";

И добавить перед if-конструкцией вызов:
alert(saw.getXmlText(tExpr));
Все, после указанных действий при навигации будет появляться окно, содеражащее динамический XML фильтр.

Не забудьте удалить вызов alert после завершения работы.

Любые изменения в коде продукта Oracle Business Intelligence Enterprise Edition+ вы делаете на свой страх и риск и несете полностью отвественность за любые ошибки, проблемы или потери важной информации.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 27.10.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Standard Edition 2 Processor License
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Personal Edition Named User Plus License
ZBrush 4R6 Win Commercial Single License ESD
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Программирование в AutoCAD
СУБД Oracle "с нуля"
Работа в Windows и новости компании Microsoft
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100