ГЕНЕРАТОР ОТЧЕТОВ XMLOPEN Оглавление Оглавление .....................................................................................................................................................1 Введение .........................................................................................................................................................1 Общая схема работы XMLOpen ........................................................................................................................1 Выполнение запроса к БД и получение XML-данных ...................................................................................1 Форматирование данных с помощью XSL-преобразования ...........................................................................2 Резюме .........................................................................................................................................................2 Использование XMLOpen .................................................................................................................................2 Подготовка SQL-запроса ..............................................................................................................................2 Подготовка входной формы .........................................................................................................................2 Описание предопределенных параметров ................................................................................................3 Подготовка XSL-шаблона..............................................................................................................................4 Настройки отчета в XSL-шаблоне..............................................................................................................4 Функции XMLOpen для работы со сгенерированным отчетом ..........................................................................4 Фильтрация данных .....................................................................................................................................4 Сортировка данных ......................................................................................................................................4 Печать..........................................................................................................................................................4 Отправка по e-mail .......................................................................................................................................4 Сохранение в архив .....................................................................................................................................4 Перевод на другой язык ...............................................................................................................................4 Пользовательский скрипт ................................................................................................................................5 Обработка событий ......................................................................................................................................5 Введение Генератор отчетов XMLOpen – система, разработанная с использованием web-технологий и предназначенная для извлечения данных из БД и представления их в виде печатных документов (в первую очередь, отчетов), а также для экспорта этих данных в различные форматы. XMLOpen – одна из главных составляющих intranet-портала ZAVOD. Генератор базируется на XML-технологиях, активно развивающихся в последние годы и поддерживаемых всеми основными программными средствами (в частности, MS SQL Server и приложениями MS Office). Общая схема работы XMLOpen Для подготовки отчета генератор должен выполнить 2 основных шага: 1) получить необходимые данные из БД с помощью SQL-запроса; 2) представить полученные данные в необходимом пользователю виде (т.е. отформатировать). Выполнение запроса к БД и получение XML-данных MS SQL Server 2000 (используемый в настоящее время на заводе в качестве платформы для системы «Галактика») «умеет» возвращать данные по запросу в виде XML. Это позволяет использовать в работе с данной СУБД весь комплекс XML-технологий. На практике это реализуется следующим образом. SQL-запрос оформляется в виде специального XMLшаблона вида: <root xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:header> <sql:param name="Date1"/> <sql:param name="Date2"/> </sql:header> <sql:query> SELECT * FROM T$KatSopr doc WHERE dbo.fnGDateToDate(F$DSopr) BETWEEN @Date1 AND @Date2 ORDER BY F$DSopr FOR XML AUTO </sql:query> </root> При обращении к данному шаблону через web-сервер (IIS) содержащийся в шаблоне SQL выполняется и замещается результирующими данными в формате XML. «Заполненный» таким образом шаблон возвращается web-сервером клиенту. Шаблон может содержать несколько SQL-запросов в отдельных XMLтегах. Итак, сервер возвращает данные в формате XML; эти данные затем можно обработать с помощью любых XML-ориентированных средств. В нашем случае, полученные данные форматируются с помощью XSLпреобразования. Форматирование данных с помощью XSL-преобразования XSL-преобразование настраивается (а вернее, определяется) с помощью XSL-шаблона. На входе шаблона – XML-данные, на выходе – данные в одном из следующих форматов: XML, HTML, текст. Ограниченность выходных форматов лишь кажущаяся – ведь формат XML позволяет создавать документы MS Excel, MS Word и др., текстовый формат позволяет генерировать CSV-файлы и т.п. Резюме Таким образом, генератор должен иметь на входе SQL-запрос в виде XML-файла, а также XSL-шаблон для форматирования данных. Кроме того, оба вышеописанных процесса (запрос к БД и форматирование) должны настраиваться с помощью специальных параметров. Эти параметры также передаются на вход генератора. На выходе получаем документ в виде HTML-страницы, рабочей книги MS Excel, CSV-файла и т.д. Использование XMLOpen В рамках intranet-портала, ориентированного на технологии Microsoft (IIS + ASP + IE), генератор отчетов, естественно, реализован в виде ASP-страницы - XMLOPEN.ASP. Все вышеописанные параметры (адрес SQL-запроса, адрес XSL-шаблона, дополнительные параметры) при вызове страницы XMLOPEN.ASP передаются ей одним из двух способов: 1) в адресной строке; 2) в виде входной формы. Обычно используется второй способ, так как в большинстве случаев перед запуском отчета пользователь должен ввести какие-либо параметры (даты отчетного периода и т.п.). А для этого в любом случае нужна форма. Подготовка SQL-запроса Подготовка входной формы Обычно отчет запускается со специальной страницы, на которой находится входная форма (HTML-тег <FORM>), содержащая параметры отчета. Параметры делятся на пользовательские и предопределенные. Пользовательские параметры интерпретируются логикой SQL-запроса или XSL-шаблона. Предопределенные параметры интерпретируются самим генератором отчетов и определяют выполняемые им действия. В частности, именно они указывают генератору отчетов, какой SQL-запрос выполнять и с помощью какого XSL-шаблона форматировать полученные данные. Параметры могут храниться в любых стандартных полях ввода HTML, таких как INPUT, SELECT и т.д. Предопределенные параметры обычно задаются с помощью тега <INPUT type=hidden> (скрытое поле ввода). Когда пользователь запускает отчет, данные из всех полей ввода передаются (submit) на страницу XMLOPEN.ASP (т.е. генератору отчетов). Основные предопределенные параметры – это UrlXML, UrlXSL, SQLParams, XSLParams. Они используются при отправке запроса к БД и последующем форматировании полученных данных с помощью XSL-шаблона. Как указывалось выше, генератор отчетов используется, в частности, для экспорта данных в различные форматы (MS Excel, MS Word, CSV). В связи с этим, имеется ряд предопределенных параметров для настройки экспорта: ExportFormat, ExportToDir, ExportToFile и др. Ниже приводится полное описание всех предопределенных параметров. Описание предопределенных параметров UrlXML Устарело. Адрес XML-шаблона, содержащего SQL-запрос. Пример: <input type="hidden" name="UrlXML" value="/pbdb/t/my-report.xml"> UrlSQL Адрес SQL-запроса. Пример: <input type="hidden" name="UrlSQL" value="/pb/my-report.sql"> UrlXSL Адрес XSL-шаблона для форматирования данных, полученных с помощью SQL-запроса. Пример: <input type="hidden" name="UrlXSL" value="/pb/my-report.xsl"> SQLParams Список пользовательских параметров для SQL-запроса. Состоит из имен полей ввода, находящихся в той же форме. Имена разделяются запятыми. После отправки данных генератор отчетов (XMLOPEN.ASP) получает значения всех полей ввода. Параметр SQLParams указывает ему, какие из этих значений передать в качестве параметров SQL-запросу. Например, если в форме вводятся начальная и конечная даты отчетного периода (поля Date1 и Date2), параметр SQLParams будет выглядеть так: <input type="hidden" name="SQLParams" value="Date1, Date2"> XSLParams Список пользовательских параметров для XSL-шаблона. Состоит из имен полей ввода, находящихся в той же форме. Имена разделяются запятыми. После отправки данных генератор отчетов (XMLOPEN.ASP) получает значения всех полей ввода. Параметр XSLParams указывает ему, какие из этих значений передать в качестве параметров XSL-шаблону при форматировании данных. Например, если в форме вводятся начальная и конечная даты отчетного периода (поля Date1 и Date2), параметр XSLParams будет выглядеть так: <input type="hidden" name="XSLParams" value="Date1, Date2"> UrlScript Адрес пользовательского java-скрипта, используемого для создания интерактивных форм. Подробнее см. раздел «Пользовательский скрипт». <input type="hidden" name="UrlScript" value="/pb/my-report.js "> ExportFormat ExportToDir ExportToFile ExportAddDate ExportOverwrite ExportAndOpen Подготовка XSL-шаблона Настройки отчета в XSL-шаблоне В XSL-шаблоне можно задать ряд настроек, применяемых к сгенерированному документу. Это настройки печати, отправки по e-mail и др. Настройки задаются в формате XML с использованием HTML-тега <XML> и имеют следующий вид (приведены все настройки): <xml id="xmlSetup"> <root> <report-title value="Название отчета"/> <mail> <as-attachment value="yes"/> <use-original-html value="yes"/> </mail> <print> <repaginate-every-time value="yes"/> </print> <translate> <dictionary value="адрес словаря для перевода"/> </translate> </root> </xml> ID тега обязательно должен быть «xmlSetup». Функции XMLOpen для работы со сгенерированным отчетом Отчет, сгенерированный в формате HTML, подгружается прямо в тело страницы XMLOPEN.ASP. Далее к полученному документу можно применить несколько действий: 1) фильтрация и сортировка данных; 2) печать (и предварительный просмотр печати); 3) отправка по e-mail; 4) перевод на другой язык. Фильтрация данных Сортировка данных Печать Отправка по e-mail Сохранение в архив Перевод на другой язык Пользовательский скрипт Обработка событий События: xml_afterload xml_aftertransform selection_choose selection_delete selection_insert