===== Reguläre Ausdrücke als Prozessnamen =====
==== Anforderung ====
Bei der Nutzung von (p2f) kommt es immer wieder einmal vor, dass die Informationen, die zur Auswahl eines (p2f)-Prozesses verwendet werden müssen, variable Daten enthalten. Gibt es nur wenige Varianten, kann man durchaus erwägen, für jede Variante einen Prozess durch Duplikation des ersten Prozesses zu erzeugen.
Um im Falle von Änderungen keinen vielfachen Änderungsaufwand zu haben, sollten aber keine Duplikate sondern stattdessen Verweise angelegt werden - vorausgesetzt natürlich, für alle Varianten gelten identische Prozessschritte.
Übersteigt die Anzahl der Varianten aber einen gewissen Punkt, oder müssen gar abhängig von der Variante viele unterschiedliche Prozessschritte ausgeführt werden, kommt die beschriebene Herangehensweise schnell an ihre Grenzen.
Für solche Fälle kann man in (p2f) auch //reguläre Ausdrücke// als Prozessnamen verwenden.
\\
\\
==== Realisierung ====
Der einfachste Fall für einen Prozessnamen wäre wohl, wenn alle Varianten mit einer identischen Zeichenfolge beginnen und sich die Varianten nur am Ende des Prozessnamens unterscheiden.
Das ist leicht damit zu realisieren, dass der Prozessname - wie im nebenstehenden Beispiel - aus einen regulären Ausdruck besteht, der mit einem Punkt und einem Stern endet.
Der Prozessname darf //nicht// aus einem regulären Ausdruck mit runden Klammern bestehen, da es in (p2f) aus systeminternen Gründen keinen Mechanismus geben kann, um auf die so aufgesammelten Puffer mit Daten zuzugreifen.
Um aber trotzdem auf die variablen Anteile des Prozessnamens im weiteren Verlauf der Verarbeitung zugreifen zu können, muss lediglich als erstes ein Dokumentprozess aufgerufen werden.
Bei der Definition eines //Bearbeitungsschrittes// kann in der Bedingungsliste der Prozessname als Entscheidungskriterium herangezogen werden. Dabei lassen sich mit einem weiteren regulären Ausdruck (der unter //Vergleichswert//) auch Teile aus dem Prozessnamen in den Puffern des Ausdrucks für den späteren Zugriff abspeichern - wie rechts zu sehen.
{{print2forms:tips:0026-1.png}}
{{print2forms:tips:0026-2.png}}
Wie auf alle Bedingungen aus den Bearbeitungsschritten eines Dokumentprozesses kann auch auf eine Bedingung, die einen Prozessnamen prüft, über ihren Namen zugegriffen werden.
Beispielsweise kann beim Aufbau eines Formulars durch bedingtes Einbinden von //Unterformularen// rasch ein Formular konstruiert werden, dessen Aussehen mandantenabhängig ist, wenn der Mandant im Namen des Prozesses irgendwie kodiert ist.
Oder aber der Prozessname wird im Rahmen von //Feldern// benutzt.
In dem hier abgebildeten Beispielformular soll zur Veranschaulichung einfach der variable Teil des Prozessnamens als Wasserzeichen quer über die zu erstellenden Seiten gedruckt werden.
Dazu wird im Formular ein Textfeld definiert, welches in seiner Textschablone über die Referenz '^Prozessname:1' auf die Bedingung des übergeordneten Dokumentenprozesses zugreift. Die Zeichenkette 'Prozessname' ist dabei der Name der Bedingung (siehe oben).
Da hier der bekannte Standardmechanismus für den Zugriff auf 'globale' Daten aus dem Dokumentprozess benutzt wird, ist auch die Nutzung mehrerer Puffer innerhalb des regulären Ausdrucks in der Bedingung möglich, was selbst komplexeste Auswertungen erlaubt.
Wird jetzt ein Ausdruck gestartet, der einen Prozessnamen //Extern Lager// verwendet, wird über jede Seite des Ausdrucks das graue Wort 'Lager' in einer Schriftgrösse von 72 Punkten gedruckt. Bei einem Aufruf mit dem Prozessnamen //Extern Buchhaltung// wird entsprechend das Wort 'Buchhaltung' eingedruckt.
\\
\\
==== Bemerkungen ====
* Der Druckprozess mit dem Namen //Kennzeichen abhängig vom Prozessnamen// wurde hier aus Gründen der Übersicht unterschlagen. Er druckt einfach auf alle Seiten das Formular //Kennzeichen abhängig vom Prozessnamen//.
* Durch die Definition von mehreren Bearbeitungsschritten mit unterschiedlichen Bedingungen für den Prozessnamen lassen sich somit recht einfach Fallunterscheidungen für die einzelnen unterschiedlichen Prozessvarianten aufbauen.
* Bei der Auswertung von Prozessnamen werden zuerst alle explizit (ohne reguläre Ausdrücke) definierten Prozesse geprüft. Erst wenn diese Suche zu keinem Ergebnis kam, werden die Prozessnamen mit regulären Ausdücken geprüft. Dieses Verhalten kann dazu genutzt werden, für einzelne Prozessvarianten explizit Prozesse anzulegen, und dann alle anderen Varianten mit dem Prozess mit dem regulären Ausdruck zu bearbeiten.