WebAG Automat

Formularsystem

webag_logo.jpg (2199 Byte)

Die ersten Schritte

Das Formularsystem des WebAG Automat

Der 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
e-Mail 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_langtext
SELECTED 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 stadt
FREE True
REQUIRED aktiviert

 

TELEFON
NAME p_telefon_text
LABEL Telefon
SIZE 20
VALIDATE NUMBER
REQUIRED aktiviert

 

EMAIL
NAME p_email_text
LABEL e-Mail
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 bearbeiten

Kopieren | 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 down up

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 down up

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 down up

NAME p_land_select
SIZE 1
FREE TRUE
LABEL Land
REQUIRED TRUE

OPTION

Element bearbeiten | kopieren | löschen down up

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 down up

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 down up

NAME p_ort_select
SIZE 1
FREE TRUE
LABEL Ort
REQUIRED TRUE

OPTION

Element bearbeiten | kopieren | löschen down up

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 down up

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 down up

NAME p_email_text
SIZE 20
LABEL e-Mail
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. 

quicktour_form_test1.gif (11570 Byte)

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.