Das Paket DVIEW

Die grundlegenden WEB-Kommandos sind bereits in einem eigenen Handbuch beschrieben. In diesem Dokument wird speziell auf das DVIEW-Paket eingegangen, das zur schnellen Erstellung von Datensichten im Web gedacht ist und als wesentliche Erweiterung für das WEB-Paket zu sehen ist.
Mit DVIEW können schnell und ohne großen Aufwand tabellenbasierte Übersichten und Oberflächen erstellt werden. Dieses Paket ermöglicht es, die auszugebende Tabelle mittels XML-Datei zu beschreiben und zu definieren.
Da DVIEW nicht mit einem separaten web-apps Verzeichnis installiert wird, ist es nicht möglich einzelne URLs direkt aufzurufen. Es wird hier dazu geraten das Paket DWA zu verwenden, muss aber nicht zwingend mit diesem verwendet werden.

Architektur und Ablauf

In nachfolgender Abbildung sind die wesentlichen Komponenten und deren Zusammenspiel beschrieben. Auf dem DLEServer muss das DVIEW-Framework als DLE-Paket vorhanden sein. Zudem muss ein Web-Projekt deployed sein, das als Einstiegspunkt für die Webapplikation dient.

Über dieses Webprojekt kann vom Browser eine Webübersicht angefordert werden [1]. Der entsprechende Controller (Einstiegspunkt in die Webanwendung) nimmt die Anfrage entgegen und delegiert den Aufruf an das DVIEW-Framework weiter [2]. Nun wird von DVIEW die XML-Definition für den Aufbau der Webübersicht aus den Paket-Resourcen geladen [3]. In der XML-Beschreibung ist auch die Datenquelle hinterlegt, aus der die Daten gelesen werden sollen – die Daten können auch in einer anderen Datenbank liegen. DVIEW liest die Daten aus der entsprechenden Datenbank aus [4], generiert auf Basis der XML-Definition und der Daten einen HTML-Code und sendet diesen an den Browser zurück [5], der die Webübersicht am Bildschirm darstellt.

Terminologie und Anwendung

Terminologie

DVIEWDynamic View
GridTabelle
ViewÜbersicht/Oberfläche

 

Anwendung

Die Verwendung von DVIEW erfolgt in zwei Schritten. Zunächst muss die anzuzeigende Tabelle definiert werden. Dann kann das Framework über einen Brick aufgerufen werden.

DVIEW definieren

Um eine Übersicht mit DVIEW in einer Webseite darzustellen muss zunächst eine XML-Beschreibung für diese Übersicht definiert und diese der DLE bereitgestellt werden. Die Definition solch einer Übersicht wird in nachfolgenden Kapiteln im Detail erläutert. Wurde eine XML-Beschreibung erstellt muss diese dann als Paket-Resource der DLE hinzugefügt gemacht werden.

DVIEW aufrufen

Üblicherweise wird für den Webeinstieg ein Controller-Brick (entsprechend dem Frontcontroller-Pattern) definiert. Dieser Controller-Brick ist der zentrale Einstiegspunkt für Webaufrufe und übernimmt für gewöhnlich zentrale Aufgaben wie z.B. Security. Die eigentliche Steuerung der Funktionalität erfolgt dann über eine Entscheidungsgruppe mittels dieser die eigentlichen Aufgaben an Unterfunktionen oder andere Bricks delegiert werden (siehe nachfolgende Abbildung).

Auch DVIEW orientiert sich an diesem Muster. Bei sämtlichen Aufrufe die DVIEW betreffen beginnt der Servlet-Pfad daher mit /DView – das betrifft insbesondere auch http-Aufrufe die direkt aus dem DVIEW-Framework heraus erfolgen (ausführen von Aktionen, …).
Um eine DVIEW-Übersicht aufzurufen muss der Schlüssel der Paket-Resource bekannt sein (setzt sich zusammen aus Paket, Gruppe und Name) und dem globalen Feld DVIEW:REPIDC kodiert gesetzt werden (encode String) und zusätzlich GLOBAL:encryption auf “new“ gesetzt werden. Base 64 wird auch weiterhin unterstützt(GLOBAL:encryption auf “old“). Der Servletpfad für den Einstiegsbrick in DVIEW ist mit /DView/Grids.brick fest vorgegeben. Der gesamte Query String kann nun verschlüsselt an DVIEW gegeben werden (encrypt String – Base 64 wird hier nicht unterstützt)
Soll die Übersicht nicht in eine bestehende Webseite eingebettet werden sondern in einem eigenständigen HTML-Rahmen mit den erforderlichen DLE-relevanten JavaScript-Dateien dargestellt werden, muss zudem das globale Feld DVIEW:DIRECT_CALL auf true gesetzt werden.
Eine zusätzliche Variable DVIEW:DIRECT_CALL_FROM kann gesetzt und über die URL mitgegeben werden um die information mit zu bekommen woher man kommt.
Eine weitere Variable um die ID des Views zu steuern ist: DVIEW:SET_TABLE_ID. Wenn diese Variable gesetzt wurde wird die ID der Tabelle des Views dementsprechend abgeändert. Betroffen sind auch Icons im View.

