Umstellung einer Oracle FORMS Anwendung auf Oracle APEX Martin Wibbing
Agenda Vorstellung BfS Projekt BEVOR/BEVORFR/VIBS Anforderungen Realisierung Fazit Fragen
Vorstellung BfS ist eine selbstständige wissenschaftlich-technische Bundesoberbehörde gehört zum Geschäftsbereich des:
Beschäftigte und Standorte Gesamt 664 (einschließlich befristet Beschäftigte und Teilzeitkräfte, ohne 35 Auszubildende) Stand: Februar 2007
Themen Kerntechnik Endlager / Zwischenlager Transport Ionisierende Strahlung Nichtionisierende Strahlung Umgebungsüberwachung und Notfallschutz
Sicherheit in der Kerntechnik (Fachbereich SK) Unterstützung des BMU bei der Fachund Rechtsaufsicht Dokumentation von Zustand und Genehmigungsstatus sowie meldepflichtigen Ereignissen in kerntechnischen Anlagen Vorschläge zur Gewährleistung und Verbesserung der Sicherheit kerntechnischer Einrichtungen
Agenda Vorstellung BfS Projekt BEVOR/BEVORFR/VIBS Anforderungen Realisierung Projekt-Zeitplan Fragen
Projekt BEVOR/BEVORFR/VIBS Datenbank zur Erfassung meldepflichtiger Ereignisse in Kernkraftwerken (BEVOR), Forschungsreaktoren (BEVORFR) und Anlagen der Kernbrennstoffver- und -entsorgung (VIBS) 1. 2. 3. 4. 5. Forms 4.0 1995 Forms 5.0 1998 Forms 6.0 2000 Forms 6i Web 2003 APEX/Forms 10GR2 2006 Anfangs Client/Server Zugriff über ASO über Internet Ab 2003 Zugang auch für Länderbehörden über zertifikatgeschützte Webseite möglich.
Projekt BEVOR/BEVORFR/VIBS Problem von Forms 6i Web und geschützte Webseite: 1. 2. 3. 4. Zugriff nur mit Internet-Explorer und Microsoft VM Individuelle Konfiguration am Client nötig Probleme bei langsamer Leitung Internet-Explorer 6 hat keine Microsoft VM mehr Deshalb wurde eine Umstellung zu eine HTML basierten Umgebung angestrebt. Betrachtet wurden: Java/JSP/ADF PHP Oracle HTMLDB/APEX
Projekt BEVOR/BEVORFR/VIBS 34 Forms-Masken und 8 Reports 74 Tabellen, ca. 500 MB Daten Erfassung und Anzeige der Ereignisse mit 3 Rollen (BfS,BMU,Länder) Recherchen über PL/SQL Paket Volltextsuche mit Oracle Text Ablegen von Bildern zu Ereignissen in BLOB s Benutzerverwaltung über OpenLdap
Projekt BEVOR/BEVORFR/VIBS Ereignisse
Projekt BEVOR/BEVORFR/VIBS Kennziffern
Projekt BEVOR/BEVORFR/VIBS Einrichtungen
Projekt BEVOR/BEVORFR/VIBS Einfache Suche
Projekt BEVOR/BEVORFR/VIBS Detail-Suche
Agenda Vorstellung BfS Projekt BEVOR/BEVORFR/VIBS Anforderungen Realisierung Fazit Fragen
Anforderungen Aussehen und Bedienung möglichst wie Forms Volltextsuche mit Oracle Text und Markieren der Textstellen Anzeigen von Bildern, die mit Forms abgelegt wurden Online-Hilfe die von der Fachabteilung gepflegt werden kann Integration von Berichten, die mit Oracle Reports erzeugt werden Pflege mit Oracle Forms und APEX möglich Drei Benutzer-Rollen nötig (Fachabteilung, Erweiterte Rechte, Einfache Rechte) Recherchen benutzerbezogen speichern und laden Authentifizierung über LDAP in Forms und APEX
Agenda Vorstellung BfS Projekt BEVOR/BEVORFR/VIBS Anforderungen Realisierung Fazit Fragen
Realisierung Beginn eines ersten Prototyp in HTMLDB 1.6 Erstes Projekt in HTMLDB Es wurde keine AJAX eingesetzt Bei der Entwicklung zeigte sich: um benutzerfreundliche Anwendungen zur realisieren, sind unbedingt Kenntnisse in HTML Javascript PL/SQL nötig.
Realisierung Speichern und Setzen der Seitenposition Da bei langen Seiten nach dem Absenden die Seite immer wieder am Anfang steht, wurde eine Funktion zum Neusetzen des Scrollbalkens realisiert. Vor Absenden einer Seite wird die aktuelle Position des Scrollbalkens der Seite in zwei APEX-Variablen gespeichert. function savepos() { if(window.innerwidth) //Firefox { document.getelementbyid('p210_xpos').value = window.pagexoffset ; document.getelementbyid('p210_ypos').value = window.pageyoffset ; } else { // Internet Explorer var IE = (document.compatmode && document.compatmode == "CSS1Compat")? document.documentelement : document.body null; document.getelementbyid('p210_xpos').value = IE.scrollLeft ; document.getelementbyid('p210_ypos').value = IE.scrollTop ; } }
Realisierung Speichern und Setzen der Seitenposition Die Funktion savepos() muss vor dem Absenden der Seite aufgerufen werden. Beim Neuladen der Seite wird mit folgender Funktion der Scrollbalken wieder positioniert: function gehezu(){ window.scrollto(document.getelementbyid('p210_xpos').value,document.getelementbyid('p210_ypos').value ); } Im Seiten-HTML-Body-Attribut Eintragen von: onload="gehezu();"
Realisierung Volltextsuche mit Oracle Text und Markieren der Textstellen Die Textfelder werden nach Textarten abgespeichert. Für jede Textart gibt es unterschiedliche Zugriffsrechte. Gesucht werden soll nur in Texten, auf die der Benutzer Zugriff hat. Dargestellt werden sollen alle Textarten, auf die der Benutzer Zugriff hat.
Realisierung Volltextsuche mit Oracle Text und Markieren der Textstellen Anlegen von drei Text-Indizes mit verschiedenen Userdatastores Erzeugen von 3 Felder in Tabelle Ereignisse Ändern der Felder, wenn sich die Tabelle BEV_TEXTE ändert, über Update-Trigger Definieren einer PL/SQL Funktion, die den Text dynamisch erzeugt. Diese Funktion wird für den Userdatastore verwendet Erzeugen des HTML-Code über ctx_doc.markup und htp.p Paket über eine PL/SQL Procedure
Realisierung Anzeigen von Bildern, die mit Forms abgelegt wurden Bildformat von FORMS ist TIFF, kann im Browser nicht direkt angezeigt werden. Beim Aufrufen der Seite wird das Bild in JPEG mit Intermedia umgewandelt und in der Datenbank gespeichert. Beim neuen Aufrufen wird das Bild direkt aus der Datenbank geladen. Zum Umwandeln wird die folgende Procedure verwendet: ORDSYS.ORDImage.processCopy(source_blob, 'fileformat=jfif',dest_blob);
Realisierung Online-Hilfe, die von der Fachabteilung gepflegt werden kann Für jede Seite kontextabhängige Hilfe Hilfe pflegbar über WYSIWYG-Editor Alle Daten liegen in der Datenbank (HTML, Bilder) Bilder können vom Anwender hochgeladen werden Der Editor soll eine Liste der Bilder aus APEX aufrufen können Der Editor soll eine Liste der Hilfe-Seiten aufrufen können, um eine Verlinkung zu ermöglichen
Realisierung Online-Hilfe, die von der Fachabteilung gepflegt werden kann Gewählt wurde TinyMCE, da man relativ leicht APEX-Seiten zur Auswahl einbinden kann. Einbinden des Editors über Javascript. Mit tinymce.init wird eine Textarea ersetzt. Der Parameter file_browser_callback : "filebrowsercallback" definiert eine Javascript Funktion zum Aufrufen von HTML-Seiten. function filebrowsercallback(field_name, url, type, win) Definieren einer Javascript Funktion, die im Bericht aufgerufen wird und eine URL zurückgibt. function passback(imgurl) { var mywin = opener.tinymce.getwindowarg("window"); var target_field = mywin.document.getelementbyid('src'); target_field.value = imgurl; window.close(); } Weiteres auf der Internetseite: http://wiki.moxiecode.com/index.php/tinymce:custom_filebrowser
Realisierung Integration von Oracle Reports Reports werden über URL des Reportserver aufgerufen Probleme bei Parameterübergabe Sonderzeichen in Parameter Angabe von Username und Passwort oder Eintrag in Parameterdatei cgicmd.dat Weitergabe der Benutzerrechte und Rolle notwendig Deshalb werden sämtliche Parameter in einer Oracle-Tabelle geschrieben. Als Parameter wird nur die ID des Datensatzes sowie der Alias in der Parameterdatei übergeben. In den Reports wird der Datensatz gelesen und dann gelöscht.
Agenda Vorstellung BfS Projekt BEVOR/BEVORFR/VIBS Anforderungen Realisierung Fazit Fragen
Fazit Nach Einarbeitung in HTMLDB/APEX ist eine schnelle Entwicklung von Anwendungen möglich In der Zwischenzeit wurden weitere Anwendungen in APEX entwickelt
Vielen Dank für die Aufmerksamkeit mwibbing@bfs.de Fragen?