Was ist ein Prozess und wie erstellt man einen?
Geschrieben vonOssi Galkin Vor über einer Woche aktualisiertTable of contentsGeschrieben für Frends Version 5.4
Was ist ein Prozess?
Ein Prozess kann alles sein, vom Zähneputzen bis zur Bearbeitung einer Bestellung in einem Online-Shop, vom Kauf der Ware durch den Kunden bis zum Versand. Am besten kann man diese Prozesse beschreiben, indem man sie in kleinere Teile zerlegt.
Zähneputzen: „Nehmen Sie eine Zahnbürste und Zahnpasta. Drücken Sie eine kleine Menge Paste auf die Bürste. Putzen Sie die Außen- und Innenseiten und reinigen Sie die Oberfläche jedes Zahns. Spülen Sie zum Schluss Ihren Mund aus und putzen Sie die Zahnbürste.“
Abwicklung einer Bestellung in einem Online-Shop (stark abstrahiert und vereinfacht): „Wenn der Kunde den Warenkorb auscheckt, wickeln Sie die Zahlung ab. Nachdem dies erledigt ist, erstellen Sie eine Bestellung für das Produkt. Das physisch nächstgelegene Lager, in dem das Produkt vorrätig ist, übernimmt die Abwicklung. Anschließend verpackt es das Produkt und versendet es an den Kunden.“
Es ist immer besser, wenn die Prozesse automatisiert sind. Viele Erwachsene denken nicht bewusst über die Schritte nach, die sie beim Zähneputzen machen. Ebenso ist es immer angenehmer, wenn ein Mensch nicht überwachen und handhaben muss, welches Lager beispielsweise am nächsten bei einem Kunden ist UND ein bestimmtes Produkt hat.
Bei der Entwicklung von Frends wurde das Zitat von W. E. Deming leicht abgewandelt: „Wenn Sie das, was Sie tun, als Prozess beschreiben können, sind Sie schon zur Hälfte fertig.“
Wenn Sie einen Geschäftsprozess in Frends definieren, sind Sie bereits auf halbem Weg zu seiner Automatisierung. Sie wissen vielleicht nicht unbedingt genau, wie jeder Schritt umgesetzt wird, aber sobald Sie einen Prozess mit Frends definiert haben, können Sie ihn an eine Person übergeben, die sich um die Details kümmert und dafür sorgt, dass er funktioniert.
Im besten Fall können Frends sowohl als Dokumentation als auch als Implementierung eines Prozesses dienen.
Während das Erstellen eines Prozesses einfach ist, ist es weniger einfach zu erklären, wie das geht. Als Nächstes fahren wir mit der eigentlichen Implementierung fort.
Erstellen eines Prozesses und von Aufgaben
Um einen neuen Prozess zu erstellen, gehen wir zunächst zur Prozessansicht und klicken auf die Schaltfläche „Neu erstellen“.
Sie gelangen dann auf die Seite des Prozesseditors. In der oberen linken Ecke sehen Sie „Name“. Sie können diesen auswählen und die Seitenleiste „Einstellungen“ wird geöffnet.
Hier können Sie Ihren Prozess benennen. Der Name ist obligatorisch. Er sollte den Prozess qualitativ, aber prägnant beschreiben. Er ist das wichtigste Unterscheidungsmerkmal zwischen verschiedenen Prozessen. Unser Prozess wird „Wertschätzungsprozess“ heißen.
Ein Prozess kann auch eine Beschreibung haben, aber das ist nicht zwingend. Es kann nützlich sein, wenn es viele ähnliche Prozesse mit nur geringen Namensunterschieden gibt. Die Beschreibung kann auch hilfreich sein, wenn eine neue Person mit den Prozessen zu arbeiten beginnt: Wenn die Prozesse beschrieben sind, besteht weniger Bedarf, auf andere Dokumentationen zurückzugreifen, um herauszufinden, was der Prozess tut und warum. Sie können im Menü „Einstellungen“ eine Beschreibung hinzufügen.
Nachdem Sie dem Prozess einen Namen und eine mögliche Beschreibung gegeben haben, können Sie sich der Funktionalität zuwenden. Im Prozesseditor sehen Sie einen großen leeren Bereich namens Canvas. Standardmäßig gibt es dort ein Trigger-Element, das nicht entfernt werden kann.
Auslöser werden vom Agenten registriert und können nur aktiviert werden, wenn das auslösende Ereignis vom Hostserver registriert wird.
Trigger sind ein integraler Bestandteil jedes Frends-Prozesses, da sie die Möglichkeit bieten, einen Prozess dynamisch basierend auf einem Ereignis zu starten, das der Agent empfangen kann. Der Trigger fungiert auch als Startpunkt für den Prozess und als erster Schritt im Prozessdiagramm.
Zu diesen Ereignissen können gehören:
Eine Datei wird in einem angegebenen Ordner erstellt
Ein Webservice-Aufruf wird vom Agenten empfangen
Eine Nachricht erscheint in einer Warteschlange, die der Agent abonniert hat
Ein Zeitplan wird in seinem Zeitfenster aktiviert
Eine manuelle Nachricht wird vom Benutzer über die Frends-Benutzeroberfläche gesendet
Das bedeutet, dass Sie beim Erstellen einer REST-API einen HTTP-Trigger oder einen API-Trigger als Startereignis für diesen Integrationsprozess verwenden und konfigurieren sollten. Ebenso sollten Sie im Fall eines Batch-Jobs höchstwahrscheinlich einen Zeitplan oder einen Datei-Trigger verwenden.
Beachten Sie, dass Sie in jedem Prozess so viele Trigger haben können, wie Sie möchten, und dass Sie verschiedene Triggertypen miteinander kombinieren können. Das bedeutet, dass Sie einen Integrationsprozess erstellen können, der immer dann ausgeführt wird, wenn eine Datei in einem Ordner erstellt wird UND mindestens alle 6 Stunden.
Elemente können über die Symbolleiste an der Seite der Seite hinzugefügt werden.
Für den Beispielprozess, den wir erstellen werden, müssen wir zunächst die Informationen der Entwickler aus der Datenbank abrufen. Genauer gesagt, wer sie sind, wie ihre Benutzernamen auf dem Kanban-Board lauten und wie ihre E-Mail-Adressen lauten.
Dafür benötigen wir eine Aufgabe. Diese können wir erstellen, indem wir das Trigger-Element auswählen und auf „Aufgabe anhängen“ klicken:
Wir müssen der Aufgabe eine Aktion aus dem Dropdown-Menü innerhalb der Aufgabe zuweisen. Für diesen Prozess können wir die Aufgabe „ExecuteQuery“ verwenden.
Alle Aufgaben sehen wie Rechtecke aus, können aber je nach Aufgabentyp und den ihr zugewiesenen Parametern völlig unterschiedliche Dinge tun.
Damit die Aufgabe etwas tun kann, benötigt sie Parameter – sonst weiß sie nicht, was sie tun soll und in welcher Datenbank sie es tun soll. Die von einer Aufgabe benötigten Parameter variieren je nach Aufgabe der Aufgabe. Im obigen Beispiel müssen wir die Abfrage und die Verbindungszeichenfolge der Datenbank sowie das Stammelement des resultierenden XML definieren.
Schleifen, Entscheidungen und Beenden eines Prozesses
Wir haben diese Informationen jedoch nicht zur Hand und möchten auch keine Zeit damit verbringen, die eigentliche SQL-Abfrage zu erstellen. Daher lassen wir das Feld vorerst leer und kommen später zurück, um die Details einzugeben. Im Moment ist das Wichtigste, den Prozessablauf zu erstellen, damit es für jemand anderen einfach ist, ihn aufzugreifen und abzuschließen, selbst wenn ich unmittelbar nach Abschluss dieses Prozesses krank werde oder einen Unfall habe.
Sobald unser Prozess die Informationen zu jedem Entwickler in unserem Team hat, muss er die Aktionen jedes Entwicklers überprüfen und basierend auf diesen Informationen eine E-Mail senden. Da die Aktionen für alle Entwickler wiederholt werden, ist es sinnvoll, eine Schleife zu erstellen. Auf diese Weise müssen wir die Aktionen nur einmal definieren.
Für diesen Prozess fügen wir eine Foreach-Schleife hinzu. Eine Foreach-Schleife kann hinzugefügt werden, indem Sie das folgende hervorgehobene Symbol in der Task-Symbolleiste auswählen:
Eine Foreach-Schleife enthält ihr eigenes separates Canvas. Sie hat ein Startelement, das die Regel für die Schleife enthält. Sie können Aufgaben innerhalb der Foreach-Schleife hinzufügen, die abhängig von der Logik im Startelement ausgeführt werden.
Zuerst erstellen wir eine Aufgabe, um die Aktionen des Entwicklers vom Kanban-Board abzurufen. Die Erstellung ist der Erstellung der vorherigen Aufgabe sehr ähnlich – nur der Typ und die Parameter sind anders.
Abhängig davon, ob im Kanban-Board für den vergangenen Tag Aktionen gefunden wurden oder nicht, werden unterschiedliche Dinge getan. Dafür wird ein Entscheidungselement benötigt. Es gibt zwei Arten von Entscheidungselementen, das inklusive Entscheidungselement und das exklusive Entscheidungselement. Diese Elemente werden in diesen Artikeln erklärt:
Exklusive Entscheidung
Inklusive Entscheidung
Für diesen Prozess verwenden wir das exklusive Entscheidungselement, das durch Auswahl des folgenden hervorgehobenen Symbols aus der Aufgabensymbolleiste hinzugefügt wird:
Die Bedingung wird im Pfad und nicht im eigentlichen Element gespeichert. Dies liegt daran, dass für dasselbe Element mehrere Pfade mit unterschiedlichen Bedingungen existieren können.
Es könnte benannt werden, aber wichtiger ist es, die Bedingungen zu benennen und zu definieren, die den Pfad definieren, den der Prozess nehmen wird. Diese werden auf den Pfaden definiert, die das Entscheidungselement verlassen. Der Pfad, der unten aus der Raute herausführt, ist der Standardpfad, wenn aufgrund der Bedingungen kein anderer Pfad genommen werden kann.
Der vom Entscheidungselement nach oben führende Pfad unterliegt einer Bedingung. Der vom Entscheidungselement nach unten führende Pfad wird gewählt, wenn die Bedingung des anderen Pfads nicht erfüllt ist.
Als Nächstes werden die Aufgaben erstellt, die die E-Mail-Nachrichten aus einer Datei lesen, eine zufällige Nachricht aus den Nachrichten auswählen und die Nachricht senden.
Sobald die Nachricht gesendet wurde, ist der Aktionssatz abgeschlossen und wir können entweder einen neuen Aktionssatz starten oder die Schleife verlassen, je nachdem, ob noch Entwickler zur Verarbeitung übrig sind.
Um die Schleife zu verlassen, müssen wir ein Return-Element hinzufügen, das das Ende der Schleife signalisiert und durch Auswahl des folgenden hervorgehobenen Elements in der Symbolleiste erstellt werden kann:
Fügen Sie das Return-Element an die letzte Aufgabe in der Schleife an. Dies kann auch erfolgen, indem Sie das letzte Element in der Schleife auswählen und im Popup dasselbe Element mit der Bezeichnung „Return anhängen“ auswählen.
Es ist möglich, den Rückgabewert zu definieren, sodass die Tasks nach der Schleife mit den in der Schleife verarbeiteten und erstellten Daten arbeiten können. Unser Prozess endet jedoch direkt nach der Schleife, sodass mit dem Rückgabewert der Schleife nichts Ausgefallenes gemacht werden muss.
Schließlich sollten wir nach der Foreach-Schleife ein Return-Element hinzufügen, um das Ende des gesamten Prozesses zu signalisieren. Genau wie das Return-Element in der Schleife kann auch das Return-Element für den Prozess so eingestellt werden, dass es einen bestimmten Wert oder ein bestimmtes Objekt zurückgibt, das außerhalb des Prozesses übernommen und verarbeitet werden kann. Im Fall eines HTTP-Triggers kann die Website, die den Prozess ausgelöst hat, dem Benutzer beispielsweise je nach Ergebnis des Prozesses unterschiedliche Dinge anzeigen.
Unser Prozess erledigt alles, was er erledigen muss. Der Rückgabewert des Prozesses wird nicht benötigt, daher werden wir nichts Ausgefallenes damit machen.
Und da haben wir ihn: unseren Wertschätzungsprozess.
Wir haben in unserem Prozess nicht alle möglichen Elemente verwendet. Im nächsten Beitrag werden wir die hier nicht verwendeten Elemente durchgehen.
Wurf- und Fangfehler
Unser Prozess ist sehr optimistisch – wir gehen immer davon aus, dass die Dinge funktionieren. Allerdings können wir uns solchen Optimismus nur selten leisten.
In Frends gibt es zwei Methoden, die Sie zur Fehlerbehandlung verwenden können: Catch/Scope und Throw, beides Elemente, die im Prozess-Editor verwendet werden sollen.
Um die erste Methode zu betrachten, können Sie ein Catch-Element verwenden, um eine Ausnahme zu behandeln. Das Catch-Element wird durch den folgenden hervorgehobenen Elementtyp dargestellt, der in der Symbolleiste zu finden ist:
Catch-Elemente können an bestimmte Aufgaben, Foreach-Schleifen oder den gesamten Prozess angehängt werden. Catch-Elemente verweisen auf Fehlerhandlerelemente, bei denen es sich um eine Aufgabe, einen Code, einen Call Subprocess oder ein Scope-Element handeln kann, das zum Verarbeiten einer von einem Catch-Element abgefangenen Ausnahme verwendet wird.
Das am häufigsten verwendete Fehlerbehandlungselement ist ein Bereichselement. Ein Bereichselement gruppiert andere Elemente und behandelt alle Ausnahmen im Hauptprozessablauf, ohne den Prozessablauf in irgendeiner Weise zu beeinträchtigen. Alle Aktionen im Bereichselement sind außerhalb davon nicht sichtbar. Das Bereichselement ist das folgende hervorgehobene Element in der Symbolleiste:
Unser Prozess ist zwar großartig und potenziell sehr nützlich für unsere Entwickler, verfügt jedoch über keinerlei Fehlerbehandlung. Hoffentlich sind diese E-Mails nicht die einzige Möglichkeit, wie die Entwickler Anerkennung erhalten. Wenn die E-Mails nicht mehr eingehen, ist es relativ einfach, das Problem zu ermitteln und zu beheben, sodass die Anerkennungs-E-Mails wieder eingehen.
Wir könnten unserem Prozess ein Catch and Scope hinzufügen, um es entweder erneut zu versuchen oder den Eigentümer des Prozesses über den Fehler zu benachrichtigen. Hier ist ein Beispiel, wie das aussehen könnte:
Die andere Fehlerbehandlungsmethode ist das Throw-Element. Es wird durch das folgende hervorgehobene Element in der Symbolleiste dargestellt:
Throw-Elemente werden verwendet, um eine Ausnahme auszulösen, wenn im Prozess ein Fehler auftritt. Throw-Elemente verwenden jedoch einen Ausdruck als Parameter, mit dem Sie die Antwort Ihres Prozesses auf den Fehler anpassen können.
Liegt eine Fehlersituation vor, die einen Fehler darstellt und beispielsweise durch eine eindeutige Fehlermeldung differenziert werden soll, sind Throw Elements das Werkzeug dafür.
Throw-Elemente ähneln stark Return-Elementen, da beide die Ausführung des Prozesses effektiv beenden.
Unser Prozess hat keine Fehlersituationen dieser Art, daher werden die Knoten nicht verwendet. Unten sehen Sie ein Beispiel dafür, wie die Throw-Elemente aussehen:
Jetzt wissen Sie alles, was Sie über die Erstellung eines Prozesses mit Freunden wissen müssen.