Полностью автоматизированное решение, вероятно, невозможно. Вы можете частично автоматизировать процесс конвертации следующим образом:
- Преобразование файлов RDF в XML.
- Извлечь запрос отчета.
- Преобразование XML в BIRT (или JRXML) с использованием XSLT.
Преобразование XML
Первый шаг довольно прост с использованием Cygwin:
cd /path/to/reports/
mkdir xml
for i in *.rdf; do
rwconverter.exe batch=yes source="$i" dest=xml/"$i".xml dtype=xmlfile \
userid=scott/tiger@xe
done
Добыча
Второй шаг также относительно прост: используется starlet (переименуйте xml.exe
в starlet.exe
, чтобы избежать конфликтов с Oracle xml.exe
):
starlet.exe sel -t -v "/report/data/dataSource/select" filename.rdf.xml
Вы также можете использовать xmllint, но он включает элементы select
и CDATA
, которые вам придется анализировать отдельно:
xmllint --xpath /report/data/dataSource/select filename.rdf.xml
Преобразование формата
Третий шаг - сложный. Создайте шаблон XSL, который читает макеты RDF (например, <displayInfo x="0.74377" y="0.97913" width="1.29626" height="1.62695" />
). Затем преобразуйте эти макеты в соответствующий формат, используемый обработчиком отчетов назначения (например, BIRT или JasperReports).
Вы не получите 100% -ное решение, но 80% -ное решение может значительно уменьшить количество монотонной, подверженной ошибкам работы, необходимой для преобразования отчетов.