PlanetPress im alltäglichen Leben: Mein webbasierter Prozessstarter

Man sagt, Notwendigkeit ist die Mutter des Erfindungsgeistes. Man könnte hinzufügen, dass Wiederholung die Mutter der Automatisierung und Faulheit ihr Vater ist. Ich will hier aber keinen Geschlchterkrieg anzetteln, also sagen wir einfach, Wiederholung und Faulheit sind die Eltern der Automatisierung! Die Wirklichkeit sieht so aus, dass, immer wenn ich die gleiche Arbeit wieder und wieder zu tun habe, ich mich frage, wie man diese wohl automatisieren könnte – ob Zuhause oder im Büro. Ich meine nichts, das Spaß macht wie Gitarrespielen oder wissensintensive Aufgaben wie Design, Diagnose, Begutachtungen etc. Ich spreche von Arbeiten wie Geschirrspülen, Dateien splitten oder zusammenführen, Protokollierung. Aber während sich einige Aufgaben vollständig automatisieren lassen wie der Alarm eines Weckers, den ich nicht jeden Tag stellen muss, ist es bei anderen Dingen vielleicht gut, wenn sie einer stärkeren Kontrolle unterliegen – wie eine Weboberfläche zum Starten eines Auftrags, auf der ein Benutzer auswählen kann, was er mit dem Auftrag macht und wann.

In diesem Beispiel verwende ich den PlanetPress HTTP-Server, um eine solche Seite zu verwalten. So wie in meinen anderen Blogeinträgen gilt auch hier: Ich habe PlanetPress Suite glücklicherweise Zuhause auf meinen PC installiert. Wie bei meinen anderen Beispielen kann auch dieses auf Unternehmensanwendungen übertragen werden.

1

Das Problem

Meine Freunde und ich machen zusammen Musik. Wir nehmen unsere Lieder auf, erzeugen damit mehrere Dateien. Wir machen auch Fotos, filmen, schreiben Songtexte etc. Nach einigen Proben haben wir so sehr viele Dateien erstellt. Ich speichere diese Dateien in einem temporären Verzeichnis und, wenn ich Zeit habe, gehe ich sie durch, lösche die unbrauchbaren, archiviere die guten oder bereite sie für eine weitere Verarbeitung vor. Bilder, mp3, Playlists und Videodateien müssen in ein lokales Verzeichnis in entsprechende Unterordner kopiert und gleichzeitig in ein File-Sharing-System hochgeladen werden, das unsere Band verwendet – wie Dropbox, FTP etc. Außerdem müssen alle Bandmitglieder darüber informiert werden, welche Dateien wann hinzugefügt wurden.

Damit erscheint die Idee eines Webmanagers zur Verwaltung der Dateien und zum Starten edines Archivierungsprozesses per Mausklick sehr reizvoll. Was ich haben wollte, war:

  1. eine maßgeschneiderte Dateiverwaltungsoberfläche, auf die von jedem Computer in meinem lokalen Netzwerk aus zugegriffen werden kann.
  2. mehr Zeit, um mich auf die Beurteilung der Qualität der Dateien zu konzentrieren.
  3. keine Zeitvergeudung mehr durch Kopieren der Dateien ud Schreiben von E-Mails.
  4. die Fähigkeit all emit der Archivierung verbundenen Schritte per Mausklick auszuführen – wenn ich es will.
  5. Nachverfolgung all meiner Schritte.

Die Möglichkeiten

Die PlanetPress Suite HTTP/SOAP-Tools sind wirklich toll. Als sie vor einigen Jahren veröffentlicht wurden, hat man sie kaum wahrgenommen; da standen andere Funktionen wie die PlanetPress PDF-Tools im Vordergrund. Über die Jahre aber stellten sich die Möglichkeit, Webformulardaten zu verarbeiten oder Webdienste zu verwenden, als wichtige Lösungsgestalter heraus. Hier einige der Möglichkeiten, die ich als sehr nützliche Lösungen empfunden habe.

PlanetPress liefert Web-Ressourcen

Eine nützliche Funktion des PlanetPress HTTP-Servers ist die Fähigkeit, statische Web-Ressourcen sehr schnell liefern zu können, auch wenn es keinen Webserver ersetzen soll. Aktiviert man diese Option in den Eigenschaften des PlanetPress-Workflowtools – wie im Bild unten links zu sehen – kann ich jede Datei in einem anderen Ordner meiner Wahl platzieren, um sie über jeden Webbrowser meines Netzwerkes verfügbar zu machen

2

PlanetPress verarbeitet Webformulardaten

