WebAG Automat
|
Die ersten Schritte
Das Formularsystem des WebAG AutomatDer Formular-Editor als Bestandteil des WebAG Automat ermöglicht auf einfache Weise das zusammenstellen von einfachen bis hin zu komplizierten Formularen am Bildschirm. Das Anlegen von Formularen erfordert keine besonderen HTML-Kenntnisse. Für die individuelle Verarbeitung der Daten steht die prozedurale Spache PL/SQL als Erweiterung von SQL zur Verfügung, einige grundlegenden Verarbeitungsprozeduren werden bereitgestellt. Die folgende Einführung erläutert die wesentlichen Funktionen des Formularsystems und soll das Anlegen der ersten Formulare, dessen Verarbeitung und Verwaltung erleichtern.
Die Enterprise WebAG bietet individuell zugeschnittene Schulungen zu PL/SQL und dem zum Einsatz kommenden XML-Toolkit von Oracle an die es in kurzer Zeit ermöglichen eigene Web-Anwendungen zu entwickeln.
So rufen Sie das Formular System auf
Formulare können nur vom zentralen Webmaster erstellt und verwaltet werden. Der Formular-Editor ist im Navigationsbaum unter dem Punkt "System - Formulare" zu finden. Hier finden sich auch die Komponenten "Formular-Treiber" und "Container-Monitor" wieder die ebenfalls bei der Arbeit mit Formularen benötigt und später beschrieben werden.
Abbildung 1 - Formular System
Aufbau des Editors
Nach anlegen eines neuen Formulars, das leer oder die Kopie eines bestehenden Formulars sein kann, wird dieses Formular im Bearbeitungsmodus des Editors geöffnet.
Der Editor zeigt unter dem Formularnamen die auf das ganze Formular bezogenen Funktionen Kopieren, Löschen etc. an. Darunter im gelben Feld werden Formularinformationen angezeigt die änderbar sind. Den Hauptteil des Editors macht der zu Begin noch leere, graue Bereich aus in dem die Formularelemente platziert werden.
Abbildung 2 - Formular Editor
Beispiel "Adressformular"
In dieser Quicktour soll als Beispiel gezeigt werden wie ein einfaches Addressformular angelegt wird. Ein Addressformular besteht aus Textfeldern für Name, Vorname, Straße, PLZ, Ort, Land, Telefonnummer und e-Mail. Ort und Land sollen zur Eingabeerleichterung Wertelisten anbieten die voneinander abhängig sind, d.h. nach Auswahl eines Landes sollen beim Ort nur Orte des ausgewählten Landes angeboten werden.
Das Feld Telefonnummer soll darauf verifiziert werden ob nur Nummern eingegeben wurden. Dafür wird die Standardverifizierung NUMBER verwendet. E-Mail Addressen sollen auf die Syntax name@domain.de verifiziert werden. Dazu wird eine eigene PL/SQL Funktion geschrieben die das übernimmt.
Die Eingaben des Addressformulars sollen von einem Formular-Treiber an den zentralen Webmaster gemailt werden.
Die internen Formularfelder und ihre Label
Label Name (intern) Vorname p_vorname_text Nachname p_nachname_text Land p_land_select PLZ p_plz_text Ort p_ort_select Telefon p_telefon_text p_email_text Abbildung 3 - Formularinformationen Die Elemente können dann im Editor eingefügt werden. Ihre Reihenfolge sowie auch die einzelnen Attribute lassen sich nachträglich verändern.
Die Elemente und ihre Attribute
VORNAME NAME p_vorname_text LABEL Vorname SIZE 80 REQUIRED aktiviert
NACHNAME NAME p_nachname_text LABEL Nachname SIZE 80 REQUIRED aktiviert
LAND NAME p_land_select LABEL Land SIZE 1 SQL in Option select distinct nation_langtext NAME, nation VALUE
from w_nation order by nation_langtextSELECTED Deutschland FREE True REQUIRED aktiviert
PLZ NAME p_plz_text LABEL PLZ SIZE 6 REQUIRED aktiviert
ORT NAME p_ort_select LABEL Ort SIZE 1 SQL in Option select distinct stadt NAME, stadt_int_id VALUE
from w_stadt_int where nation = '${p_land_select}'
order by stadtFREE True REQUIRED aktiviert
TELEFON NAME p_telefon_text LABEL Telefon SIZE 20 VALIDATE NUMBER REQUIRED aktiviert
NAME p_email_text LABEL SIZE 40 VALIDATE my_validation.check_email (
i_value => '${VALUE}',
i_form_container_id => ${FORM_CONTAINER_ID},
i_lang => '${LANG}',
i_element_id => ${ELEMENT_ID},
i_format => '${FORMAT}')FORMAT name@domain.de REQUIRED aktiviert
Das Addressformular im Editor
Adressformular
Formular bearbeitenKopieren | Löschen | XML-Quelltext | XML-Import | Formular testen | Liste der Formulare
Form-ID: 1103154 Unterformular zu: kein übergeordnetes Formular Formularname: Adressformular Beschreibung: Beispielformular aus der Quicktour
TEXT Element bearbeiten | kopieren | löschen
NAME p_vorname_text SIZE 80 LABEL Vorname REQUIRED TRUE
Element einfügen: Textfeld | Textarea | Checkbox | Select | Radiobutton | Liste
TEXT Element bearbeiten | kopieren | löschen
NAME p_nachname_text SIZE 80 LABEL Nachname REQUIRED TRUE
Element einfügen: Textfeld | Textarea | Checkbox | Select | Radiobutton | Liste
SELECT Element bearbeiten | kopieren | löschen
NAME p_land_select SIZE 1 FREE TRUE LABEL Land REQUIRED TRUE
OPTION Element bearbeiten | kopieren | löschen
NAME p_land_option VALUE default SQL select distinct nation_langtext NAME, nation (...)
Element einfügen: Option
Element einfügen: Textfeld | Textarea | Checkbox | Select | Radiobutton | Liste
TEXT Element bearbeiten | kopieren | löschen
NAME p_plz_text SIZE 6 LABEL PLZ REQUIRED TRUE
Element einfügen: Textfeld | Textarea | Checkbox | Select | Radiobutton | Liste
SELECT Element bearbeiten | kopieren | löschen
NAME p_ort_select SIZE 1 FREE TRUE LABEL Ort REQUIRED TRUE
OPTION Element bearbeiten | kopieren | löschen
NAME p_ort_option VALUE default SQL select distinct stadt NAME, stadt_int_id VALU (...)
Element einfügen: Option
Element einfügen: Textfeld | Textarea | Checkbox | Select | Radiobutton | Liste
TEXT Element bearbeiten | kopieren | löschen
NAME p_telefon_text SIZE 20 LABEL Telefon VALIDATE NUMBER REQUIRED FALSE
Element einfügen: Textfeld | Textarea | Checkbox | Select | Radiobutton | Liste
TEXT Element bearbeiten | kopieren | löschen
NAME p_email_text SIZE 20 LABEL VALIDATE my_validation.check_email (i_value => '${VALU (...) FORMAT name@domain.de REQUIRED FALSE
Element einfügen: Textfeld | Textarea | Checkbox | Select | Radiobutton | Liste
Abbildung 4 - Adressformular im Editor
Die Validierungsprozedur check_email
Der Aufruf für die Validierungsprozedur im Attribut VALIDATION lautet:
my_validation.check_email (
i_value => '${VALUE}',
i_form_container_id => ${FORM_CONTAINER_ID},
i_lang => '${LANG}',
i_element_id => ${ELEMENT_ID},
i_format => '${FORMAT}')Abbildung 5 - Prozeduraufruf für Validierung
Dieser Aufruf wird in einer einzigen Zeile eingegeben. Er ist hier nur der Übersicht halber mehrzeilig und formatiert dargestellt. Wichtig sind die ' ' um String-Variablen. Für PL/SQL-Programmierer sei der Hinweis gegeben, dass der Prozeduraufruf hier nicht mit einem Semikolon (;) abgeschlossen wird.
Der Quelltext der Validierungsprozedur
Für die folgende und eventuell weitere eigene Validierungsprozeduren sollte ein einenes PL/SQL Package angelegt werden, z.B. wie im Aufruf oben das Package my_validation.
Zur Validierung einer e-Mail Adresse wird überprüft, ob die eingegebene Adresse nur ein @-Zeichen enthält und vor (pre_at) bzw. nach (post_at) dem @-Zeichen eine zulässige Kombination aus Buchstaben, Zahlen sowie den Sonderzeichen _ (Unterstrich) und . (Punkt) eingegeben wurde. Die Toplevel-Domain (.de, .com etc.) wird gegen eine Liste gültiger Toplevel-Domains (abgelegt in der Datenbank) gechecked.
Nachfolgend das Quelltext-Gerüst das in dieser Form für JEDE eigene Validierungsprozedur genutzt werden kann. Auf die Ausformulierung des Code wird an dieser Stelle verzichtet und anstelle dessen auf die Schulungen der Enterprise Web AG zu PL/SQL verwiesen.
PROCEDURE check_email (
-- Zu pruefender Wert
i_value IN VARCHAR2 DEFAULT NULL,
i_list_row IN NUMBER DEFAULT NULL,
-- Angaben zum Container
i_form_container_id IN NUMBER,
i_lang IN VARCHAR2 DEFAULT NULL,
-- Angaben Eingabeelement
i_element_id IN NUMBER,
i_format IN VARCHAR2 DEFAULT NULL)
IS
BEGIN-- Implementation
EXCEPTION
WHEN others THEN
IF i_lang = 'de' THEN
raise_application_error(-20815,'Fehlermeldung Deutsch');
ELSE
raise_application_error(-20815,'Error message english');
END IF;
END;Abbildung 6 - Quelltext-Gerüst für Validierungen
Der Formular-Treiber zum Adressformular
Der Inhalt des Formulars soll an eine e-Mail Adresse gemailt werden. Dazu wird der Formular-Treiber Adressformular-Treiber angelegt.
Dem Formular-Treiber wird als Formular, das er starten soll, das zuvor erstellte Adressformular zugewiesen. Eine Autorisierung bei diesem einfachen Beispielformular erfolgt ohne Anmeldung. Als Design, Layout und Triggerset können die im installierten Autorensystem vorhandenen zum Test genutzt werden. Als Spaltenaufeilung reicht für dieses kleine Formular eine Spalte mit Breite 600 Pixel aus. Die Sprache - deutsch oder englisch - hat in diesem Falle nur Auswirkungen auf die Fehlermeldungen die von den Validierungsprozeduren ausgegeben werden.
Von den Operationen Init, Submit und Delete wird nur Submit benötigt. Eine Initialisierung ist bei diesem Formular nicht notwendig, zum Löschen wird die Standardfunktion zum Löschen von Container-Inhalten verwendet.
Submit
Die vorgegebene Prozedur zum Versenden von e-Mails hat folgenden Aufruf:
wt_form_api.submit_handler_mail (
i_form_container_id => ${FORM_CONTAINER_ID},
i_from => 'webmaster@webag.com',
i_to => 'info@webag.de',
i_subject => 'Formular-Mail',
i_format => 'TEXT')Abbildung 7 - Prozeduraufruf SUBMIT für Formular-Treiber
Die Parameter i_from, i_to, i_subject und i_format können nach eigenen Bedürfnissen angepasst werden.
Das Adressformular im Test
Das Adressformular kann direkt aus dem Formular-Editor heraus getestet werden.
Abbildung 8 - Adressformular (Formular-Editor)
Sie werden aufgefordert, einen Formulartreiber auszuwählen, der das Formular steuern soll. Für das Formular muss also vor dem Test mindestens ein Treiber angelegt worden sein. Wenn Sie Formulartreiber bearbeiten, können Sie alternativ auch dort direkt einen Test des Treibers starten.
Die Integration in eigene Webseiten
Um das Adressformular auf einer Website aufzurufen wird die PL/SQL Prozedur wt_container_init mit der ID des Formular-Treibers aufgerufen. Die Prozedur überprüft eventuelle Berechtigungen, legt den bzw. die benötigten Container an und ruft das Formular mit den Einstellungen seines Treibers auf.
Der Aufruf erfolgt je nach Einstellungen der PL/SQL-Cartridge wie folgt und kann als Hyperlink eingegeben werden:
http://www.webag.de/pls/automat/wt_show_form.form_container_init?p_form_driver_id=xxxxx Abbildung 10 - Prozeduraufruf SUBMIT für Formular-Treiber
Die form_driver_id wird für jeden Formular-Treiber eindeutig vergeben. Sie kann in den Einstellungen des jeweiligen Formular-Treibers abgelesen werden.
Verarbeitung der Adressdaten aus dem Container
Die Adressdaten lassen sich aus dem XML-Container unter zur Hilfenahme des XML-Toolkits von Oracle einfach in ein relationales Datenbankschema transferieren. Die Enterprise Web AG realisiert solche Projekte im Rahmen von individuellen Schulungen auch gern vor Ort. Nehmen Sie Kontakt mit uns auf (support@webag.com) - wir freuen uns über Ihr Interesse!
WebAG Automat - Die ersten Schritte mit dem Formularsystem
Copyright (c) Enterprise Web AG.
Alle Rechte vorbehalten.