Skip to content

Latest commit

 

History

History
318 lines (236 loc) · 10.6 KB

Benutzerhandbuch.adoc

File metadata and controls

318 lines (236 loc) · 10.6 KB

DocumentationTree - Benutzerhandbuch

1. Allgemeines

1.1. Zweck und Struktur des Dokuments

Dieses Dokument beschreibt die Anwendung DocumentationTree. Die Anwendung wird als Bestandteil von Dokumentation von Datenbanken verwendet. Mit diesem Dokument soll der Leser in die Lage versetzt werden, - den Aufbau und die Aufgaben der Anwendung zu verstehen, - das System über die Benutzeroberfläche bedienen zu können, - im Falle eines Systemfehlers die geeigneten Maßnahmen ergreifen zu können.

2. Voraussetzung

Um die Anwendung starten zu können, wird mindestens Java-Version 13 vorausgesetzt. Da JavaFX seit Java-Version 9 nicht mehr Bestandteile des JREs ist, muss JavaFX zusätzlich heruntergeladen werden. Anschließend muss es entpackt werden und der Pfad muss im Skript start.bat oder start.sh angegeben werden.

3. Start

Die Anwendung kann mit einem (Doppel-)Klick auf eines der Skripte gestartet werden.

3.1. Unix

Skript zum Starten der Anwendung
link:../../start.sh[role=include]

3.2. Windows

Skript zum Starten der Anwendung
link:../../start.bat[role=include]

Beim Start erscheint folgender Dialog:

Startbildschirm

Über das Menü DateiÖffnen…​ kann eine Datei ausgewählt werden. Das Verzeichnis wird initial immer auf das Verzeichnis, in dem die Jar-Datei liegt, eingestellt.

Es ist eine Datei auszuwählen, die eine Lua-Table enthält, die über

return <table>

zurückgegeben wird.

3.3. Erläuterungen zum Aufbau einer Lua-Table für die Baumstruktur

Die hier gelesenen und geöffneten Lua-Dateien enthalten für die Knoten Texte, die in die Variablen branchname geschrieben werden, z.B. branchname="Knoten", und für die Äste, Text, das in Anführungsstriche, Hochkommata oder eckigen Klammern geschrieben steht, z.B. "Ast", 'Ast' oder . Die Verwendung der Textbegrenzungszeichen folgt der Logik in Lua. Variablen und Text werden durch Kommata "," abgegrenzt.

Knoten werden in geschweifte Klammern geschrieben, also {branchname="Knoten"}. Wenn ein Knoten in der Ebene unterhalb eines anderen Knotens erscheinen soll, wird dieser innerhalb der anderen geschweiften Klammer mit Komma abgetrennt geschrieben, z.B. {branchname="Knoten 1",{branchname="Knoten .1"}}. Soll der Knoten nicht in der Ebene unter dem anderen hängen, sondern auf derselben Ebene sein, wird er nach der geschweiften Klammer geschrieben, also {branchname="Knoten 1"},{branchname="Knoten 2"}.

Ein Ast, das an einem Knoten hängt, wird auch in die geschweiften Klammer geschrieben, {branchname="Knoten",'Ast'}.

Ein Knoten bzw. Ast muss mindestens in der obersten geschweiften Klammer erscheinen.

Die Variable auf oberster Ebene muss mit return zurückgegeben werden, hat aber einen frei wählbaren Namen.

Beispiel 1 LuaTable
example =
{branchname="Knoten oberste Ebene",
  {branchname="Knoten 1",
  {branchname="Knoten 1.1", 'Ast 1.1.1'},
  'Ast 1.1'
  },
  {branchname="Knoten 2", 'Ast 2.1'}
}

return example

Wenn Knoten bzw. Äste unterhalb eines Knotens beim Öffnen nicht sichtbar sein sollen und erst durch den Anwender sichtbar gemacht werden sollen, wird eine Variable state="COLLAPSED" eingefügt. Das Beispiel sieht dann wie folgt aus:

