Oracle BI Publisher Tipp

Migration von Oracle Reports Berichten

Autor

Rainer Willems

Version

10.1.3.4

Datum

06.11.2006


In diesem Tipp wird exemplarisch eine Migration eines mit Oracle Reports erstellten Berichtes beschrieben.

Ausgangsbeispiel

Als Beispiel dient ein Bericht mit 2 verknüpften Abfragen. In der Detail-Gruppe G_EMPNO befindet sich eine Formelspalte CF_Einkommen befindet:



Die Summenspalten CS_SumSal und CS_SumEinkommen summieren SAL bzw. die Formelspalte auf. Die Summenspalte CS_CountEmployees zählt die Mitarbeiter pro Abteilung und wird später in einem Format Trigger verwendet.

Es gibt einen Parameter p_deptno, mit welchem eine Abteilung selektiert werden kann.

Das Layout der Berichtes sieht wie folgt aus:



und führt zu folgendem Output


In diesem Layout  stecken 2 Formattrigger.  Beim ersten handelt es sich um ein Conditional Format, welches das Einkommen rot darstellt, dalls dieses kleiner als 3000 ist. Der zweite Trigger unterdrückt die Darstellung des Detail-Frames, falls in diesem keine Daten (Mitarbeiter) sind (also in Abteilung 40).


Das Berichtsbeispiel kann als XML-File hier geladen werden.

Migration

Die Migration erfolgt über die Kommandozeile mit folgendem Befehl:

 java.exe 
 -classpath collections.jar;aolj.jar;xdocore.jar;xmlparserv2.jar
oracle.apps.xdo.rdfparser.BIPBatchConversion
-source d:\ReportsToBIP\source
-target d:\ReportsToBIP\target 
-debug

Der Aufruf von oracle.apps.xdo.rdfparser.BIPBatchConversion (benötigt JDK 1.1.8 oder höher) benötigt 4 JAR-Dateien im classpath (collections.jar;aolj.jar;xdocore.jar;xmlparserv2.jar). Diese Files liegen im Oracle-Home des BI Publishers unter \oc4j_bi\j2ee\home\applications\xmlpserver\xmlpserver\WEB-INF\lib.

Der Parameter source zeigt auf einen Pfad, in welchem die zu migrierenden Reports-Berichte liegen. Pro Bericht wird ein Unterverzeichnis unter dem mit target angegebenen Verzeichnis angelegt, in welches die jeweiligen Zieldateien abgelegt werden. Die Ursprungsberichte von Reports müssen im XML-Format vorliegen, damit sie migriert werden können.  Bei einer bestehenden Installation der Developer -Suite auf dem gleichen Rechner können auch RDF-Dateien verwendet werden. Hierbei wird über den Parameter  -oraclehome das Home-Verzeichnis der Developer Suite gesetzt und die RDF-Berichte zur Laufzeit in XML konvertiert.


Im Zielverzeichnis sind nun eine Reihe von Dateien entstanden, wobei die Filenamen vom Namen der Reports-Definition abhängen.
  • <Name>.log: Hinweise zum Migrationsprozess
  • <Name>.rtf: RTF-Layout Template
  • <Name>.xdo: BI Publisher Berichsdefinition
  • <Name>_LOV.xml: Definition der List of values für Parameter (auch in xdo Datei enthalten)
  • <Name>_template.xml: Data Template (auch in cdo Datei enthalten)
  • <Name>B.pls: Datenbank Package Body
  • <Name>S.pls: Datenbank Package Spezifikation

Die Dateien dieses Beispiels können hier als Zip-File geladen werden.

Was ist aus meinem Report geworden

Das Datemodell wurde in in ein Data Template transferiert, in welchem die beiden Ausgangsqueries miteinander verknüpft vorkommen.

Die Formelspalte wurde durch einen Aufruf einer Funktion innerhalb eines Datenbank-Packages ersetzt. Dieses Datenbankpackage ist im Kopf des Data Templates angegeben (defaultPackage="Bericht"). In diesem Package werden alle prozudeduralen Elemente aus Reports gesammelt, die der Migrationsprozess abbilden kann.





Die Struktur des Reports-Modells wird in der dataStructure-Sektion abgebildet. Hierbei sieht man, dass die Summenspalten als Elemente im Data Template abgebildet sind.



Das Layout sieht wie auf der rechten Seite aus. Was aufällt ist, dass beispielsweise Farben und Schriftarten nicht aus dem Original-layout übernommen wurden, was eine Limitation des aktuellen Converters ist.

Bei den beiden rot markierten Einträgen handelt es sich um nicht umgesetzte Trigger aus dem Layout. Diese werden im übrigen auch in der Log-Datei als nicht umgesetzt ausgewiesen.

Hinter dem if verbirgt sich beispielsweise
<!--  Object: M_G_EMPNO_GRPFR
Format Trigger: m_g_empno_grpfrformattrigger  -->

Es geht hierbei also um Hinweise, an welchen Stellen Logik manuell nachgepflegt werden muss. Ebensolches gilt für den Conditional Format Trigger bezgl. der Farbe des Einkommens.

Verwenden im Bi Publisher Server

Die Einspielung des Berichts in den Server besteht aus folgenden Schritten:
Was nun noch angepasst werden muss, sind die Data Sources des Data Templates sowie der List of Values:



Das erste Ergebniss sieht dann wie folgt aus:


Die Einkommenswerte sind alle in rot, da ja auch dieser Trigger nicht umgesetzt wurde. Ebenso sieht man bei Abteilung 40 die Header der Mitarbeiter, auch wenn es keine gibt.

Anpassungen

Mit dem BI Publisher Desktop aus Word für Windows heraus melden wir uns nun am Server an, um Anpassungen am Layout vorzunehmen.

Um die dynamische Farbgebung des Einkommens wiederherzustellen, selektiert man das dementsprechende Form-Feld und setzt die Standardfarbe auf schwarz zurück. Jetzt kann mit Hilfe des Wizards INSERT - CONDITIONAL FORMAT die gewünschte Bedingung wieder erstellt werden



Im Ergebniss erstellt der Wizard diesen Code: <?if:number(CF_EINKOMMEN)<3000?><?attribute@incontext:color;'red'?><?end if?>

Analog hierzu kann die gesamte Region der Details im Bericht markiert werden und der CONDITIONAL REGION Wizard aufgerufen werden., welche den Code  <?if:number(CS_COUNTEMPLOYEES)>0?> ... <?end if?> erzeugen kann.

Mit diesen beiden Anpassungen erhält man einen in Struktur und Logik äquivalenten BI Publisher Bericht zum Ausgangsbericht aus Oracle Reports.

Noch etwas zusätzliche Formatierung im RTF Template und die Ausgabe sieht aus wie ursprünglich



Fazit

Der Converter liefert keine 100% Migration, leistet aber wertvolle Hilfestellung für die Umstellung des Datenmodelles in ein Data Template und gibt die Struktur für ein RTF-Template vor.