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

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

*

*