Lehrprojekt - Händler
Allgemein:
Der Händler ist in unserem Beispielszenario derjenige, der seine Ware
über ein öffentliches Netz vertreibt. Für Ihn ergeben sich
folgende Teilaufgaben:
-
Auf eine "Kataloganforderung" seinen aktuellen Katalog übermitteln.
Der Katalog enthält dabei eine Katalognummer, die Daten des Händlers
und natürlich den eigentlichen Katalog. Die Katalognummer kann der
Händler nutzen um z.B. mehrere Kataloge zu führen oder den Katalog
zu wechseln.
Mit Hilfe der Katalognummer, welche vom Kunden bei der Bestellung wieder
übermittelt wird kann der Händler die Konsistenz zwischen der
Bestellung und dem Katalog sicherstellen.
Die Daten des Händlers bestehen aus einem Namen (Pseudonym), der
IP-Adresse, an die die weiteren Anfragen gerichtet werden und dem dazugehörigen
Port.
Der Katalog enthält signifikante Daten über die Waren, welche
dem Kunden Informationen über jedes einzelne Produkt geben. Für
die Transaktionen werden daraus aus den Daten die Informationen über
Preis und ID der Ware verwendet. Über diese beiden Eigenschaften wird
zwischen Kunde, Treuhänder und Händler die Konsistenz einer Bestellung
bzw. der dazugehörigen Lieferung sichergestellt. Dies bezieht sich
im einzelnen auf die Einzel-Preise und deren Summe, sowie die bestellten
und gelieferten Waren (Anzahl).
-
Der nächste logische Schritt ist die "Bestellung". Eine Bestellung
kommt grundsätzlich von einem Treuhänder und enthält folgende
Informationen: Daten des Treuhänders, Daten des Händlers, die
Katalognummer, eine Bestell-ID, die eigentliche Bestellung und den Gesamt-Preis.
Die Daten des Treuhänders sind öffentlich und enthalten die
Anschrift (Name, Adresse, Telefon), sowie IP-Adresse und Port.
Die Daten des Händlers entsprechen den Daten des Händlers
aus dem Katalog.
Die Bestell-ID wird vom Treuhänder generiert und wird dazu verwendet,
die einzelnen Transaktionsschritte einander zuordnen zu können.
Die Bestellung enthält eine Menge von Paaren der Art (Waren-ID,
Preis).
Der Gesamtpreis entspricht dem Gesamtwert der Bestellung.
-
Die "Lieferung" zu einer Bestellung geht vom Händler an den
Treuhänder. Sie enthält die Daten des Händlers, Daten des
Treuhänders, die Bestell-ID und natürlich die Ware.
-
Die "Bezahlung" ist der letzte Schritt im Protokoll. Bei der Bezahlung
erhält der Händler wieder die Daten von Treuhänder und Händler,
die Bestell-ID, den Gesamtpreis und das Geld.
-
Sollte der Treuhänder Inkonsistenzen im Ablauf der Transaktionen oder
dem Inhalt der gesendeten Daten feststellen, welche auf Seiten des Händlers
entstanden sind, so sendet er einen Mangel an diesen. Dieser "Mangelhändler"
enthält eine Begründung zum Mangel und die Ware der zugehörigen
Bestellung. Der Händler hat nun die Möglichkeit eine weitere
Lieferung zu senden.
Konfiguration und Start des Händlers:
In unserem Lehrprojekt sollte die Umsetzung des Protokolls und die Gewährleistung
der Anonymität im Vordergrund stehen. Aus diesem Grund sind einige
Einstellungen zwar prinzipiell möglich, müssen aber "per Hand"
vogenommen werden. Im folgenden nun die Details zur Konfiguration und zum
Start.
Konfiguration :
-
Die IP-Adresse des Händlers erkennt das Programm automatisch.
-
Der Port, über den die Kommunikation erfolgt wird im Quelltext in
der Klasse "ServerSalesMan.java" unter "private static final int PORT =
4012 eingestellt."
-
Wichtig !!! Da der Katalog bereits erstellt wurde und auch die Informationen
zu IP-Adresse und Port enthält, muß auch an dieser Stelle "per
Hand" geändert werden (Datei "katalog.xml"). Dies ist wichtig, da
diese Informationen von Treuhänder und Kunde ausgelesen werden können
und deshalb natürlich korrekt sein sollten.
Des weiteren wurde bei der Entwicklung des Händlers der Ansatz
verfolgt, über eine Setup-Datei die Einstellungen zu Name (Pseudonym),
IP-Adresse und Port zu konfigurieren. Da aber die IP-Adresse erkannt wird
und der Port an anderer Stelle im Quellcode (s.o.) festgelegt wird, betrifft
dies nur noch den Namen (Pseudonym) des Händlers - andere Angaben
werden ignoriert. !!! Sollte auf diese Setup-Datei ("setup.txt")
allerdings nicht zugegriffen werden können, so werden wiederum Standard-Einstellungen
verwendet. Auch diese müssen angepasst werden (Klasse "Haenlder.java"
in der Methode "setStandardHaendler()" ).
-
Der Katalog befindet sich in der Datei "katalog.xml".
-
Die Waren (Bücher) befinden sich in Dateien mit Namen "<ID>.txt".
-
Die Datei "init.xml" ist ein leeres XML-Dokument und wird zum Initialisieren
benötigt.
-
Da das Gesamte Protokoll mit Hilfe von Signaturen und XML-Parsern realisiert
wird, sollten keine Umlaute oder andere Sonderzeichen im Datenstrom auftreten,
da diese zu Fehlern führen können.
Start:
-
Bemerkung: Entwicklung und Test fanden nur mit JDK1.3 statt.
-
Das Programm beginnt mit dem Start der Initialisierung und meldet seinen
Status (Name des Haendlers, erkannte IP-Adresse, eingestellter Port). Sollten
beim Betrieb Probleme auftreten, so können diese Angaben zur Kontrolle
bzw. Konfiguration genutzt werden (siehe Konfiguration).
-
Während der Transaktionen erstellt das Programm Dateien der Form "<Bestell-ID>.xml",
welche die signierten Lieferungen enthalten.
-
Bei erfolgreich abgeschlossener Transaktion erstellt das Programm eine
Datei mit dem Namen "<Bestell-ID>.money", welche das erhaltene Geld
enthält.
Inhaltsverzeichnis