DDMESS Messen Software Tontechnik Impressum © DDMESS, A. Hanßke

Urkunden- Server

Ein unscheinbares Fenster zeigt, dass der Urkundenserver läuft: Er lauscht auf dem UDP- Port 44001 auf lokale Broadcast- Messages, die die Urkundendaten in Form einer JSON- Message enthalten. Der Absender kann ein beliebiges Programm sein, das den Urkundenserver mit Daten zum Urkundendruck versorgt. Dieses Programm kann auf irgend einem anderen Rechner im lokalen Netz oder auch auf dem gleichen Rechner wie der Urkundenserver laufen. Mit Hilfe der JSON- Message lagert der Absender seine Daten beim Urkundenserver ein und startet zuletzt den Druck der Urkunden. Daraufhin zeigt der Urkundenserver eine Vorschau an, aus der heraus man dann manuell den Druck startet. Die Urkunde wird mit einigen Elementen konfiguriert:

Technik:

Die JSON- Message ist wie folgt aufgebaut: {     "JIDS":"UWD1A62693C",      "//":" Prefix 'UWD' verwenden!",     "DBNAMES":     {      "CLEAR":"ALL",            "//":" alle Namen und Leistungen löschen (wird vor  ADD ausgewertet)",      "PRINT":"START",          "//":" Ausdruck (Vorschau) starten       (wird nach ADD ausgewertet)",      "WEB":"START",            "//":" Web- Ausgabe starten              (wird nach ADD ausgewertet)",      "ADD":                    "//":" Namens-/Leistungs- Eintrag ergänzen",      [        {          "RID":"<RaceID>",     "//":" Die Kombination von RaceID und AthleteID muss ... ",          "AID":"<AthleteID>",  "//":" .. eindeutig sein, da hieraus die Dateinamen der Urkunden erzeugt werden",          "NNAME":"<Name>",          "FNAME":"<Vorname>",          "TEAM":"<Verein>",          "RACE":"<Lauf>",          "AK":"<AK>",          "VALUE":"<Leistung>",          "PL":"<Platz>",          "AKPL":"<AK-Platz>",          "WB":"<Wettkampf>",          "ORT":"<Ort>",          "DATE":"<Datum>"      "//":" Datum in der Form dd.mm.yyyy",        },        {          "RID":"<RaceID>",          "AID":"<AthleteID>",          "NNAME":"<Name>",          "FNAME":"<Vorname>",          "TEAM":"<Verein>",          "RACE":"<Lauf>",          "AK":"<AK>",          "VALUE":"<Leistung>",          "PL":"<Platz>",          "AKPL":"<AK-Platz>",          "WB":"<Wettkampf>",          "ORT":"<Ort>",          "DATE":"<Datum>"        }      ]     },     "SDIJ":"UWD1A62693C"       "//":" (wird unmittelbar nach JIDS ausgewertet und geprüft)", } Im Beispiel dieser Definition werden zwei Datensätze übertragen. Die Datensätze sind UTF8- codiert. Die Kommentar- Tags "//" werden natürlich nicht gesendet, dienen hier nur der Beschreibung. Kernstück ist die Kennung der Message, die im ersten Tag mit JIDS und einer ID eingeleitet und im letzten Tag mit SDIJ und der gleichen ID abgeschlossen wird. Die ID trägt den Präfix UWD. Der Urkundenserver prüft jede eingehende JSON- Message auf diesen Rahmen und auf den Prefix der ID und erkennt daran auch, ob die empfangene Message vollständig ist. Der Tag DBNAMES leitet die Datenbank- Einträge für die Speicherung in der Ergebnis- Datenbank ein. Datenbank- Aktionen sind: CLEAR Die Datenbank wird gelöscht und für den nächsten Urkundenblock vorbereitet. Das Kommando gibt man sinnvollerweise immer mit dem ersten Datenpaket eines Urkundenblocks. Es wird ausgeführt, bevor im gleichen Block ggf. vorhandene ADD- Tags ausgeführt werden. PRINT ... startet die Druckvorschau und dann den Ausdruck der Urkunden. Man kann den Tag auch weglassen und die Aktion dann manuell am Urkundenserver ausführen, was vor allem dann sinnvoll ist, wenn mehrere Server im Netz laufen. Die Urkundenserver können dieses Kommando nur korrekt ausführen, wenn eine vorherige Druckvorschau geschlossen wurde. Das Kommando wird erst ausgeführt, nachdem evtl. noch im gleichen Paket vorhandene ADD- Kommandos ausgeführt wurden WEB ... wie PRINT, aber für die Web- Ausgabe. Das Kommando wird erst ausgeführt, nachdem evtl. noch im gleichen Paket vorhandene ADD- Kommandos ausgeführt wurden ADD .. startet einen Datenblock, der an die Ergebnisdatenbank angefügt wird. Die Inhalte sind selbsterklärend. Die beiden IDs RID und AID werden eigentlich nur für die Web- Ausgabe benötigt. Sie werden zum Erzeugen des Dateinamens der PDF- Urkunde verwendet und müssen dahingehend eindeutig sein. Sie sollten aber keine Zufallszahlen sein, so dass beim ggf. wiederholten Generieren der Ergebnisdaten die bereits (evtl. fälschlich) erstellten Urkunden auch wieder gelöscht werden können. Die Felder in den Tags "PL" und "AKPL" müssen Zahlen (ohne Dezimalpunkt und Sonderzeichen) sein, damit der Urkundenserver die Urkunden sortiert ausgeben kann. Zum Generieren größerer Mengen an Urkunden wäre eine gute Idee ... ein erstes Datenpaket mit dem CLEAR- Kommando und 10 ADD- Blöcken zu senden weitere Datenpakete ohne CLEAR- Kommando, sondern nur mit 10 ADD- Blöcken zu senden abschließend die letzten ADD- Kommandos mit einem PRINT oder WEB zu senden. 10 ADD- Blöcke liegen deutlich unter der Speichergrenze eines UDP- Pakets und eine kurze Wartezeit von 10ms zwischen den Paketen sorgt dafür, dass Sende- und Empfangsroutinen nicht überlastet werden.

Nutzung

Der Urkundenserver kann unter Beachtung der Lizenzbedingungen kostenlos für den Eigenbedarf genutzt werden. Viel Erfolg!
Download Versions-Info