DVIEW Helper-Bricks

Um Daten die in DVIEW dargestellt werden sollen, vor der Ausgabe bearbeiten zu können kann man verschiedene ”Helper-Bricks” definieren. In diesen Bricks (Siehe Ordner Samples) kann man die Ausgabe von Daten manipulieren.

PreRowBrick:

Dieser Brick wird vor der Ausgabe jeder Datenzeile aufgerufen. Somit kann man eine komplette Zeile oder individuelle Zellen manipulieren.

SelScreenBrick:

Dieser Brick ist dazu gedacht eine Vorauswahl zu einem View zu ermöglichen. In diesem Brick kann man ein Formular erstellen und dann eine Where-Clause definieren. Der Brick wird vor der Ausgabe der Tabelle aufgerufen.

ColumnFunctionBrick:

Der Brick manipuliert eine Spalte. Er wird vor Ausgabe jeder Zelle aufgerufen (Achtung: Resources intensiv). Hier kann man einzelne Ausgaben manipulieren.

DVIEW XML-Definition

DVIEW stellt auf Basis einer XML-Definition Übersichten dar. In einer XML Datei werden alle Charakteristiken eines Views bestimmt. Als Ausnahme ist dabei die Breite und Höhe eines Grids zu sehen, welche man mittels Variablen definieren kann. Mit DVIEW hat man die Möglichkeit neben dem Darstellen von Datensätzen aus einer Datenbank auch Daten in Form von Grafiken (z.B.: Balken) darzustellen. Eine Einfärbung des Hintergrunds und des Fonts ist ebenfalls möglich.

Die Views werden mittels XML-Datei festgelegt. Für jeden View werden je eine XML Datei angefertigt. Nachdem ein View erstellt wurde muss die XML Datei zu den Paketressourcen hinzugefügt werden. Im Ordner “resources/view“ findet man die aktuelle DVIEW XML Musterdatei, mit deren Hilfe man einfach und schnell eine Definition schreiben kann. 
Im DView-Element befinden sich 2 Abschnitte. Der erste Abschnitt, DViewHead, definiert den allgemeinen Teil der Übersicht. Im zweiten Abschnitt, DViewColumns, sind die Spalten definiert. Bitte nehmen Sie zum Verständnis die oben genannte Muster-XML-Datei her.

Eigene Gridfunktionen

Um eigene Funktionen zum Grid hinzuzufügen stehen einem die Parameter <gridDialogCustomFunctions> zur Verfügung. Dazu müssen die XML-Parameter wie folgt angegeben werden:

<gridDialogCustomFunction id="functionsid">
<customFunctionUI-Icon>ui-icon-play</customFunctionUI-Icon>
<customFunctionURL><![CDATA[DView/job_dialog.brick]]></customFunctionURL>
<customFunctionAction>action</customFunctionAction>
<customFunctionAdditionalURL><![CDATA[]]></customFunctionAdditionalURL>
<customFunctionTooltip><![CDATA[]]></customFunctionTooltip>
<customFunctionPosition><![CDATA[]]></customFunctionPosition>
<customFunctionActiveWhenLineSelected>false</customFunctionActiveWhenLineSelected>
</gridDialogCustomFunction>

  • ustomFunctionUI-Icon: Jedes Icon hat eine bestimmte Klasse. Man kann die Icons auch auf dieser Internetseite nachschauen. jqueryui.com/themeroller/
  • customFunctionURL: Die URL der Bricks der Aufgerufen werden soll wenn man das Symbol klickt.
  • customFunctionAction: Der wert der in der Variable DVIEW:action stehen soll.
  • customFunctionAdditionalURL: Hier kann man die URL erweitern.
  • customFunctionTooltip: Der Tooltip erscheint wenn ein Benutzer den Cursor über den Icon bewegt
  • customFunctionPosition: Die Position gegenüber den anderen Icons. (first, last)
  • customFunctionActiveWhenLineSelected: Wenn dieser Wert auf true gestellt wird, wird das Icon erst sichtbar wenn eine Zeile des Grids selektiert wurde. (true/false)

Detailansichten

Um Detailansichten oder “Subgrids“ zu Erstellen können folgende XML Elemente verwendet werden:

<details>
<detail id="xxx">
<detailCaption>XXXX</detailCaption>
<detailURL>xxx.xxx</detailURL>
<detailDViewId>XXX</detailDViewId>
<fields>
<field name="XXX:XXX">/$XXX:XXX</field>
<field name="XXX:XXX"><![CDATA[XXX = '/$GLOBAL:samplefield' and XXX like '%/$GLOBAL:sampleField%']]></field>
</fields>
</detail>
</details>

  • detail id="xxx": Die ID wird dazu verwendet dem Detail eine ID zu geben aber auch um die Tabulatoren im Fall dass mehr als ein Detail verwendet werden soll zu Beschriften.
  • detailCaption: Die Überschrift eines Details
  • detailURL: Hier kann man eine Webseite ode rein Bild einfügen. WebseitenBeispiel: www.vision-flow.at | BildBeispiel: html/Images/test.jpg
  • detailDViewId: Hier wird die id des Views benötigt. Sprich die PACKRES_IDC von den Packetresourcen.
  • field name="XXX:XXX: Hier kann man Felder setzen die dann so in der Detailansicht zur Verfügung stehen. Es macht Sinn hier die DVIEW:ADD_WHERE_CLAUSE zu setzen. Z.B.: <field name="DVIEW:ADD_WHERE_CLAUSE"><![CDATA[XXX = '$GLOBAL:samplefield' and XXX like '%$GLOBAL:sampleField%']]></field> sampleField ist in diesem Fall ein Spaltenname. Alle SpaltenWerte stehen so zur Verfügung. (GLOBAL:Spaltenname)

DViewColumns

Neben den Parametern, die den allgemeinen Teil der Tabelle betreffen gibt es zudem Parameter die die einzelnen Spalten näher beschreiben.
Um eine Ausrichtung der Spalten zu bewirken muss man den entsprechenden Parameter in der XML beschreiben <alignment>XXX</alignment> (left, right oder center).

Weitere Formatierungen sind mit den Parametern <styleCss>XXX </styleCss> bzw. <styleColor>XXX</styleColor> möglich.

Um dynamische Formatierungen zu machen kann man dies auch über Bricks erreichen. Dazu stehen grundsätzlich zwei Möglichkeiten zur Verfügung: <columnFunctionBrick>XXX|XXX</columnFunctionBrick> <preRowBrick>XXX|XXX</preRowBrick>

Felder

Neben der statischen XML-Beschreibung besteht auch die Möglichkeit die Tabelle dynamisch über DLE-Felder und DLE-Arrays aufzubauen oder zu erweitern bzw. deren Werte auszulesen. Im Nachfolgenden werden diese Felder näher beschrieben.

Additional Where Clause

Für jeden View kann über das DVIEW Feld ADD_WHERE_CLAUSE eine zusätzliche Where-Clause angelegt werden. Die verschlüsselte Variable (encode String) muss dann mittels URL (GET Parameter –DVIEW:ADD_WHERE_CLAUSE=Variable) weiter gegeben werden. Zusätzlich muss auch die Variable GLOBAL:encryption auf “new“ gesetzt werden. Base 64 wird weiterhin ebenfalls unterstützt.

Resource Variable

Das Feld mit der DVIEW weiß um welchen View sich der Request handelt, ist DVIEW:REPIDC . Der Inhalt dieser Variable muss der verschlüsselte Wert (“encode String“) aus dem Paketresourcen-Datenobjekt PACKRES_IDC sein und GLOBAL:encryption muss auf “new“ gesetzt werden. Die Base 64 Verschlüsselung wird auch weiterhin unterstützt.

Dialog Variable action

Das Feld DVIEW:action wird für Standardfunktionen automatisch befüllt, und für eigene Funktionen müssen die entsprechenden XML Felder gesetzt werden.

DVIEW als ganze HTML-Seite

Um DVIEW ohne Einbettung in eine bestehende Seite zu verwenden, muss eine Globale Variable an den Grids.brick mitgegeben werden. Das Feld heißt DVIEW:DIRECT_CALL und der Wert ist true. Somit weiß DVIEW, dass es von selbst eine HTML Seite zeichnen muss.

Dynamic Editing

Einleitung

Dynamic Editing ist eine DView Option die eingeschaltet werden kann. Mit dieser Option gibt es die Möglichkeit Daten anzulegen, zu bearbeiten, und zu löschen. Mit dieser Option sind Werte in der DVIEW Übersicht als editierbare HTML-Felder angezeigt.

Verschiedene HTML Input Felder können angezeigt werden, z.B. Datum(mit jQuery Datepicker), Textarea, Select, usw. In der DView XML-Definition müssen Spaltenoptionen definiert werden, z.B. Datentyp, Feldtyp, usw.

Daten Manipulieren

Die Datenbank Transaktionen werden nicht sofort ausgeführt. D.h. die Änderungen werden beobachtet und zuerst mit dem Speichern-Symbol ausgeführt.
Anlegen: Das  Symbol legt eine neue Zeile an.
Bearbeiten: Das Feld einfach bearbeiten.
Löschen: Das  Symbol löscht eine Zeile.
Speichern: Das  Symbol speichert alle Änderungen
Wenn es keine Änderungen zum Speichern gibt, wird das Speichern Symbol so angezeigt: 

Daten Speichern

In der DView XML-Definition ist der Speichern-Brick definiert. Hier muss definiert werden, was mit den Daten passieren soll bzw. wie sie abgespeichert werden sollen. Die Namenkonvention soll zusammenpassen mit der DView XML-Definition. D.h. wenn in der DView XML-Definition <column name="BEISPIEL_FELD"> für die ‚column name‘ Option definiert ist, dann wird in dem Speichern-Brick diese variable, $GLOBAL:BEISPIEL_FELD, heißen.