Як передається контекст параметрів в Oracle BI EE +

Досить часто виникають питання яким-образом працює зв'язка промптов і звітів або як влаштована передача параметрів при навігація між звітами і інтерактивними сторінками в 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). Основні параметри зазначеного запиту це:



В атрибуті 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 + ви робите на свій страх і ризик і несете повністю відповідальність за будь-які помилки, проблеми або втрати важливої інформації.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*