===== Ablaufverfolgung und Index analysieren ===== ==== Anforderung ==== Mit zunehmender Komplexität der Abläufe in (p2f), insbesondere wenn dynamische Formulare, die vom Inhalt des Druckdatenstroms abhängig sind, im Spiel sind, wird es immer wichtiger, die Ablaufverfolgung genau zu analysieren, um zu erkennen, warum das Druckergebnis nicht genau das ist, was man erwartet hat. In diesen Fällen sind meist viele reguläre Ausdrücke beteiligt, von denen kontrolliert werden muss, ob sie aktiviert sind, und, für den Fall, dass das Muster erkannt wurde, was die Puffer an gefundenen Druckdaten enthalten. Das ist in der Anzeige der Ablaufverfolgung innerhalb des Drucker-/Gateway-Services naturgemäß etwas schwierig, weil nur ein begrenzter Ausschnitt des Protokolls sichtbar ist (Längenbeschränkung auf 2048 Zeilen), und weil Möglichkeiten wie Falten oder das Setzen von Lesezeichen nicht zur Verfügung stehen. Von daher wird die Ablaufverfolgung für eine umfangreiche Analyse meist erst einmal in einen Editor geladen. Hier soll gezeigt werden, wie die Analyse der Ablaufverfolgung und der Indexdatei **im Editor unterstützt** und effektiver gemacht werden kann. Mit dem (p2f)-Installer Build 289 wurde zudem ein Kontrollfeld eingeführt, das einzelne Gruppen von Meldungen innerhalb der [[print2forms:service:ablaufverfolgung|Ablaufverfolgung farblich hervorhebt]] und so optisch die Orientierung erleichtert. Auch werden so die Strukturen (z. B. einzelne Druckaufträge innerhalb eines Dokumentenprozesses) schnell erfassbar. Das sollte im Editor idealerweise auch realisiert sein. \\ \\ ==== Realisierung ==== Es gibt am Markt sicherlich einige hundert verschiedene Editoren für die unterschiedlichsten Einsatzzwecke, die im Einzelfall auch ihre Existenzberechtigung haben. Für die Analyse der Ablaufverfolgung haben wir uns den Editor [[https://notepad-plus-plus.org/|Notepad++]] ausgesucht, weil er viele Forderungen an einen Editor für Entwickler erfüllt, weil er **Open Source** ist, weil er der **GPL** unterliegt und weil er insbesondere mit grossen, viele zigtausend Zeilen langen Dateien noch flüssig arbeitet. ((Aus dem letztgenannten Grund scheidet [[https://code.visualstudio.com|Visual Studio Code]] für diesen Zweck aus. Aufgrund der Tatsache, dass der Editor letztlich auf [[https://electronjs.org/|Electron]] basiert, wird er irgendwann sehr behäbig - selbst auf Boliden von Rechnern.\\ \\ )) Die Entwickler von Notepad++ haben für das Syntax-Colouring eine Schnittstelle eingebaut, die die Definition eigener Regeln erlaubt. Jetzt ist eine Log-Datei nicht gerade einer Programmiersprache ähnlich, sodass sich die Einfärbung als nicht ganz so einfach erweist. Nach einigem Hin und Her und teilweise sehr freier Interpretation von Syntax-Regeln lässt sich Notepad++ aber überreden, die geforderte Aufgabe vorzüglich zu lösen. Dazu muss die folgende Definition einer **benutzerdefinierten Sprache** im Notepad++ **importiert** werden. Anschließend steht im Sprachmenü die neue Sprache //%%p2f%%-logs// zur Verfügung. Der Einfachheit halber ist auch gleich die Dateiendung //log// mit dieser Sprache verknüpft. ((Die Verknüpfung mit der Dateiendung //log// kann im Definitionsdialog für benutzerdefinierte Sprachen natürlich aufgehoben werden.\\ \\ )) \\ \\ 00nect 01 02) 03 04 Begin End "Sender con" "Printer con" "Sender discon" "Printer discon" Begin End document process step 00Macro 00Font 00Transfer 01 02((EOL)) 02((EOL)) 02((EOL)) 03Pattern 04 05((EOL)) 06Char 07 08((EOL)) 09Match 10 11((EOL)) 12Error 13 14((EOL)) 15Page 16 17((EOL)) 18PJL 18System 18Mapping 19 20((EOL)) 20((EOL)) 20((EOL)) 21Request 21Form 21Access 22 23((EOL)) 23((EOL)) 23((EOL)) \\ Mit dieser Sprachdefinition werden nicht nur Farben für die Meldungen innerhalb der Ablaufverfolgung festgelegt, sondern es werden auch drei Regeln für das **Falten von ganzen Meldungsblöcken** vorgegeben. Zum einen können die **Netzwerkverbindungen** zum druckenden Rechner als auch die Verbindungen zum Drucker selbst gefaltet werden. Zum anderen können die einzelnen **Bearbeitungsschritte eines Dokumentenprozesses** auf- und zugefaltet werden. Das ist im nachstehenden Bild zu sehen. Die ersten zwei Druckaufträge sind gefaltet, und im dritten Druckauftrag sind die beiden Bearbeitungschritte des Dokumentenprozesses gefaltet. Beachten Sie bitte auch einmal die Zeilennummern, um den Effekt der Faltung zu erkennen. \\ \\ {{print2forms:tips:0076-1.png}} \\ \\ Die Darstellung der Ablaufverfolgung ist fast identisch mit der Darstellung innerhalb des Drucker-/Gateway-Services. Auch für die Anzeige von (p2f)**-Indexdateien** wurde eine eigene Sprachdefinition für Notepad++ erstellt. Auch diese ist als benutzerdefinierte Sprache im Notepad++ zu importieren. Anschlies(-)send steht im Sprachmenü die neue Sprache //%%p2f%%-index// zur Verfügung. Der Einfachheit halber ist auch gleich die Dateiendung //ctl// mit dieser Sprache verknüpft. ((Die Verknüpfung mit der Dateiendung //ctl// kann im Definitionsdialog für benutzerdefinierte Sprachen natürlich aufgehoben werden.)) \\ \\ 00 01 02 03[0 03[1 03[2 03[3 03[4 03[5 03[6 03[7 03[8 03[9 03[A 03[B 03[D 04] 04] 04] 04] 04] 04] 04] 04] 04] 04] 04] 04] 04] [Ti [End] 00[p2f 00[Client 00[Gateway 00me] 00[Param 01 02((EOL)) 02((EOL)) 02((EOL)) 02((EOL)) 02((EOL)) 03[User 03[Computer 03[Model 03[Job 04 05((EOL)) 05((EOL)) 05((EOL)) 05((EOL)) 06[File 06[Process 06[Page 07 08((EOL)) 08((EOL)) 08((EOL)) 09[C 09[F 10 11] 11] 12 13 14 15 16 17 18 19 20 21 22 23 \\ Mit dieser Sprachdefinition werden nicht nur Farben für die Zeilen der Indexdatei festgelegt, sondern es wird auch eine Regel für das **Falten von ganzen Druckaufträgen** vorgegeben. Im nachstehenden Bild ist zu sehen, dass der erste Druckauftrag komplett zusammengefaltet ist, was auch an den springenden Zeilennummern zu erkennen ist. \\ \\ {{print2forms:tips:0076-2.png}} \\ \\ ==== Bemerkungen ==== * Die Möglichkeit der Filterung der Ablaufverfolgung nach **Flaggenfarbe**, so wie sie in der Anzeige des Drucker-/Gateway-Services zur Verfügung steht, wäre in Notepad++ nur über ein speziell dafür zu programmierendes Plugin zu realisieren. Deshalb steht solch ein Filter augenblicklich nicht bereit. * Aber man kann zumindest das **Ausblenden** mit solch einen Filter simulieren. Sind beispielsweise die Meldungen zum Download von Schriftzeichen uninteressant, können sie mit einem entsprechenden regulären Ausdruck schnell entfernt werden - wiederherstellen geht natürlich nur mit vorherigem Backup.\\ \\ {{print2forms:tips:0076-4.gif}} * {{ print2forms:tips:0076-3.png}}Die Möglichkeiten zur Benutzung der anderen Hilfen zur Analyse von Notepad++ sind natürlich weiterhin nutzbar. \\ \\ Insbesondere betrifft das den **Textmarker** und das Setzen von **Lesezeichen**. Auch das beliebige **Ausblenden** von markierten Bereichen geht vollkommen unabhängig von der gemachten Sprachdefinition.\\ \\ Das gilt sowohl für die Ablaufverfolgung als auch die Darstellung der Indexdatei. \\ \\ \\ \\