25.06.2012

Oracle XML Publisher: простейший отчет в RTF

Процесс создания отчета состоит из этапов: создание Шаблона определения данных (Data Definition), создание RTF шаблона представления данных конечному пользователю, создание Параллельного (concurrent) приложения, добавление созданного приложения в группу запросов пользователя, выполнение отчета с параметрами.

Создадим отчет, выводящий число, число+1, число*2. Диапазон будем задавать параметрами.
with a1 as (
select level col1, 
       (level + 1) colAdd, 
       (level * 2) colx2  from dual connect by level < 10
) select * from a1 where col1 between :a and :b
1. Создание Data Definition шаблона. 
Шаблон представляет собой XML-файл следующей структуры:



В нашем случае:
<?xml version="1.0" encoding="UTF-8"?>
<datatemplate description="Concurrent test template 1" name="concurrentTest1">
<properties>
<property name="debug_mode" value="on">
</property></properties>
<parameters>
<parameter datatype="number" defaultvalue="" name="errbuf">
<parameter datatype="number" defaultvalue="" name="retcode">
<parameter datatype="number" defaultvalue="" name="a">
<parameter datatype="number" defaultvalue="" name="b">
</parameter></parameter></parameter></parameter></parameters>
        <dataquery>
        <sqlstatement name="Q1">
            <![CDATA[
               with a1 as (
                 select level col1, 
                 (level + 1) colAdd, 
                 (level * 2) colx2  from dual connect by level < 10
               ) select * from a1 where col1 between :a and :b]]>
        </sqlstatement>
    </dataquery>
<datastructure>
<group name="Group1" source="Q1">
<element name="VALUE" value="col1">
<element name="VALUE_PLUS_1" value="colAdd">
<element name="VALUE_x2" value="colx2">
</element></element></element></group>
</datastructure>
</datatemplate>

2.  Cоздание RTF шаблона.
Используя надстройку Oracle BI Publisher, загрузим наш Data Definition в текущий документ. Нарисуем таблицу, положим в ячейки XSL-код:

<?for-each: //GROUP1?>
<?VALUE?>
<?VALUE_PLUS_1?>
<?VALUE_X2?>
<?end for-each?>
Тег for-each означает, что строки будут создаваться для всех значений в выходном XML-файле.

3. Создание concurrnt - приложения

Внимание: Краткое имя должно соответствовать имени Data Definition!
Нажав на кнопку параметров, указываем 2 параметра: a, b (формат 6/Number).

4. Добавление созданного приложения в группу запросов пользователя. 
С правами системного администратора: Защита - Полномочия - Запрос.
Добавляем созданное приложение в группу запросов, связанную с выбранными полномочиями.

5. Выполнение отчета с параметрами
Вид - Запросы - Отправить новый запрос - Отдельный запрос

Комментариев нет :