Protokollierung in einer Datenbank

Anforderung

print2forms versteht sich als Middleware, die zwischen verschiedenen Anwendungen und Geräten innerhalb eines Unternehmens Daten vermittelt. Dabei stellt sich oft auch die Frage der Rückkopplung von Statusmeldungen: hat print2forms dieses oder jenes Dokument schon bearbeitet?

Diese Frage trifft auch häufig beim Einsatz von Gateways auf, und erst recht, wenn der print2forms-Router für eine räumliche und zeitliche Entkopplung von Druckaufträgen sorgt.

Per se weis print2forms nichts über die anderen Anwendungen beim Kunden, und kann deshalb diese auch nicht über Statusänderungen oder Fehlerereignisse informieren.

Realisierung

Eine Möglichkeit, Rückmeldungen zur Verfügung zu stellen, stellt der Einsatz einer Datenbank dar. print2forms bietet im Rahmen von Feldern innerhalb von Formularen ein sogenanntes ODBC-Feld an. ODBC steht für 'Open Database Connectivity' und beschreibt eine normierte Datenbankschnittstelle (siehe ODBC). Im Windows-System können solche ODBC-Schnittstellen angelegt werden. Wie dies geht, ist in vielen Quellen beschrieben und soll deshalb hier nicht wiederholt werden.

Für print2forms ist lediglich wichtig, dass die Schnittstelle als 'System-DSN' eingetragen werden muss, weil die print2forms-Komponenten als Dienste laufen und sonst nicht auf die Schnittstelle zugreifen könnten.

Hier soll angenommen werden, dass in der Datenbank eine Tabelle mit dem Namen 'Status' existiert, deren Datensätze ein Feld 'Zeit' für den Zeitpunkt der Statusmeldung, ein Feld 'Nummer' mit der Belegnummer des Dokuments und ein Feld 'Drucker' für den Namen des Druckers, der die Meldung abgesetzt hat, enthalten sollen. In etwa so:

CREATE TABLE IF NOT EXISTS `Status` (
  `Zeit` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `Nummer` int(11) NOT NULL DEFAULT '0',
  `Drucker` varchar(80) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Die Grundidee für die Statusmeldung ist nun die, in der Tabelle einen Eintrag zu erzeugen, sobald print2forms ein bestimmtes Dokument bearbeitet. Dazu muss in einem Druckprozess eine Anweisung eingebaut werden, die nur ein einziges Mal ausgeführt wird, und dann ein Formular aufruft, in dem das ODBC-Feld enthalten ist.

Am einfachsten kann man das mit der ersten Seite des Dokuments verbinden, weil man dann nur eine Anweisung vorneweg einfügen muss.

Prozess mit Formularaufruf

Im dort aufgerufenen Formular muss zum einen die Belegnummer des Dokuments ermittelt, und dann diese Belegnummer und der Druckername in die Datenbank eingetragen werden.

Formularfelder

Wichtig ist hier das SQL-Kommando im ODBC-Feld. Die Angabe '\Beleg:1' in der Schablone ist der Platzhalter für die mit dem Suchfeld 'Beleg' gefundene Belegnummer. Die Angabe '\m' ist der Platzhalter für den Namen des Druckers, der gerade dieses Formular druckt.

INSERT INTO Status (Nummer, Drucker) VALUES (\Beleg:1, '\m')

Beim Blick in die Ablaufverfolgung des Druckers kann man dann das tatsächlich abgesetzte SQL-Kommando erkennen:

Formularfelder

Auf die Tabelle 'Status' können nun andere Programme von beliebigen Rechnern aus zugreifen, und ihrerseits Aktionen oder Meldungen auslösen, womit eine sehr viel weitergehende Einbindung von print2forms in die Geschäftsabläufe möglich wird.

Bemerkungen