Webformulare erstellen ist leicht. Nach wenigen Minuten Suchen und Probieren kann man ein recht komplexes Formular mit Optionsschaltflächen, Auswahllisten, Datei-Upload etc. erstellen. Andererseits ist die Verarbeitung von Webformulardaten ein wenig komplizierter, da sie auf verschiedenen serverseitigen Techologien beruhen kann. Mit PlanetPress ist die Verarbeitung solcher Daten aber eher einfach: Ein HTTP-Prozess startet immer dann, wenn eine HTTP-Anfrage eingeht, die mit dem HTTP-Aktionsparameter des Eingabe-Plug-ins übereinstimmt. Die Prozessdatendatei ist eine XML-Datei, die alle HTML-Eingabeformularparameter enthält mitsamt den Pfaden zu lokalen Kopien aller hochgeladenen Dateien. Im Gegensatz zu herkömmlichen Prozessen muss ein HTTP-Prozess eine Antwortdatei generieren, die an den HTTP-Client zurückgesendet wird. Diese Antwort ist die Jobdatei am Ende des PlanetPress-Prozesses.

3

HTML-Tabellensortierung leicht gemacht mit jQuery

Arbeite ich mit einer Oberfläche, die Dateien in Tabellenform anzeigt, erwarte ich, dass ich diese Tabelle nach jeder Spalte sortieren kann. Vor ungefähr 15 Jahren hätte ich mich zunächst in JavaScript und dem Document-Object-Modell schlau gemacht und dann versucht, ein sehr grundlegendes Tabellensortierungsskript zu schreiben. Es hätte eine Weile gedauert, bis ich eine kaum brauchbare, schwer verwaltbare Lösung gehabt hätte, die wahrscheinlich nur in meinem Netscape Navigator funktioniert hätte. Aber wir schreiben das Jahr 2014. Also habe ich einfach „Table sorter” gegoogelt und habe auf Anhieb gefunden, wonach ich gesucht hatte!

4

