MAL-Homepage
Inhaltsverzeichnis
MAL Dokumentation: Folder
1. EINLEITUNG
Faktisch sämtliche im MAL-System vorhandenen Worte, die nicht
Teil des Kernels sind, sind in Foldern abgespeichert.
Folder sind disk-residente Tabellen
(im Datenbank-Jargon auch als Relationen bezeichnet). Es gibt
zwei Systeme von Foldern (auch "Folder-Folder" bezeichnet):
Public-Foldersystem
Das Public-Foldersystem ist im Public-Pool gespeichert
(Dateien 'public.pl' und 'public.ix') und kann mit dem Wort
unser
geöffnet werden.
Private-Foldersystem
Das Private-Foldersystem ist im Private-Pool gespeichert
(Dateien 'private.pl' und 'private.ix') und kann mit dem Wort
mein
geöffnet werden.
MAL-Homepage Inhaltsverzeichnis
1.1. Vokabulars-Folder
Obwohl Folder für verschiedenste Zwecke verwendet werden
können, sind sie doch bisher hauptsächlich für die
Speicherung und Verwaltung von MAL-Worten in Verwendung.
Alle derartigen Folder habe die gleichen Attribute
(Tabellenspalten) und werden auch als "Vokabulars-Folder"
bezeichnet, weil ihre Daten auf einfache Weise ins
Vokabular
geladen werden können.
Vokabularsfolder haben immer folgende Attribute:
insert
Bei Aufruf des Menüpunktes insert wird zunächst ein
Menü für die Auswahl der Datenart des neuen Eintrags
angezeigt.
Je nach Datenart ist in der Folge der Helptext
bzw. eine Maske mit dem Namen und der
Themenzugehörigkeit (Topic) des neuen Wortes auszufüllen.
submenu
Das Submenu dient hauptsächlich für den Datenexport und
-import (es wurde eingerichtet, um das Hauptmenü nicht zu
überfüllen). Mit dem Menüpunkt export werden alle Einträge,
die in der ganz rechten Spalte mit '+' markiert sind
auf eine Metadatei exportiert und können in der Folge
mit dem Menüpunkt insert (auch in einen anderen Folder)
eintransferiert werden. Es ist dies die einzig korrekte
Möglichkeit, Folder-Einträge von einem Vokabulars-Folder
in einen anderen zu kopieren! Details zum Export und Import
sind im Kapitel
Logbook-Verwaltung zu finden.
Der Menüpunkt Copy legt eine Kopie des gerade markierten
Eintrags im gleichen Folder an. Er erhält einen neuen
Namen und eine neue Identifikation.
MAL-Homepage Inhaltsverzeichnis
1.2. Bedienung der Folder-Folder
Nach dem Öffnen eines Folder-Folders mit dem Wort
public oder
mein erscheint etwa
folgender Browser:
insert
Für das Einrichten eines neuen Folders sind mehrere
Arbeitsschritte erforderlich:
Soll der neue Folder eine
Partnerdirectory erhalten, so sind
darüber hinaus noch folgende Schritte durchzuführen:
MAL-Homepage Inhaltsverzeichnis
2. ADMINISTRATION
Unter Administration wird die Konfiguration eines Folders
verstanden. Das betrifft hauptsächlich die Anzahl und Art
der Attribute (Tabellenspalten) aber auch die Eingabemaske
und ähnliches.
Das Administrationsmenü hat folgende Punkte:
attributes
Bearbeiten der Attributliste:
Der Menüpunkt attributes öffnet eine Tabelle mit den Attributen
und ihren Eigenschaften. Mit ? können die Eigenschaften
eines Attributes abgefragt werden, mit insert wird ein
neues Attribut eingerichtet und mit modify können die
die Eigenschaften eines bereits bestehenden Attributes
verändert werden.
In allen drei Fällen erscheint folgende Maske
deren Parameter wie folgt zu verstehen sind:
Auswahllisten und Eingabeüberprüfung:
Mit den Menüpunkten list und checks können Auswahllisten
oder Eingabeüberprüfungen für Attribute vom Typ 'text' oder
'num' festgelegt werden. list öffnet eine Tabelle, in die
Auswahlwerte eingetragen werden können. checks öffnet folgende Maske:
Für die Werte von Field-Type stehen folgende Auswahlmöglichkeiten
zur Verfügung:
Zu beachten ist, dass die Auswahllisten und Eingabeüberprüfungen
nur dann ausgewertet werden, wenn für Schreibzugriffe auf den
Folder die Worte standard_schreiben
bzw. standard_aendern
verwendet werden.
MAL-Homepage Inhaltsverzeichnis
3. DEFINITION
Die Bezeichnung "Folder" wird in den Beschreibungen in zweierlei Zusammenhang verwendet:
private \ folderdir \ startup_folder >voc FO_admin
MAL-Homepage Inhaltsverzeichnis
4. PARTNER-DIRECTORIES
Der Hauptzweck von Foldern ist die Verwaltung von MAL-Worten
oder Datensätzen. Sie erleichtern die Dokumentation, Entwicklung
und Wartung von MAL-Code. Dies erfordert zu jedem MAL-Wort
einige Zusatzinformation für den Benutzer (z.B. Helptext usw.).
Für den Aufruf der MAL-Worte von Programmen aus sind diese
Zusatzinformationen unnötiger Balast. Es ist daher naheliegend,
eine zweite Adressierstruktur zu haben, von der aus die Worte
direkt anprechbar sind. Diese nennt sich Directorystruktur.
MAL-Homepage Inhaltsverzeichnis
5. WORTE FÜR DIE FOLDERBEARBEITUNG 5.1. Allgemeines
Worte für Folderzugriffe beginnen stets mit der Zeichenfolge 'FO_'.
Einige dieser Worte finden auch bei der vorhin beschriebenen
Bedienoberfläche Verwendung.
Eine komplette Auflistung aller zum Bereich Folder gehörigen
Worte kann unter dem Topic folders
gefunden werden.
Die Klasse voc_pool_class
bietet eine einfache Möglichkeit, einen
Folder in einem eigenen Pool einzurichten. Man sollte aber davon nur
Gebrauch machen, wenn absehbar ist, dass die im Folder gespeicherten
Daten nur von lokaler Bedeutung sind. Besteht die Aussicht, dass sie
Bestandteil des MAL-Systems werden sollen, so sollten sie im Public-
oder Private-Pool untegebracht werden. (Man bedenke in diesem Zusammenhang,
dass beim Verschieben von Daten von einem Pool in einem anderen auch
alle Poolverweise zu korrigieren sind!).
Aus Gründen der Übersichtlichkeit wird bei den 'FO_'-Worten vorausgesetzt, daß
der Folder mit dem Wort >voc
ins Vokabular geladen wurde. D.h. die Datensätze
'FO_attribute', 'FO_maske' usw. müssen als Variablen existieren u
nd werden nicht am Stack übergeben.
Man kann sich diese Methode als ein Öffnen des Folders vorstellen
(dass der Pool
in dem sich der Folder befindet geöffnet sein muss
wird vorausgesetzt).
Alle 'FO_'-Worte greifen dann auf den zuletzt geöffneten Folder zu. Für
Mehrfach-Öffnungen kann man das Black-Box-Prinzip der Doppelpunktdefinitionen nützen.
Beispiel:
Umspeichern aller Einträge aus destandardlistem Public-Startup-Folder in den Private-Startup-Folder:
: umspeichern
: kopieren >> objekt
objekt FO_read
( privaten Folder öffnen)
private \ folderdir \ startup_folder >voc
FO_write ;
( öffentlichen Folder öffnen)
public \ folderdir \ startup_folder >voc
FO_daten each kopieren ;
MAL-Homepage Inhaltsverzeichnis
5.2. Einrichten eines Folders
Bezüglich des Einrichtens eines neuen Folders im Public-
oder Private-Pool siehe
Bedienung der Folder-Folder.
Ein neuer Folder wird mit FO_create
eingerichtet. Er wird sofort in einen
Pool gespeichert. Als Ergebnis wird ein Poolverweis
auf den Folder
übergeben. Der neue Folder hat keine Attribute.
Die Struktur kann mit FO_admin
festgelegt werden.
Syntax von FO_create: poolname -> fo
Syntax von FO_admin: ->
"priv" FO_create >> neufolder neufolder >voc FO_adminFür das Merken des Poolverweises auf den neuen Folder ist der Anwender selbst verantwortlich. Z.B. könnte mit cool neufolder . der Poolverweis ermittelt werden und dann mit
: neufolder 37 "priv" poolentry ;nach dem Neustart von MAL wieder rekonstruiert werden (angenommen 37 war die Eintragsummer von 'neufolder').
MAL-Homepage Inhaltsverzeichnis
5.3. Die wichtigsten 'FO'-Worte
private \ foldedir \ startup_folder >voc [ "schreiben" "standard_schreiben" "lesen" "standard_lesen" ] FO_browseDie Worte
MAL-Homepage Inhaltsverzeichnis
6. LOGBOOK-VERWALTUNG
Die Logbook-Verwaltung dient zur Koordinierung der
Programmentwicklung auf mehreren Maschinen und/oder
von mehreren Programmierern. Die wesentlichsten Ziele
beim Entwurf der Logbook-Verwaltung waren:
MAL-Homepage Inhaltsverzeichnis
6.1. Vorgangsweise
Alle der Logbool-Verwaltung unterstellten Daten
('Daten' kann bedeuten: MAL-Code, C++Code, MAL-Stackeinträge usw. )
sind in logisch zusammengehörige Teile, sog. Objekte
(=Folder-Eintrag) unterteilt.
Ein Objekt kann z.B. eine Doppelpunktdefinition, ein Sourcefile
oder ein MAL-Datensatz sein.
Jedes Objekt besitzt eine eindeutige Identifikation
(identifier)
und ein Notitzbuch (logbook). Nach
jeder Änderung an einem Objekt muß ein Eintrag im Logbook
gemacht werden, in dem die Änderung kurz beschrieben wird.
Beim Eintransfer eines Objekts in einen Folder (import)
wird zuerst überprüft, ob ein Objekt mit gleicher Identifikation existiert.
Wenn nicht, wird das Objekt übernommen. Andernfalls werden die
Notizbücher verglichen und folgendermaßen vorgegangen:
MAL-Homepage Inhaltsverzeichnis
6.2. Eigenschaften
Die Logbook-Verwaltung bewirkt eine komplette Dokumentation
aller Änderungen im System. Es liegt im Interesse des
Programmierers, seine Änderungen zu dokumentieren,
da sie sonst bei Kopiervorgängen wieder verloren gehen
können.
Die Vermeidung von Sperren wird erkauft, indem auf eine
Vollautomatisierung der Versionsverwaltung verzichtet wird.
Der Konfliktfall kann nur manuell behoben werden, indem
aus zwei Objekten eines mit den Änderungen beider
editiert wird.
Im Gegensatz zu Verfahren mit Zugriffssperren verhindert
dieses Verfahren nicht die Verästelung in verschiedene Versionen.
Der Konfliktfall kann ja nur auftreten, wenn verschiedene Äste
wieder zusammengeführt werden sollen. Zugriffssperren beugen
diesem Fall vor, die Logbook-Verwaltung zeigt ihn auf, wenn
er tatsächlich eintritt.
Unter der Annahme, daß die verschiedenen Programmierer
unterschiedliche Schwerpunkte bearbeiten, kann bei einer
Aufteilung der Gesamtdaten in entsprechend viele Objekte
ohnehin damit gerechnet werden, daß Konfliktfälle nur selten
auftreten. Außerdem müssen Konfliktfälle nicht gelöst werden,
wenn sie auftreten, sondern erst dann wenn man wirklich von
einem Objekt eine Version benötigt, die alle Änderungen in
sich vereint.
Die Logbook-Verwaltung erfordert daher nicht, daß zu jedem
Zeitpunkt auf allen Anlagen idente Versionen vorhanden sind,
sondern unterstützt individuelle Lösungen, die im Bedarfsfall zu
einer Übermenge zusammengeführt werden können.
MAL-Homepage Inhaltsverzeichnis
6.3. Identifikationen
Jedes MAL-System hat im 'auto.cpu' File eine Definition cpu_id,
die einen zwei bis vier Zeichen langen, für die Maschine kennzeichnenden,
String definiert.
Außerdem existiert im Startup-Folder eine Variable
laufende_nummer.
Die Identifikation ist ein String, bestehend aus
der 'cpu_id' gefolgt von der Laufenden-Nummer.
Mit dem Wort identifier>
wird die letzte gültige Identifikation
am Stack übergeben, identifier++
incrementiert die Laufende Nummer.
Wann immer in einen Folder mit insert ein neues
Objekt eingefügt wird, erhält es eine neue, über alle Anlagen
hinweg eindeutige Identifikation.
MAL-Homepage Inhaltsverzeichnis
6.4. Bedienung
Logbook-Verwaltungen existieren für alle Vokabularsfolder.
Logbook bearbeiten:
Während dem Blättern in einem Folder kann das Logbook
für jenes Objekt, auf das der Cursor zeigt mit dem Menüpunkt
logbook aufgerufen werden. Man kann dann mit
einer Blätterfunktion in den Einträgen des Logbooks blättern,
mit edit einen Eintrag editieren oder lesen, mit
insert einen neuen Eintrag machen mit modify
einen bestehenden modifizieren und mit delete einen löschen.
Zu beachten ist, daß jeder Logbookeintrag eine
Identifikation bekommt, wenn er mit insert erzeugt wird.
Das Löschen eines Logbook-Eintrages und neu Einfügen hat somit
andere Bedeutung, als wenn man einen bestehenden Eintrag editiert.
Transfers:
Der Austransfer von Objekten geschieht mit dem
Menüpunkt export im Submenue des
Folders. Dabei werden alle jene Objekte, die mit '+' markiert
sind (im Attribut 'selected?') im Metaformat auf Datei geschrieben.
Existiert im Folder kein Attribut 'selected?', so werden alle Objekte exportiert.
Der Eintransfer wird mit dem Menüpunkt import,
ebenfalls im Submenue, durchgeführt. Hat das
gelesene Objekt kein Logbook oder keine Identifikation
(z.B. weil es von einem alten MAL-System übernommen wurde), dann
wird eine Identifikation vergeben und ein leeres Logbook eingerichtet.
Zum Abschluß des Eintransfers erscheint ein Menü, das anzeigt
wie viele widersprechende Objekte gefunden wurden und die
Möglichkeit offen läßt, diese oder die korrespondierenden zu
editieren. Nach dem Editieren wird erneut verglichen.
Im Editiermodus wird zwischen den neu eintransferierten
Objekten ('import') und den korrespondierenden im Folder
('target') unterschieden. Man kann per Menü zwischen beiden
Logbooks und beiden Codes hin- und herschalten.
import und export funktionieren auch
bei Foldern ohne Logbook-Verwaltung.
Im Konfliktfall:
Tritt beim Datenimport bei ein oder mehreren Objekten
ein Konfliktfall auf, so erscheint folgendes Menü:
MAL-Homepage Inhaltsverzeichnis
7. INTERNES
Die Codes für die Zugriffsbefehle FO_write und
FO_modify werden vom Wort
FO_generate_codes)
generiert.
Dieses wird von
FO_admin aufgerufen,
nachdem die Attributliste bearbeitet wurde.
Die Generierung bezieht sich auf die Merkmale der
Attribute, wie sie in 'FO_attribute' gefunden werden.
'FO_attribute' ist ein Verbund mit jeweils einem Eintrag
für ein Attribut. Jeder Eintrag enthält die Daten:
MAL-Homepage Inhaltsverzeichnis
8. PERFORMANCE-TEST
Die Geschwindigkeit der Schreib- und Lesezugriffe eines
Folder mit der Struktur eines
Mess-Archivs wurde in
Anhängigkeit von der Eintragsanzahl ermittelt.
Die Werte wurden auf einer Anlage mit folgenden Eigenschaften
gemessen:
Betriebssystem:
Windows 2000 (5.00.2195), Service Pack 2
Intel Pentium 4 1.70 GHz
261,552 Kb RAM
Harddisk: WDC WD200BB-60CVB0
Jeder Testeintrag hat folgende Attribute:
"Test" >> Vorname "1234" >> Sozialversicherungsnummer "56" >> Gewicht "1.73" >> Körpergröße "M" >> Geschlecht "0" >> Zimmernummer "Stefan" >> Bearbeiter "test" >> Projekt "keine" >> Diagnose "" >> Kommentar "test" >> Messkategorie systemtime>string >> Uhrzeit >> Datum "12345" >> identification "-" >> selected? "" >> Anforderungs_id [ ] >> logbook [ ] >> messinstanzen
MAL-Homepage Inhaltsverzeichnis