Beispiel 2 LuaTable
example =
{branchname="Knoten oberste Ebene",state="COLLAPSED",
  {branchname="Knoten 1",
  {branchname="Knoten 1.1", 'Ast 1.1.1'},
  'Ast 1.1'
  },
  {branchname="Knoten 2", 'Ast 2.1'}
}

return example

Kommentare können mit "--" eingefügt werden. Der Text bis zum Zeilenwechsel ist damit Kommentar. Es ist hilfreich die schließenden geschweiften Klammern mit Kommentaren der öffnenden geschweiften Klammern zu erklären. Man darf ein Komma auch nach der letzten Variable bzw. Text setzen.

Beispiel 3 LuaTable
example =
{branchname="Knoten oberste Ebene",state="COLLAPSED",
{branchname="Knoten 1",
{branchname="Knoten 1.1",
'Ast 1.1.1',
}, --{branchname="Knoten 1.1",
'Ast 1.1',
'Ast 1.2',
'Ast 1.3',
}, --{branchname="Knoten 1",
{branchname="Knoten 2",
'Ast 2.1',
}, --{branchname="Knoten 2",
{branchname="Knoten 3",
'Ast 3.1',
}, --{branchname="Knoten 3",
}

return example

Durch diese Darstellung ist es möglich, leicht Zeilen zu kopieren und den Überblick über die Verschachtelung zu behalten, ohne Einrückungen machen zu müssen.

3.4. Automatische Herstellung einer Lua-Table

Hier wird ein einfaches Beispiel anhand eines SAS-Skriptes dargestellt. Der Vorteil ist, dass die Informationen in Textdateien und nicht binär zur Verfügung stehen. Sie können damit mit einer Skriptsprache ausgewertet werten. Weil Lua eine sehr einfache Skriptsprache ist, wird hier ein Beispiel in Lua vorgestellt.

Ein Programm C:\Temp\githubPGM.sas mit folgendem Inhalt wird in SAS ausgeführt.

Beispiel 4.1 C:\Temp\githubPGM.sas
Proc Lua; submit;
DocumentationTree='{branchname="Ein Beispiel-Programm", state ="COLLAPSED",'
endsubmit;
run;

Data Test;
Input Zahl1 Zahl2 Text1 $ Text2 $;
Datalines;
1 2 a b
2 3 c d
;
run;

Data Test1;
set Test;
where Zahl1=1;
run;

Proc Lua; submit;
DocumentationTree='}, --{branchname="Ein Beispiel-Programm",'
endsubmit;
run;

Das Ergebnis sind die SAS-Tabellen Test und Test1. Die Information über die Verarbeitung, die im Documentation Tree als Baum dargestellt werden kann, ist in dem SAS-Log enthalten. Die Proc Lua-Schritte werden benutzt, um zusätzliche Informationen zu den normalen SAS-Log-Informationen zu schreiben. Insbesondere, wenn eine Serververarbeitung erfolgt, können damit zusätzliche Rückmeldungen erzeugt werden.

Das SAS-Log speichere man in eine Textdatei, z.B. C:\Temp\githubPGM_SAS_Log.txt.

Beispiel 4.2 C:\Temp\githubPGM_SAS_Log.txt
23
24
25   Proc Lua; submit;
26   DocumentationTree='{branchname="Ein Beispiel-Programm", state ="COLLAPSED",'
27   endsubmit;
28   run;

NOTE: Lua initialized.
NOTE: PROCEDURE LUA used (Total process time):
      real time           0.32 seconds
      cpu time            0.06 seconds


29
30   Data Test;
31   Input Zahl1 Zahl2 Text1 $ Text2 $;
32   Datalines;

NOTE: The data set WORK.TEST has 2 observations and 4 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.01 seconds


35   ;
36   run;
37
38   Data Test1;
39   set Test;
40   where Zahl1=1;
41   run;

NOTE: There were 1 observations read from the data set WORK.TEST.
      WHERE Zahl1=1;
NOTE: The data set WORK.TEST1 has 1 observations and 4 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.03 seconds


42
43   Proc Lua; submit;
44   DocumentationTree='}, --{branchname="Ein Beispiel-Programm",'
45   endsubmit;
46   run;

NOTE: Resuming Lua state from previous PROC LUA invocation.
NOTE: PROCEDURE LUA used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds

Mit einem Lua-Skript (C:\Temp\githubPGM_Lua_Skript.lua) kann der Inhalt des SAS-Logs ausgewertet und ein Ergebnis ausgegeben werden, das die Lua-Table für den Baum im Documentation Tree liefert.

Beispiel 4.3 C:\Temp\githubPGM_Lua_Skript.lua
for Zeile in io.lines("C:\\Temp\\githubPGM_SAS_Log.txt") do
if Zeile:match("DocumentationTree='.*'") then
print(Zeile:match("DocumentationTree='(.*)'"))
elseif Zeile:match("Input .*;") then
print('{branchname="' .. Zeile:match("Input .*;") .. '",')
elseif Zeile:match("There were %d+ observations read from the data set .*%..*.") then
print('{branchname="' .. Zeile:match("There were %d+ observations read from the data set .*%..*.") .. '",')
elseif Zeile:match("The data set .*%..* has %d+ observations and %d+ variables.") then
print("'" .. Zeile:match("The data set .*%..* has %d+ observations and %d+ variables.") .. "'},")
end --if Zeile:match("DocumentationTree='.*'") then
end --for Zeile in io.lines("c:\\temp\\githubPGM_SAS_Log.txt") do

Das Ergebnis wird hier in der Konsole ausgegeben.

Beispiel 4.4 Konsole
{branchname="Ein Beispiel-Programm", state ="COLLAPSED",
{branchname="Input Zahl1 Zahl2 Text1 $ Text2 $;",
'The data set WORK.TEST has 2 observations and 4 variables.'},
{branchname="There were 1 observations read from the data set WORK.TEST.",
'The data set WORK.TEST1 has 1 observations and 4 variables.'},
}, --{branchname="Ein Beispiel-Programm",

Kopiert man dieses in eine Datei C:\Temp\githubPGM_Lua_Skript_Baum.lua, kann man diesen Baum mit der Jar-Datei des Documentation Tree starten und darstellen.

Beispiel 4.5 C:\Temp\githubPGM_Lua_Skript_Baum.lua
example={branchname= "Baumstruktur für Input-Output-Beziehungen in SAS",

{branchname="Ein Beispiel-Programm", state ="COLLAPSED",
{branchname="Input Zahl1 Zahl2 Text1 $ Text2 $;",
'The data set WORK.TEST has 2 observations and 4 variables.'},
{branchname="There were 1 observations read from the data set WORK.TEST.",
'The data set WORK.TEST1 has 1 observations and 4 variables.'},
}, --{branchname="Ein Beispiel-Programm",

} --{branchname= "Baumstruktur für Input-Output-Beziehungen in SAS",
return example

Eine Mischung von automatisch und manuell erstellen Baumteilen ist jederzeit möglich, so dass der Anwender die volle Kontrolle über die Darstellung hat.

4. Darstellung

4.1. Datei öffnen

Kann die Datei gelesen und geöffnet werden, wird der Inhalt der Datei wie folgt angezeigt:

Anzeige der Daten aus einer Lua-Table-Datei

4.2. Knoten markieren

Beim Klick auf den Button "Markieren" werden Knoten nach folgenden Regeln gefärbt:name: value

  1. Der ausgewählte Knoten wird in blau gefärbt.

  2. Knoten, deren Text mit dem des ausgewählten Knoten identisch sind, werden blau gefärbt.

  3. Knoten über dem ausgewählten Knoten werden rot gefärbt; Knoten über den Knoten von 2. werden grau gefärbt.

  4. Knoten unter dem ausgewählten Knoten werden grün gefärbt.

  5. Knoten, die mit den Knoten unter 4. identisch sind, werden ebenfalls grün markiert.

Ein Knoten kann selektiert werden, ohne dass die Markierungen aufgehoben werden; dieser wird in gelb hervorgehoben.

Gefärbte Knoten
Gefärbte Knoten mit Unterknoten

Durch einen Klick auf den Button "Markierung zurücksetzen" werden alle gefärbten Knoten in ihren Ursprungszustand zurückgesetzt.