Dank Christian Bach und seinem coolen jQuery-Plug-in Tablesorter (http://tablesorter.com) kann ich nun ganz einfach sortierbare Tabellen in HTML erstellen.

XML und XSL sind großartig

Die eXtensible Markup Language (XML) wurde 1997 eingeführt und hatte einen großen Einfluss darauf, wie Daten wiedergegeben und dargestellt werden. Vor XML gab es andere Markup-Sprachen – HTML ist das wohl bekannteste Beispiel. Aber es war keine gute Idee (ist es heute noch immer nicht), Informationen als HTML-Datei zu speichern, hauptsächlich deshalb, weil HTML Informationen vermischt und wie es sie darstellt. XML dagegen dreht sich einzig um Informationen. Das Pendant – die eXtensible Stylesheet Language (XSL) – ist im Wesentlichen eine XML-Datei, die besondere Tags und Vorlagen enthält, um eine XML-Datei in etwas anderes umzuwandeln wie eine andere XML-Datei, eine HTML-Datei eine CSV-Datei etc.

5

Bei meinem Problem sehe ich die Möglichkeit darin, dass die Inhalte der Tabelle, die ich darstellen lassen möchte, in einer XML-Datei enthalten sein können, während die Darstellungsweise in einer XSL-Datei festgehalten werden kann. So können die Daten (XML) leicht bearbeitet werden, ohne sich Gedanken darum machen zu müssen, wie sie nachher dargestellt werden.

 

Der Workflow

Mit all den Möglichkeiten, die ich aufgezeigt habe, ist meine Arbeit fast erledigt. Fast. Ein paar Prozesse müssen noch implementiert werden.

6

Startprozess

Ich möchte, dass der PlanetPress Suite-Dienst alle für die Webanwendung erforderlichen Dateien erzeugt. Dies sind XML-, XSL-, CSS- und JavaScript-Dateien. Einige dieser Dateien werdeb als ZIP-Paket heruntergeladen und im entsprechenden Ordner entpackt. Dies wird durch eine globale Variable definiert. Der Prozess muss nur einmal laufen. So sollte ein Startprozess funktionieren.

HTTP-Prozesse

Dank des Eingabe-Plug-ins „HTTP-Server”, wird jeder HTTP-Prozess (Refresh, Upload, Delete und Archive) gestartet, wenn der Benutzer auf einen Button oder Weblink auf der Oberfläche klickt. Die meisten dieser Prozesse sind einfach wie der Refresh-Prozess, der schlicht die XML-Datei aktualisiert und den Client wiede auf die Original-URL zurückbringt.

7

Der Upload-Prozess beginnt, sobald der Benutzer auf den Button auf der Weboberfläche klickt, nachdem er die Datei, die er hochladen will, ausgesucht hat. Dieser Prozess speichert die hochgeladene Datei in dem Verzeichnis, dessen Inhalt in der XML-Datei enthalten ist und leitet den Webclient dann auf die Original-XML (die dank XSL einwandfrei dargestellt wird).

Die Archivierungs- und Löschprozesse sind recht ähnlich. Sie werden beide angestoßen, wenn der Benutzer auf den „Archive“- beziehungsweise „Delete“-Link neben der Datei, die verarbeitet werden soll, klickt. Der Klick auf den Link “Archive” neben der Datei abc.txt beiuspielsweise erzeugt das gleiche Ergebnis wie den Link http://myserver/archive?f=abc.txt einzugeben. Jede beliebige Aktion, die ich mit der Datei durchführen will, könnte als Link implementiert werden, der den folgenden HTTP-Prozess anstößt:

  1. Erfassen des Dateinamens aus der XML-Datei, die durch den PlanetPress HTTP-Server erzeugt wurde.
  2. Bereinigung des Dateinamens mit Regular Expressions und JavaScript. Man kann nie sicher genug sein.
  3. Die gewünschte Aktion auf die Datei anwenden (z.B. die Datei in einen anderen Ordner kopieren, um einen Arhcivierungsprozess anzustoßen).
  4. Aktualisierung der XML-Datei (wenn der Prozess tatsächlich den Inhalt der Tabelle ändert).
  5. Schließlich lasse ich jeden Prozess eine Zeile in eine Logdatei hinzufügen, die ich mir jederzeit ansehen kann, um meine Aktionen nachzuverfolgen.

Unterprozesse

Erledigen mehrere Prozesse gleiche Aktionen, ist es praktisch, diese in einen Unterprozess zsammenzufassen und die Hauptprozesse diese Unterprozesse ansteuern zu lassen, statt gleiche Aufgaben zu wiederholen. So wird der gesamte Workflow viel übersichtlicher. Hier die Unrerprozesse, die ich umgesetzt habe:

Upate XML: Dieser Unterürozess aktualisiert die XML-Datei. Alle meine Unterprozesse verändern den Inhalt der Tabelle, also verwenden sie alle diesen Unterprozess.

Create redirect page: Durch aufrugen dieses Unterprozesses vor dem Ende gibt jeder HTTP-Prozess einen Link an den Webclient zurück, sodas sichergestellt ist, dass man am Ende immer die HTML-Tabelle sieht, egal welche Aktion man gewählt hat. Dies wird mit einer Seite, die einen Meta-Refresh-Tag enthält, umgesetzt. Ich sollte hinzufügen, dass die Verwendung dieses Tags nicht vom W3C empfohlen wird, aber für meine Anwendung ist das kein Problem.

Clean up file name: Einige Unterprozesse benötigen einen Eingabeparameter, die ungültige Zeichen beinhalten könnten (z.B. ein Dateinam mit einem Slash). Dieser Unterprozess bereinigt den Dateinamen unter Verwendung von JavaScript. Wenn man Unterprozesse als Funktionen ansieht, dann benötigt dieser einen Eingabeparameter, der eine PlanetPress-Workflow-Jobinformation ist. Er aktualisiert den Wert einer Jobinformation.

Log: Dieser Unterprozess fügt eine Zeile mit Informationen aus dem aufrufenden Prozess in die log.txt-Datei ein.

Der Spaß

Am Ende hatte ich also, was ich wollte. Eine schöne Weboberfläche, über die ich Dateien hochladen, ansehen, löschen oder archivieren kann. Außerdem habe ich ein praktisches Logsystem, um nachverfolgen zu können, was mit den Dateien gemach wurde.

Treibt man dieses Spiel weiter, kann der Workflow, den ich implementiert habe, ganz einfach noch erweitert werden, indem weitere man weitere Aktivitäten, die auf die Dateien angewendet werden können, hinzugefügt werden. Etwa Drucken, E-Mailversand, FTP-Upload etc. Darüber hinaus könnte ich außerdem individuelle HTTP-Formularaktionen für jede Zeile hinzufügen wie die Möglichkeit, auszuwählen, auf welchem Drucker ich drucken oder an welchen Empfänger ich die Datei per E-Mail senden möchte etc.

Für diesen Blogeintrag habe ich länger gebraucht als für die Umsetzung des Workflows. Ich hoffe, Sie gewinnen dadurch einen Einblick in den PlanetPress HTTP-Server. Vom web-based job launcher zum webbasierten Dateineintragungssystem: Wenn Sie einmal wissen, was Sie alles damit tun können, sind die Möglichkeiten endlos.

Wenn Sie eine Kopie des Workflows erhalten möchten, wenden Sie sich an creatingnewways@ca.objectiflune.com

THIS ARTICLE IS ABOUT

translated