Migration Assistent Forms nach APEX / D - Trivadis
Migration Assistent Forms nach APEX / D - Trivadis
Migration Assistent Forms nach APEX / D - Trivadis
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Schlüsselworte:<br />
<strong>Migration</strong> <strong>Assistent</strong> <strong>Forms</strong> <strong>nach</strong> <strong>APEX</strong><br />
<strong>Forms</strong>, <strong>APEX</strong>, <strong>Migration</strong><br />
Einleitung<br />
Dr. Gudrun Pabst<br />
<strong>Trivadis</strong> GmbH<br />
München<br />
Vielfach wird die Frage gestellt, welche Alternativen es zu <strong>Forms</strong> gibt. Mit der Version 3.2<br />
von <strong>APEX</strong> stellt Oracle einen <strong>Assistent</strong>en zur Verfügung, um <strong>Forms</strong>-Anwendungen <strong>nach</strong><br />
<strong>APEX</strong> zu migrieren. Im folgenden wird beschrieben, welcher Anteil einer <strong>Forms</strong>-Anwendung<br />
migriert wird, wo Nacharbeit erforderlich ist und in welchen Fällen der Einsatz sinnvoll ist.<br />
Aufsetzen der Umgebung<br />
Bei der <strong>Migration</strong> werden die Module der <strong>Forms</strong>-Anwendung als XML-Dateien bzw.<br />
Textdateien in das <strong>APEX</strong>-Repository geladen und gegenüber dem Datenbank-Schema<br />
ausgewertet. Daher sind zuerst ein paar Vorarbeiten nötig:<br />
Die Object Libraries, Menus, Reports und <strong>Forms</strong>-Module der <strong>Forms</strong>-Anwendung müssen<br />
in XML konvertiert werden, die Library-Module müssen als Textdateien gespeichert<br />
werden.<br />
In <strong>APEX</strong> muss ein Workspace angelegt werden, der auf dem Schema der <strong>Forms</strong>-<br />
Anwendung basiert.<br />
Sind diese Vorarbeiten durchgeführt, kann mit der <strong>Migration</strong> begonnen werden.<br />
Nach dem Anmelden am Workspace findet man auf der rechten Seite in der Link-Liste den<br />
Link „Application <strong>Migration</strong>s“:<br />
1
Dieser Link führt auf die Seite der <strong>Migration</strong>sprojekte. Hier muss mit „Create Project“ ein<br />
<strong>Migration</strong>sprojekt angelegt werden:<br />
Um ein <strong>Migration</strong>sprojekt anzulegen, muss man den Namen und den Typ des Projekts (<strong>Forms</strong><br />
oder Access) festlegen. Dabei wird auch bereits das erste <strong>Forms</strong>-Modul hochgeladen.<br />
Im nächsten Schritt oder <strong>nach</strong> Abschluss des Wizard können weitere Dateien hochgeladen<br />
werden.<br />
Nachdem sämtliche Dateien der <strong>Forms</strong>anwendung in das <strong>APEX</strong>-Repository geladen sind,<br />
zeigt die Liste der <strong>Migration</strong>sprojekte eine Übersicht über die Komponenten der <strong>Forms</strong>-<br />
Anwendung:<br />
2
Unter der Überschrift „Application“ ist noch kein Eintrag vorhanden; hier wird später der<br />
Name der Applikation erscheinen, die aus diesem <strong>Migration</strong>sprojekt erstellt wurde.<br />
Überprüfung der globalen Einstellungen<br />
Ein Klick auf den Projektnamen führt auf eine Seite, die eine detailliertere Übersicht über die<br />
Komponenten der einzelnen Module liefert:<br />
Die Einträge in der Liste ergeben sich wie folgt:<br />
„Blocks“ ist die Anzahl der Blöcke im <strong>Forms</strong>-Modul.<br />
„DB Blocks“ ist die Anzahl der Blöcke im <strong>Forms</strong>-Modul, deren Property „Database<br />
Block“ auf „Yes“ steht. Dies muss also nicht wirklich die Anzahl der Datenbank-<br />
Blöcke wiedergeben.<br />
„Items“, „Triggers“, „Record Groups“, „List of Values“, „Alerts“ und „Program Units“ ist<br />
die Anzahl der entsprechenden Objekte im <strong>Forms</strong>-Modul.<br />
„Component Count“ gibt die Anzahl der Komponenten im hochgeladenen <strong>Forms</strong>-Modul<br />
an.<br />
„Completed Components“ wird ermittelt als die Anzahl der Komponenten, für die<br />
entweder das „Complete“-Kennzeichen auf „Yes“ gesetzt ist oder das „Applicable“-<br />
Kennzeichen auf „No“.<br />
„Percent Complete“ gibt aufgrund der Anzahl der „Completed Components“ an, wie weit<br />
das <strong>Forms</strong>-Modul migriert ist.<br />
Damit die Prozentzahl für den <strong>Migration</strong>sfortschritt aussagekräftig ist, müssen die<br />
„Applicable“-Kennzeichen korrekt gesetzt sein. Diese Kennzeichen können global gesetzt<br />
werden (dabei werden die einzelnen Kennzeichen überschrieben!) oder einzeln für jede<br />
Komponente. Da die globale Einstellung die lokale Einstellung überschreibt, ist es sinnvoll,<br />
zunächst die globale Einstellung so zu treffen, dass für die meisten Komponenten der korrekte<br />
Wert hinterlegt ist, und da<strong>nach</strong> nur noch die Sonderfälle einzeln abzuändern.<br />
Zum Setzen der globalen Einstellung gibt es rechts von der Checkliste unter „Tasks“ den Link<br />
„Edit Project Details and Applicability“. Der Link öffnet eine Seite, auf der die „Applicable“-<br />
Kennzeichen für Komponententypen und für Trigger gesetzt werden können.<br />
Für die Komponententypen sieht dies folgendermaßen aus:<br />
3
Für Trigger gibt es nicht nur die Einstellung in dieser Liste, sondern es kann für jeden<br />
Trigger-Typ gezielt eingestellt werden, wie das Kennzeichen gesetzt werden soll:<br />
Leider ist die Liste nicht komplett. Es fehlt z.B. der Trigger „PRE-POPUP-MENU“, der mit<br />
der Einstellung „Applicable=Yes“ übernommen wird.<br />
4
Überprüfung der analysierten Objekte<br />
Sind die globalen Einstellungen korrekt gesetzt, werden die einzelnen Komponenten der<br />
Module geprüft. Ein Klick auf den Modulnamen führt zu einer Liste der Komponenten des<br />
Moduls sowie der geplanten Umsetzung in einer <strong>APEX</strong>-Anwendung:<br />
Komponenten ohne Eintrag unter „Equivalent Component“ werden nicht automatisch<br />
umgesetzt. Hat „Applicable“ für derartige Komponenten den Wert „Yes“, muss manuell für<br />
die Umsetzung gesorgt werden.<br />
Für „Blocks“ ist eine Umsetzung als „Region“ vorgesehen. Es sind drei Blöcke vorhanden,<br />
aber nur einer ist als „Included“ aufgelistet. Klickt man auf den Link „Blocks“, können auch<br />
die anderen beiden Blöcke aufgenommen werden in die Menge der Objekte, die beim<br />
Erstellen der Applikation umgesetzt werden:<br />
Der Wert unter „Title“ ist immer der Blockname – hier sind daher im allgemeinen<br />
Anpassungen nötig!<br />
Ein Klick auf den Blocknamen führt zur Detailansicht des Blocks. Hier können die<br />
„Annotations“ des Blocks bearbeitet werden:<br />
5
Diese „Annotations“ sind für alle Komponenten vorhanden und identisch aufgebaut.<br />
In diesem Bereich kann ein von der Vorgabe abweichendes „Applicable“-Kennzeichen<br />
hinterlegt werden. Für die manuellen Nacharbeiten können ein Bearbeiter, Notizen und Tags<br />
eingetragen werden. Ist die Komponente komplett migriert, wird das „Complete“-<br />
Kennzeichen auf „Yes“ gesetzt.<br />
In der Detailansicht des Blocks sind außerdem die Items und die Trigger des Blocks<br />
aufgelistet. Über den Namen des Item oder Trigger gelangt man zu deren „Annotations“.<br />
Erstellen der Anwendung aus dem <strong>Migration</strong>sprojekt<br />
Sind alle Einstellungen getroffen, wird mit dem Button „Create Application“ auf der<br />
Übersichtsseite des <strong>Migration</strong>sprojekts das Erstellen der Applikation gestartet. Der <strong>Assistent</strong><br />
fragt zunächst <strong>nach</strong> dem Namen der Applikation. Da<strong>nach</strong> wird ein Vorschlag für die<br />
Applikation erstellt:<br />
Als Seitennamen werden hier die Titel der Blöcke verwendet – wurde der Blocktitel vorher<br />
nicht geändert, werden hier die Namen der Blöcke benutzt!<br />
6
An dieser Stelle sind aber noch Korrekturen möglich: Durch einen Klick auf das „X“ in der<br />
Spalte „Delete Page“ können Seiten gelöscht werden; über den Link im Seitennamen werden<br />
die detaillierten Einstellungen der Seite angezeigt und können teilweise geändert werden:<br />
Erstellte Anwendung<br />
Wird die erstellte Anwendung gestartet, sieht sie folgendermaßen aus:<br />
Jede erstellte, aufrufbare Seite ist durch ein Icon dargestellt. Hat man die Icons nicht<br />
abgeändert, zeigt das Icon den Typ der Seite an.<br />
Umsetzung einiger häufiger Modul-Varianten:<br />
7
<strong>Forms</strong> <strong>APEX</strong> Anmerkung<br />
Formular / Multi-<br />
Record-Formular auf<br />
einer Tabelle<br />
Master-Detail<br />
Formular auf zwei<br />
Tabellen<br />
Master-Detail<br />
Formular auf<br />
mindestens einer DB-<br />
View<br />
Master mit 2 Details:<br />
Formular auf drei<br />
Tabellen<br />
Umsetzung einiger Item-Typen:<br />
Formular / tabellarisches<br />
Formular auf einer<br />
Tabelle<br />
Master-Detail Formular<br />
auf zwei Tabellen, ggf.<br />
mit zusätzlichem<br />
tabellarischem Formular<br />
für die Detail-Daten<br />
Zwei völlig von einander<br />
unabhängige Seiten<br />
Drei völlig von einander<br />
unabhängige Seiten<br />
Für Multi-Record-Formulare werden alle<br />
Spalten der Tabelle übernommen, auch<br />
diejenigen, die im <strong>Forms</strong>-Modul<br />
vorhanden sind<br />
Das tabellarische Formular für die Detail-<br />
Daten muss i.a. beim Erstellen der<br />
Applikation aus der Liste der<br />
vorgeschlagenen Seiten gelöscht werden.<br />
<strong>Forms</strong> <strong>APEX</strong> Anmerkung<br />
Button im Single-<br />
Record-Formular<br />
Button<br />
Button im Multi-<br />
Record-Formular<br />
Der Button wird nicht übernommen.<br />
Check Box Check Box<br />
Text Item Textitem<br />
Text Item mit LOV, Popliste Die LOV wird als List of Values in<br />
DB-Item<br />
<strong>APEX</strong> umgesetzt und zum Füllen der<br />
Popliste verwendet.<br />
Text Item mit LOV,<br />
kein DB-Item<br />
Text Item Die LOV wird nicht umgesetzt.<br />
Popliste Popliste Wird die Popliste dynamisch gefüllt,<br />
muss der Code zum Füllen der Liste<br />
manuell als List of Values in <strong>APEX</strong><br />
übertragen werden.<br />
Zusammenfassung<br />
Die Arbeit mit dem <strong>Migration</strong>swizard erfordert umfangreiche Vorarbeiten: Konvertieren der<br />
<strong>Forms</strong>-Module in eine XML-Darstellung und Hochladen der einzelnen Module.<br />
Die Analyse-Funktion des <strong>Migration</strong>sprojekts liefert dann eine sehr gute Übersicht über den<br />
Umfang der <strong>Forms</strong>-Anwendung. Mit der Checklisten-Funktion der Liste ist auch der<br />
<strong>Migration</strong>sfortschritt gut überwachbar.<br />
8
Der in den <strong>Forms</strong>-Modulen enthaltene Code muss manuell umgesetzt werden; dies bedeutet<br />
unter Umständen viel Nacharbeit.<br />
Der Zusammenhang zwischen einzelnen Seiten, die aus demselben <strong>Forms</strong>-Modul<br />
hervorgegangen sind, muss manuell hergestellt werden.<br />
Leider übernimmt der Wizard in Multi-Record-Formularen nicht nur die in den <strong>Forms</strong>-<br />
Modulen verwendeten Spalten in die neuen Seiten, sondern er fügt auch alle anderen Spalten<br />
der Tabelle hinzu.<br />
Die bisher durchgeführten Schritte konnten keineswegs so reibungslos durchgeführt werden<br />
wie hier beschrieben. Der <strong>Migration</strong>sassistent hat noch einige Bugs und einige Probleme mit<br />
Modulen, die in der normalen <strong>Forms</strong>-Praxis durchaus üblich sind (siehe oben: Umsetzung von<br />
Master-Detail-Formularen auf Views).<br />
<strong>Forms</strong>-Anwendungen, die aus einfachen Formuleren, tabellarischen Formularen oder Master-<br />
Detail-Formularen mit nur zwei Tabellen bestehen, setzt der <strong>Migration</strong>swizard einigermaßen<br />
gut um.<br />
Enthält eine <strong>Forms</strong>-Anwendung viel Code, sind umfangreiche Nacharbeiten zu erwarten:<br />
Code für Layout muss für den Einsatz im Web umgestaltet werden, andere Codeteile müssen<br />
entweder in <strong>APEX</strong> übernommen und angepasst werden oder in die Datenbank ausgelagert.<br />
Fazit<br />
In der aktuellen Version des <strong>Migration</strong> <strong>Assistent</strong> kann er gut verwendet werden, um eine<br />
<strong>Forms</strong>-Anwendung zu analysieren und den Arbeitsfortschritt zu dokumentieren. Das Erstellen<br />
einer Applikation aufgrund der hochgeladenen <strong>Forms</strong>-Module ist allerdings an vielen Stellen<br />
nicht wunschgemäß und daher nur mit viel Nacharbeit verwendbar. Nur die einfachsten<br />
<strong>Forms</strong>-Module können <strong>nach</strong> der <strong>Migration</strong> fast unverändert verwendet werden; bereits für die<br />
etwas komplexeren Module empfiehlt sich, die <strong>APEX</strong>-Seiten selbst zu erstellen.<br />
Kontaktadresse:<br />
Name<br />
Dr. Gudrun Pabst<br />
<strong>Trivadis</strong> GmbH<br />
Lehrer-Wirth-Straße 4<br />
D-81829 München<br />
Telefon: +49(0)89-99 27 59 30<br />
Fax: +49(0)89-99 27 59 59<br />
E-Mail gudrun.pabst@trivadis.com<br />
Internet: http://www.trivadis.com<br />
9