Лабораторная работа №2. Разработка журнала недостоверных значений в среде xmlp

Целью второй лабораторной работы является создание параметризованного отчёта по недостоверным значениям в системе АИРС с использованием сервера отчётов Oracle BI Publisher.

Oracle BI Publisher позволяет создавать отчёты используя различные источники данных. В данной лабораторной работе в качестве источника дынных используется SQL запрос.

Для создания отчёта в первую очередь необходимо построить SQL запрос выбирающий интересующие нас данные из БД и решить какие условия отбора будут являться параметрами. Так в качестве параметров, задаваемых пользователем выбраны следующие поля: type, nserv, tstamp. К сожалению, Oracle BI Publisher не позволяет параметризовать имя таблицы при использовании SQL запроса. Поэтому придётся создать несколько отчётов, каждый из которых будет отображать недостоверные значения в некотором масштабе времени (h0, h1, h2, h3, h4).

Для каждого из выбранных ранее параметризуемых полей введём имена параметров: pType, pServ, pStamp соответственно. В результате получен запрос:

SELECT
  s.code, s.name, s.unit, 
  h.a_val a_val, h.a_count
FROM
  airs.svodcode s
  LEFT OUTER JOIN h2 h ON (s.code = h.code)
WHERE
  s.type = :pType AND s.nserv = :pServ 
  AND h.tstamp = :pStamp AND h.a_stat = '1'

Указанный запрос используется для построения отчётов в часовом интервале времени (данные получаются из таблицы h2), для построения отчётов в других интервалах достаточно просто изменить имя таблицы в указанном запросе на h0, h1, h3 или на h4.

Параметры могут быть нескольких типов: текстовые, меню, дата, скрытые. Для используемых в запросе параметров лучше использовать тип "меню". Это позволит организовать пользовательский интерфейс, позволяющий указать в качестве значений параметров точно имеющиеся в БД значения (в противном случае возможна ситуация, когда введённые пользователем параметры приведут к генерации пустого отчёта). Необходимо создать список значений для каждого из параметров: typelist, tservlist и tstamplist соответственно. Их можно создать введя возможные значения вручную (typelist, tservlist), или используя SQL запрос (tstamplist).

Для того, чтобы получить список значений для того или иного параметра из БД, в котором каждое значение было бы указано только один раз можно воспользоваться оператором DISTINCT. Запрос будет выглядеть следующим образом:

select distinct tstamp from h2 order by 1 desc

В список typelist необходимо внести следующие значения:

Метка Значение
Аналоговые a
Дискретные d
Расчетные m

А в tservlist значения:

Метка Значение
Общестанционный сервер 0
Сервер блока №1 1
Сервер блока №2 2
Сервер блока №3 3

После создания списков-значений, их необходимо сопоставить параметрам.

Теперь уже можно приступить к отладке будущего отчёта. Автоматически сгенерированная форма позволяет выбрать параметры для составления отчёта. Так как в отчёте пока нет шаблона вывод информации будет осуществляться в виде XML дерева.

Oracle BI Publisher может работать с шаблонами в различных форматах, наиболее удобным для использования является rtf. Шаблон можно создать с помощью текстового процессора MS Office Word версии 2003 (при создании шаблона в более поздней версии Word Oracle BI Publisher отказывается его использовать).

В шапке отчёта необходимо указать введённые пользователем параметры. К сожалению, Oracle BI Publisher не позволяет превращать переданные на сервер параметры обратно в метки (в то, как они отображены в HTML элеменете select). В связи с этим, для вывода шапки отчёта необходимо ввести текстовые параметры (pHName - масштаб времени, pTypeName - тип параметров, pServerName - сервер, pStampName - время), которые пользователю придётся заполнять вручную. Чтобы вывести эти параметры в шапку шаблона их необходимо объявить:

<?param@begin:pTypeName?><?param@begin:pServerName?><?param@begin:pStampName?><?param@begin:pHName?>

А после этого уже использовать подобным образом:

Тип сигнала: <?$pTypeName?> 
<?$pServerName?>
Время регистрации: <?$pStampName?>
Масштаб времени: <?$pHName?>

При построении отчёта, полученные от БД строки обрабатываются в цикле и значения полей попадают в указанные столбцы. В шаблоне это выглядит следующим образом:

Код Имя Ед. изм Значение Счетчик
<?for-each:ROW?><?code?> <?name?> <?unit?> <?a_val?> <?a_count?><?end for-each?>

Используя шаблон, сервер может генерировать отчёты в форматах html, rtf, pdf, xls и других.

Аналогично нужно создать отчёты и для других масштабов времени.

Учитывая указанные недостатки Oracle BI Publisher целесообразно разработать пользовательский интерфейс используя язык разметки HTML, устраняющий необходимость ввода параметров для шапки и объединяющий отчеты для разных масштабов времени.


Разработанные отчёты:

Журнал недостоверных значений (часовой уровень)
Журнал недостоверных значений (сменный уровень)
Журнал недостоверных значений (суточный уровень)
Журнал недостоверных значений (месячный уровень)