Einen Prozess entwerfen
Ziel
Einen Prozess zeichnen: die Lanes, die er durchquert, die Schritte in jeder davon und die Verbindungen zwischen ihnen.
Den Designer öffnen
Wählen Sie unter Prozesse einen Prozess aus, und wählen Sie Entwerfen – oder klicken Sie auf die Zeile. Die Zeichenfläche öffnet sich innerhalb der App, mit Brotkrumenleiste und Titelleiste weiterhin darüber.
Ein Prozess, den Sie noch nie gezeichnet haben, öffnet sich mit einem Startdiagramm statt einer leeren Zeichenfläche: eine Lane, ein Start und ein Ende. Das ist die Form, die jeder Prozess hat, also ist es die Form, mit der Sie beginnen.
Die vier Bereiche
- Die Palette, am linken Rand – was Sie hinzufügen können: eine Lane und die Knotenarten.
- Die Gliederung, daneben – der Prozess als Baum: der Stamm, seine Lanes und die Knoten in jeder. Eine Auswahl in der Gliederung wählt auf der Zeichenfläche aus und umgekehrt. Ziehen Sie ihren rechten Rand, um sie zu verbreitern.
- Die Zeichenfläche, in der Mitte – das Diagramm selbst.
- Der Eigenschaftenbereich, rechts – alles über das, was ausgewählt ist.
Lanes: wer die Arbeit macht
Fügen Sie eine Lane über die Palette hinzu, oder ziehen Sie eine auf die Zeichenfläche. Benennen Sie sie nach der Rolle, nicht nach der Person – „Manager“, kein Name –, denn ein Prozess überdauert jeden, der die Aufgabe in diesem Monat erledigt.
- Benennen Sie eine Lane um, indem Sie auf ihre Kopfzeile doppelklicken.
- Ändern Sie die Größe einer Lane, indem Sie die Grenze darunter ziehen. Die Lanes darunter rücken mit nach unten, ebenso ihre Knoten.
- Ein Knoten gehört zu der Lane, in der er liegt. Ziehen Sie ihn in eine andere Lane, und er wechselt den Besitzer.
Legen Sie die Rolle der Lane fest, sonst gehen ihre Schritte an niemanden
Eine Lane „Manager“ zu nennen, sagt einem Leser, wer die Arbeit macht. Der Engine sagt es nichts. Wählen Sie die Lane aus, und wählen Sie im Eigenschaftenbereich ihre Rolle – ein Nachschlagefeld über die Sicherheitsrollen dieser Umgebung, mit einem Suchfeld: Beginnen Sie zu tippen, und die Liste grenzt sich ein, nach dem Namen der Rolle oder nach ihrem logischen Namen.
Früher war das ein Feld, in das Sie den Namen tippten – ein Tippfehler ergab also eine Lane, deren Arbeit an eine Rolle ging, die nicht existiert, und nichts wies darauf hin, bis eine Ausführung anhielt. Lassen Sie es leer, und jeder Schritt entscheidet selbst.
Jede Benutzeraufgabe in dieser Lane geht dann an alle, die diese Rolle innehaben – genau deshalb lohnt es sich überhaupt, eine Swimlane zu zeichnen, und es wird einmal für die Lane festgelegt statt an jedem Schritt. Ein Schritt mit einem eigenen Ausdruck unter Zugewiesen an überschreibt es.
Eine Lane ohne Rolle mit Schritten ohne Zugewiesen an ist ein Prozess, der läuft und dann mit „… could not be assigned to anybody“ anhält. Die Aufgabe wird trotzdem erstellt, sodass ein Administrator sie sehen kann – aber sie steht in niemandes Liste.
Zwei weitere Dinge müssen zutreffen, bevor eine Rolle eine Person erreicht: Die Rolle muss existieren (Rollen, im Admin Control Center), und jemand muss sie in einer Einheit innehaben (Prozessrollen, in der App Organisation). Siehe Ihre Organisation einrichten.
Knoten: die Schritte
| Art | Bedeutung |
|---|---|
| Start | Wo der Prozess beginnt. Zeichnen Sie genau einen. |
| Ende | Wo er endet. Es kann mehrere geben – genehmigt und abgelehnt sind beides Enden. |
| Aufgabe | Ein Schritt. Der, den Sie am häufigsten verwenden. |
| Verzweigung | Eine Entscheidung: ein Weg hinein, mehrere hinaus. |
| Aufteilung | Aufteilen in Pfade, die alle laufen. |
| Zusammenführung | Warten, bis diese Pfade wieder zusammenkommen. |
| Zeitgeber | Eine Zeitspanne lang oder bis zu einem Zeitpunkt warten. Niemand wird gebeten, etwas zu tun. |
Eine Aufgabe hat außerdem eine Aufgabenart, die im Eigenschaftenbereich gewählt wird – Benutzer, Dienst, Skript, manuell, Senden, Empfangen, Geschäftsregel. Sie zeichnet ein kleines Abzeichen auf den Knoten, und daran erkennt ein Leser auf einen Blick „jemand füllt das aus“ im Unterschied zu „die Plattform erledigt das selbst“.
Welche Schritte warten
Nur eine Benutzer-Aufgabe lässt den Lauf auf eine Person warten. Jede andere Art von Aufgabe führt ihr Beim Eintritt und Beim Verlassen aus und geht sofort weiter; ihre Art ist für den da, der die Zeichnung liest.
Wenn ein Lauf mehrere Pfade hat
Nach einer Aufteilung ist ein Lauf auf mehreren Pfaden zugleich. Zwei Auswahlen entscheiden, was geschieht, wenn sie enden.
- Bei einer Zusammenführung Geht weiter, wenn: Alle Pfade angekommen sind (Standard), Der erste Pfad ankommt oder Eine Anzahl von Pfaden angekommen ist, mit Wie viele Pfade daneben. Gezählt werden die Pfade, die ihre Aufteilung gestartet hat, nicht die hineingezeichneten Verbindungen. Ein Pfad, der noch läuft, wenn es weitergeht, wird gestoppt, und seine offene Aufgabe wird zurückgezogen.
- Bei einem Ende Wenn ein Pfad es erreicht: Diesen Pfad beenden (Standard: der Lauf endet, wenn kein anderer Pfad mehr läuft) oder Den ganzen Lauf beenden, was jeden anderen Pfad stoppt. Das Zweite ist das Ende für „abgelehnt, alles anhalten“.
Titel und Name eines Schritts
Jeder Schritt hat beides, und beides hat eine andere Aufgabe – dasselbe Paar wie Anzeigename und logischer Name einer Tabelle.
- Titel ist das, was der Kasten auf der Zeichenfläche zeigt. Schreiben Sie ihn für einen Leser, in der Sprache, in der Sie arbeiten, und formulieren Sie ihn um, wann immer Sie möchten.
- Name ist das, womit Code, der Ausführungsverlauf und ein anderer Prozess den Schritt aufrufen. Er besteht aus Kleinbuchstaben, Ziffern und Unterstrichen und ist erforderlich.
Den Namen tippen Sie normalerweise nicht. Er füllt sich während der Eingabe aus dem Titel – aus
„Approve Leave“ wird approveleave –, und er folgt nicht mehr, sobald Sie ihn selbst bearbeiten,
sodass ein Name, den Sie gewählt haben, nie überschrieben wird. Leeren Sie das Feld, um den Vorschlag
zurückzubekommen.
Zwei Schritte können sich keinen Namen teilen. Leitet ein Titel einen bereits vergebenen ab, erhält der
Neue _2; der Schritt, der ihn hatte, behält ihn, denn eine Umbenennung würde ändern, worauf sich jedes
Skript bezieht, das bereits darauf verweist.
Ein Titel auf Persisch oder Arabisch ergibt keinen Namen, daher wird der Schritt nach seiner Art
benannt – task, task_2. Benennen Sie ihn in etwas um, das Sie im Verlauf einer Ausführung
wiedererkennen.
Ein Name war früher optional, daher kann ein früher gezeichneter Prozess Schritte ohne Namen haben – oder mit einem Namen im alten, freien Format. Solche Dokumente werden nicht mehr akzeptiert.
Öffnen Sie jeden davon im Designer, und speichern Sie ihn. Die Namen füllen sich beim Öffnen aus den Titeln, und das Speichern ist schon die ganze Korrektur. Nichts konvertiert sie für Sie, und ein Prozess, den Sie nicht erneut geöffnet haben, lässt sich beim nächsten Bearbeiten nicht speichern.
Verbindungen
Wählen Sie Verbinden in der Palette, und ziehen Sie dann von einem Knoten zu einem anderen. Verbindungen werden automatisch geführt – die Ecken zeichnen Sie nicht.
- Geben Sie einer Verbindung eine Beschriftung, wo sie eine braucht. Bei den ausgehenden Verbindungen einer Verzweigung ist sie das, was ein Leser als Entscheidung versteht: Genehmigt, Über dem Limit, Abgelehnt.
- Verbindungsstil – gebogen oder rechtwinklig – liegt am Prozessstamm und gilt für das ganze Diagramm, denn ein Diagramm, das beides mischt, liest sich wie ein Fehler und nicht wie eine Entscheidung.
Variablen: was der Prozess mit sich trägt
Wählen Sie den Prozessstamm in der Gliederung aus, und fügen Sie Variablen hinzu – die Werte, die dieser Prozess von einem Schritt zum nächsten trägt. Jede hat einen Namen und einen Typ (Text, Zahl, Ja/Nein, Datum).
Der Name ist das, was ein Skript schreibt: getVariable("total"). Eine Variable umzubenennen
schreibt die Skripte, die sie nennen, nicht um – behandeln Sie den Namen also als das, was Sie
benennen, nicht als Beschriftung, die Sie frei ändern können. Eine Variable, die Sie noch nicht
benannt haben, wird einfach nirgends angeboten.
Entscheidungsformulare: was eine Person ausfüllt, um einen Schritt abzuschließen
Ein Entscheidungsformular ist das kurze Formular, das jemand ausfüllt, um eine Benutzeraufgabe abzuschließen, zusammen mit den Ergebnissen – den Schaltflächen, die sie beenden. Es ist kein modellgesteuertes Formular über einer Tabelle: Es gehört zum Prozess, reist im Prozessdokument mit und fragt nur das, was die Entscheidung braucht.
Wählen Sie den Prozessstamm in der Gliederung aus – dort öffnet sich der Designer –, und Sie erhalten Entscheidungsformulare unter Variablen, denn ein Entscheidungsformular gehört zum Prozess und nicht zu einem einzelnen Schritt: Mehrere Schritte können dasselbe zeigen.
Jedes Entscheidungsformular hat:
- Einen Namen des Entscheidungsformulars, über den eine Aufgabe darauf verweist, und eine Überschrift, die die lesende Person sieht.
- Felder – ein Feldname, eine Beschriftung und ein Datentyp. Es sind die eigenen Feldtypen der Plattform, sodass ein Entscheidungsformular dieselben Datumsauswahlen, Kalender und Auswahllisten erhält wie ein Datensatzformular.
- Ergebnisse – eine Zeile pro Schaltfläche. Der Schaltflächentext steht darauf, der Stil bestimmt ihr Aussehen (normal, primär, destruktiv), und Kommentar erforderlich lässt diese eine Schaltfläche auf einer Antwort im ersten mehrzeiligen Feld des Entscheidungsformulars bestehen. Setzen Sie es bei einer Ablehnung und lassen Sie es bei einer Genehmigung weg: Genau für diesen Unterschied gibt es die Einstellung.
Wählen Sie dann eine Benutzeraufgabe aus, und wählen Sie ihr Entscheidungsformular aus der Liste.
Eine Aufgabe ohne Entscheidungsformular lässt sich trotzdem abschließen, aber die Person hat keine Möglichkeit, etwas dazu zu sagen. Ein Prozess, dessen menschliche Schritte nichts fragen, ist meist ein Prozess, der noch nicht fertig entworfen ist.
Was sie ansehen, während sie entscheiden
Unter dem Entscheidungsformular legt Was sie ansehen fest, was den Hauptbereich füllt, während die Person entscheidet: nichts, das Formular eines Datensatzes, eine Liste, ein Bericht oder ein Bildschirm. Wählen Sie eines aus, und der Rest des Abschnitts erscheint.
| Feld | Wofür es da ist |
|---|---|
| App | In welcher App es sich öffnet. Lassen Sie es leer, öffnet es sich in einer App, die das enthält, worum es im Schritt geht: in der App, in der die Person gerade ist, wenn sie es enthält, sonst in einer, die an Geschäftsprozessen teilnimmt. Das ermöglicht es einem Prozess, zu funktionieren, nachdem er anderswo importiert wurde. |
| Tabelle / Bericht / Bildschirm | Worum es in dem Schritt geht. Welches der drei Sie erhalten, hängt davon ab, was Sie oben gewählt haben. |
| Welches Formular / Welche Ansicht | Ein benanntes Formular bzw. eine benannte Ansicht statt des Standards der Tabelle. Leer verwendet den Standard. |
| Geöffnet | Schreibgeschützt oder zum Bearbeiten. Schreibgeschützt ist die übliche Antwort – jemand liest, um zu entscheiden –, und das Bearbeiten läuft mit den eigenen Berechtigungen des Datensatzes: Eine Aufgabe gewährt keinen eigenen Zugriff. |
Jedes davon ist eine Dropdownliste dessen, was diese Umgebung tatsächlich hat. Früher waren es Felder, in die Sie einen logischen Namen tippten, und ein von Hand getippter Name kann nur falsch geschrieben werden – was sich Wochen später als „der Schritt öffnet nichts“ zeigt, vor genau den Personen, für die der Prozess gebaut wurde.
Welcher Datensatz geöffnet wird, steht nicht in dieser Liste: Es ist ein Ausdruck und liegt daher
unter Code bei den anderen. Meist getRecordRef("request") – der Datensatz, um den es in dieser
Ausführung geht.
Parameter: was dem Schritt sonst noch gesagt wird
Der Datensatz beantwortet welcher, und bei einem Formular ist das meist die ganze Frage. Anderswo ist es das nicht: Ein Bericht will den Zeitraum, den er abdeckt, ein Bildschirm den Betrag, der genehmigt wird, und wer ihn beantragt hat. Diese Werte liegen in dieser Ausführung und nicht im Artefakt.
Wählen Sie Parameter hinzufügen, geben Sie ihm den Namen, den der Bericht oder Bildschirm erwartet,
und sein Wert erscheint als Zeile unter Code – denn ein Wert ist ein Ausdruck über die
Variablen des Prozesses und den Zustand dieser Ausführung: getVariable("month"), instanceStartedBy().
Über Namen findet das Artefakt einen Wert, daher können sich zwei Parameter keinen Namen teilen, und ein Parameter ohne Namen wird beim Speichern des Prozesses verworfen.
Ergebnisse: welche Entscheidung eine Verbindung nimmt
Eine Benutzeraufgabe endet, wenn jemand eines der Ergebnisse ihres Entscheidungsformulars drückt, und jedes Ergebnis schickt den Prozess einen anderen Weg. Wählen Sie eine Verbindung aus, die eine Benutzeraufgabe verlässt, und legen Sie Gewählt, wenn fest – eine Dropdownliste der Ergebnisse des Entscheidungsformulars dieser Aufgabe.
Dadurch wird Genehmigen oder ablehnen zu einem Schritt statt zu einer Aufgabe, auf die eine Verzweigung folgt, die noch einmal fragt, was die Person bereits entschieden hat.
- Es wird nur angeboten, wo die Aufgabe ein Entscheidungsformular mit Ergebnissen zeigt. Anderswo gibt es nichts auszuwählen.
- Ein Entscheidungsformular mit einem Ergebnis braucht nichts davon: eine Schaltfläche, ein Weg hinaus.
- Bei mehreren braucht jedes seine eigene Verbindung. Der Bereich Probleme weist darauf hin – er meldet ein Ergebnis, das keine Verbindung nimmt, zwei Verbindungen, die dasselbe beanspruchen, und eine Verbindung, die ein Ergebnis nennt, das das Entscheidungsformular nicht mehr anbietet – so geschieht es, wenn Sie ein Entscheidungsformular bearbeiten, das auch eine andere Aufgabe zeigt.
Einen anderen Prozess aufrufen
Setzen Sie den Typ einer Aufgabe auf Prozess aufrufen, und wählen Sie den Auszuführenden Prozess. Gedacht ist, dass dieser Schritt wartet, bis jener Prozess fertig ist – die Engine führt ihn aber noch nicht aus. Die Auswahl bleibt erhalten, und das Problemfenster prüft, dass einer gewählt ist; zur Laufzeit führt der Schritt sein Beim Eintritt und Beim Verlassen aus und geht sofort weiter, ohne den anderen Prozess zu starten – wie jeder Schritt, der keine Benutzeraufgabe ist.
Verwenden Sie das, wenn mehrere Prozesse dieselbe Arbeit brauchen – eine Genehmigung, eine Bonitätsprüfung. Ein Prozess, der dreimal aufgerufen wird, bleibt eine Sache, die man ändert; drei Kopien davon widersprechen sich innerhalb eines Jahres.
Die Auswahl listet die anderen Prozesse dieser Umgebung auf. Ein Prozess kann sich nicht selbst aufrufen.
Bedingungen: welchen Weg eine Verzweigung nimmt
Wählen Sie eine Verbindung aus, die eine Verzweigung verlässt, und öffnen Sie ihre Bedingung
unter Code – ein Ausdruck, der entscheidet, ob der Ablauf diese Verbindung nimmt.
getVariable("approved") auf der einen Seite, !getVariable("approved") auf der anderen.
Das wird bei den Verbindungen einer Verzweigung angeboten und sonst nirgends. Eine Aufgabe hat einen Weg hinaus, sodass eine Bedingung dort eine Frage mit nur einer Antwort wäre.
Eine Bedingung darf nur lesen. Sie entscheidet über einen Weg, und die Engine kann sie mehr als einmal fragen – eine Bedingung, die etwas ändert, würde den Prozess davon abhängig machen, wie oft sie zufällig gefragt wurde. Der Editor bietet Ihnen die Wörter dafür gar nicht an.
An wen eine Aufgabe geht
Eine Benutzeraufgabe hat unter Code eine Zeile Zugewiesen an: ein Ausdruck, der beantwortet, wer sie erledigen soll.
| Sie möchten | Schreiben Sie |
|---|---|
| Alle, die eine Rolle innehaben | role("Manager") |
| Eine bestimmte Person | user("a.khan") |
| Ein Team | team("Finance") |
| Die Person, die den Prozess gestartet hat | instanceStartedBy() |
Es ist absichtlich ein Ausdruck und keine Auswahl: Die Zuweisungen, die es sich zu schreiben lohnt, sind die, die eine Auswahl nicht ausdrücken kann – der Genehmiger für den Betrag in einer Variablen, der Vorgesetzte der Person, die den Antrag gestellt hat.
Nur eine Benutzeraufgabe hat eine. Eine Dienstaufgabe erledigt die Plattform, es gibt also niemanden, dem man sie geben könnte.
Ein Schritt ohne Ausdruck fällt auf die Rolle seiner Lane zurück – das ist der Normalfall: Schreiben Sie den Ausdruck nur dort, wo ein Schritt vom Rest der Lane abweicht.
Warten und Verspätung
Ein Zeitgeber: auf die Uhr warten
Zeichnen Sie einen Zeitgeber dort, wo der Prozess einfach warten soll. Niemand wird gebeten, etwas zu tun: Die Ausführung hält dort an und geht von selbst weiter.
Setzen Sie Löst aus auf Nach einer Zeitspanne, und füllen Sie Warten für aus: eine Zahl und eine daneben gewählte Einheit – 3 Tage, 4 Stunden, 90 Minuten.
Ein Zeitgeber ohne Dauer wartet nicht – er hält die Ausführung an. Das ist die einzige Einstellung eines Prozesses ohne sinnvollen Standard dahinter: Sofort auszulösen würde aus einem Warten stillschweigend kein Warten machen, daher hält der Weg stattdessen an, und der Verlauf der Ausführung sagt „… does not say when it fires“. Wenn ein Zeitgeber, den Sie gezeichnet haben, nie auslöst, ist das das Erste, was Sie prüfen sollten.
Monate und Jahre werden absichtlich nicht angeboten. Ein Monat hat im Februar 28 Tage und im März 31, sodass eine so geschriebene Wartezeit je nach Beginn eine andere Anzahl Stunden bedeuten würde. Verlangen Sie 30 Tage.
Die Dauer wird als ISO-8601-Dauer gespeichert – P3D, PT4H, PT90M –, das liest die Engine, und
das muss ein von Hand geschriebener oder von einer KI generierter Prozess angeben. Sie tippen sie nie;
Zahl und Einheit sind das ganze Feld. Eine von Hand in zwei Einheiten geschriebene Dauer (PT4H30M)
öffnet sich als dieselbe Dauer in einer Einheit (270 Minuten).
Wählen Sie stattdessen Zu einem Zeitpunkt, den der Code beantwortet, wenn der Zeitpunkt von den Daten abhängt – dem Datum im Datensatz, einer Variablen, die jemand ausgefüllt hat. Schreiben Sie dann den Ausdruck unter Code; er darf entweder einen Zeitpunkt oder eine Dauer liefern.
Eine Frist: bis wann ein Schritt erledigt sein soll
Wählen Sie eine Benutzeraufgabe aus, und füllen Sie Fällig innerhalb aus – dasselbe Paar aus Zahl und Einheit wie beim Zeitgeber. Die Uhr beginnt in dem Moment, in dem die Aufgabe in der Liste einer Person erscheint – nicht, wenn sie sie öffnet –, sodass eine Aufgabe, die am Freitagnachmittag erstellt wird, nicht stillschweigend das Wochenende dazugewinnt.
Die Person sieht Fällig … unter der Aufgabe in ihrer Liste, und sobald der Zeitpunkt verstrichen ist, wird es rot und lautet War fällig …. Daneben sagt Wartet, wie lange die Aufgabe schon liegt.
Bei Verspätung legt fest, was der Prozess dann tut:
| Auswahl | Was passiert |
|---|---|
| Als verspätet markieren | Nichts bewegt sich. Die Aufgabe ist in der Liste sichtbar verspätet, und der Verlauf der Ausführung hält es fest. |
| Zusätzlich nach oben anbieten | Wer in der Eskalation der Lane genannt ist, bekommt sie ebenfalls angeboten. Die Person, die sie bereits hatte, behält sie – eine Person mehr kann handeln, und niemandem wird etwas weggenommen, der vielleicht gerade fertig wird. |
| Automatisch entscheiden | Der Prozess drückt eine der eigenen Schaltflächen der Aufgabe an ihrer Stelle. Wählen Sie unter Entscheiden als, welche. |
Die automatische Entscheidung verwendet die eigenen Ergebnisse des Schritts, sodass das Diagramm bereits zeigt, wohin der Prozess als Nächstes geht – es gibt keinen zweiten, unsichtbaren Weg aus dem Schritt. „Wenn niemand innerhalb von drei Tagen genehmigt, als abgelehnt behandeln“ schreiben Sie, indem Sie Automatisch entscheiden und dann Ablehnen wählen.
Lassen Sie Fällig innerhalb für einen Schritt ohne Frist leer, und das sind die meisten – die Zahl zu leeren ist das, was eine Frist wieder entfernt.
Setzen Sie die Dauern während des Aufbaus auf ein oder zwei Minuten, veröffentlichen Sie, und starten
Sie eine Ausführung: Die Eskalation, das Warten und die automatische Entscheidung passieren alle,
während Sie den Verlauf der Ausführung ansehen. So ist
bpms-deadlines-and-timers eingestellt, und es ist das einzig Unrealistische an diesem
Beispiel.
Code: was läuft und was berechnet wird
Wählen Sie eine Aufgabe aus, und Sie erhalten ihre Liste Code – alles an diesem Schritt, was in BS Lang geschrieben ist. Die Auswahl einer beliebigen Zeile öffnet die Codeseite.
Die ersten vier sind die Momente, auf die er reagieren kann:
| Platz | Wann er läuft |
|---|---|
| Beim Eintritt | Der Prozess erreicht diesen Schritt. |
| Bei Zuweisung | Die Aufgabe hat jemanden – nur Benutzeraufgaben. |
| Bei Abschluss | Diese Person markiert sie als erledigt – nur Benutzeraufgaben. |
| Beim Verlassen | Der Prozess verlässt diesen Schritt, egal auf welchem Weg. |
Der Prozessstamm hat drei eigene, in derselben Form: Beim Start, Bei Abschluss und Bei Abbruch. Beim Start ist der Ort, an dem Sie einer Variablen ihren ersten Wert geben.
Darunter stehen bei einer Benutzeraufgabe die Dinge, die sie berechnet, statt sie auszuführen: Zugewiesen an, Datensatz und eine Zeile pro Parameter, nach dem Parameter benannt. Sie stehen in derselben Liste, weil sie dieselbe Art von Ding sind – ein Stück BS Lang, das zu diesem Schritt gehört –, und eine Liste ist ein Ort, an dem man nachsieht, „was dieser Schritt ausführt“.
Die Liste zeigt, in welchen Zeilen bereits etwas geschrieben steht, sodass Sie auf einen Blick sehen, wo die Arbeit liegt.
Eine Verzweigung hat Beim Eintritt und Beim Verlassen und keinen Platz, der einen Weg wählt.
- Beim Eintritt läuft in dem Moment, in dem der Prozess ankommt, bevor irgendeine Bedingung gefragt wird. Hier erledigt eine Verzweigung ihre Rechenarbeit: die Antwort einmal ausrechnen, in eine Variable legen und jede Bedingung sie lesen lassen. Sechs Betragsstufen bedeuten dann sechs kurze Bedingungen statt sechs Kopien der Summe.
- Beim Verlassen läuft, sobald ein Weg gewählt wurde. Es läuft nicht, wenn keine Bedingung zutraf – nichts ist hinausgegangen, also gab es kein Verlassen.
- Die Entscheidung bleibt an den Verbindungen. Es gibt absichtlich keinen Code, der einen Ausgang wählt: Ein Diagramm, dessen Verzweigung irgendwo entschieden wird, wo Sie es nicht sehen können, ist ein Diagramm, das darüber lügt, was der Prozess tut.
Die Codeseite
Sie füllt den Editor und trägt die Liste der Plätze an ihrer Seite, sodass der Wechsel zwischen den
Momenten einer Aufgabe ein Klick ist. Das Auge in ihrer Kopfzeile listet alles auf, was Sie aus
diesem Platz aufrufen können – und das ist nicht überall dasselbe: Eine Bedingung und Zugewiesen
an dürfen nur lesen, ein Handler darf Dinge ändern, und nur Zugewiesen an werden user(),
role() und team() angeboten.
Auf der Codeseite gibt es kein Speichern. Speichern in der Titelleiste ist das einzige, und es speichert den ganzen Prozess.
Ein Skript zu speichern führt es nicht aus. Variablen, Bedingungen, Zuweisungen und Skripte werden mit dem Entwurf gespeichert und beim Schreiben geprüft; sie laufen, sobald der Prozess veröffentlicht ist und eine Ausführung startet.
Probleme: was noch fehlt
In der Ecke der Zeichenfläche steht eine Leiste, die sagt, wie viele Probleme der Prozess hat. Öffnen Sie sie für die Liste; wählen Sie eine Zeile aus, und der Designer bringt Sie zu dem, worum es geht – dem Knoten, der Verbindung oder dem Prozessstamm.
Sie prüft die Dinge, die die Engine verlangen wird:
- genau einen Start und mindestens ein Ende;
- keine Verbindung führt in einen Start oder aus einem Ende, denn ein Lauf beginnt am einen und endet am anderen, sodass sie nie genommen würde;
- keinen Schritt, den der Ablauf nie erreichen, und keinen, den er nie verlassen kann;
- eine Bedingung an jeder Verbindung, die eine Verzweigung verlässt, und mindestens zwei Wege aus einer hinaus;
- mindestens zwei Wege aus einer Aufteilung und zwei in eine Zusammenführung, und von beiden gleich viele;
- jede Variable, die ein Skript nennt, ist deklariert, und jede Variablenzeile hat einen Namen;
- jedes Skript lässt sich parsen.
Nichts hiervon hält Sie auf. Ein halb gezeichneter Prozess meldet eine Seite voller Probleme und lässt sich einwandfrei speichern – genau darum zeichnet man ihn ja. Die Liste ist das, woran Sie erkennen, was noch übrig ist, und es ist dieselbe Liste, die die Plattform anwendet, wenn ein Prozess zur Ausführung veröffentlicht wird.
Eine Anmerkung zu zweien davon. Der Bereich sagt, ob sich ein Skript parsen lässt; ob es einen bestimmten Namen aufrufen darf, ist Sache des Code-Editors, und der unterstreicht das während der Eingabe anhand dessen, was dieser Platz sehen kann. Und Aufteilungen und Zusammenführungen werden gezählt, nicht eins zu eins zugeordnet – ein Prozess, der sich öfter aufteilt als zusammenführt, hat noch einen laufenden Pfad, wenn er vorbei sein sollte, und das ist fast immer der Fehler.
Automatisch anordnen
Ansicht → Automatisch anordnen räumt das Diagramm von links nach rechts in Ablaufreihenfolge auf und hält dabei jeden Knoten in seiner eigenen Lane. Es verschiebt Knoten horizontal und führt die Verbindungen neu; es verschiebt nie Arbeit von einer Person zu einer anderen.
Mit KI generieren
Mit KI generieren beschreibt einen Prozess in Worten und zeichnet ihn. Was auch immer zurückkommt, wird validiert, bevor es die Zeichenfläche erreicht, genau wie eine importierte Datei – ein generiertes Diagramm, das nicht zusammenpasst, wird also abgelehnt statt gezeichnet.
Sie korrigiert sich selbst, bevor sie aufgibt. Wenn das, was zurückkommt, nicht zusammenpasst, schickt die Plattform es mit dem benannten Problem direkt an das Modell zurück, statt Sie zu bitten, einen Schemafehler zu beheben, den Sie nie geschrieben haben. Sie versucht es bis zu dreimal, und die Schaltfläche zeigt dabei Korrigiere… Versuch 2 von 3. Einen Fehler bekommen Sie erst zu sehen, wenn die Korrektur versucht wurde, und was Sie dann sehen, ist das Letzte, was falsch war.
Es ersetzt, was auf der Zeichenfläche ist, und es speichert nicht. Sehen Sie es sich an, bevor Sie auf Speichern drücken.
Sie beschreiben den Prozess und sonst nichts. Welches KI-Modell antwortet, richtet ein Administrator einmal für die ganze Plattform ein – es gibt keinen Schlüssel einzufügen und keinen Anbieter auszuwählen, und nichts, was Sie hier tippen, geht irgendwohin außer an dieses eine Modell.
Ist keine KI verbunden, sagt Generieren das. Ein Mandantenadministrator verbindet sie einmal, unter Einstellungen → KI, für alle in der Organisation. Ein Maker kann sie nicht selbst einschalten.
Speichern
Speichern in der Titelleiste schreibt den Prozess. Das ist das einzige Speichern: Der Entwurf ist Teil der Komponente, es gibt also keine Datei, die mit ihm Schritt halten müsste, und nichts, woran Sie beim Exportieren denken müssten.
Wenn Sie mit ungespeicherten Änderungen gehen, wird vorher nachgefragt – über Schließen, über die Navigationsleiste und über die eigene Zurück-Schaltfläche des Browsers.
Veröffentlichen: Speichern ist nicht Ausliefern
Speichern bewahrt Ihre Arbeit. Veröffentlichen ändert, was läuft. Es sind zwei Schaltflächen, weil es zwei Entscheidungen sind, und die Trennung gibt es aus einem Grund: Ein Prozess, der bereits läuft, darf sich nicht unter den Personen ändern, die ihn ausführen. Ohne sie würde die Korrektur eines Tippfehlers um 16 Uhr den Prozess umschreiben, dem jede laufende Instanz gefolgt ist – einschließlich der Schritte, die sie bereits hinter sich hatte.
Die Engine liest also nur, was Sie veröffentlicht haben, und eine Veröffentlichung ist eine nummerierte, eingefrorene Kopie der Zeichnung, wie sie in diesem Moment war.
Die Zeile unter dem Titel sagt, in welchem der drei Zustände Sie sich befinden:
| Sie lautet | Bedeutung |
|---|---|
| Noch nicht veröffentlicht | Nichts führt diesen Prozess aus. |
| Version 3 läuft und entspricht dem, was Sie sehen | Sie sehen, was live ist. |
| Version 3 läuft. Sie haben unveröffentlichte Änderungen | Ihre gespeicherten Änderungen sind noch nicht live. |
Wählen Sie Veröffentlichen, und der Entwurf wird zur nächsten Version. Haben Sie ungespeicherte Änderungen, werden sie zuerst gespeichert, denn zu veröffentlichen, was auf dem Bildschirm ist, ist genau das, was das Wort bedeutet.
Ein paar Dinge, die Sie wissen sollten:
- Einen unveränderten Prozess zu veröffentlichen, wird abgelehnt. Hat sich seit der letzten Veröffentlichung nichts geändert, gibt es nichts zu veröffentlichen, und ein Verlauf voller identischer Versionen ist einer, den niemand lesen kann.
- Es gibt kein Zurückziehen einer Veröffentlichung. Eine Version, die möglicherweise jemand ausführt, löscht man nicht. Wenn Sie zurück wollen, legen Sie die vorherige Zeichnung auf die Zeichenfläche und veröffentlichen Sie diese – der Verlauf bleibt intakt, und genau das macht ihn wertvoll.
- Instanzen behalten die Version, in der sie begonnen haben. Was unter Version 2 begann, endet unter Version 2, egal was Sie veröffentlichen, während es läuft.
Veröffentlichen startet nichts. Es legt fest, was beim nächsten Start des Prozesses läuft, und bereits laufende Ausführungen behalten die Version, mit der sie begonnen haben.
Veröffentlichen wartet, bis die Problemliste leer ist. Solange die Ecke der Zeichenfläche etwas auflistet, ist die Schaltfläche nicht verfügbar, und wenn Sie den Mauszeiger darüber halten, steht dort, warum. Ein Prozess mit Problemen würde nicht laufen; früher speicherte das Veröffentlichen die Zeichnung zuerst und wurde dann abgelehnt.
Import und Export
JSON exportieren lädt den Entwurf als .bpms.json-Datei herunter – das, was jetzt auf der
Zeichenfläche ist, einschließlich ungespeicherter Änderungen, denn die Datei dient dazu, einen
Entwurf woandershin zu tragen, und die Version der letzten Woche zu exportieren, während Sie die dieser
Woche ansehen, ist die Art Überraschung, die man erst am anderen Ende bemerkt.
JSON importieren lädt eine Datei zurück. Es ersetzt, was gezeichnet ist, und speichert nicht – ein Import, der sich als falsche Datei herausstellt, wird also rückgängig gemacht, indem Sie den Bildschirm verlassen, ohne zu speichern.
Die Datei wird vor dem Laden geprüft: die Version, die Lanes, die Knoten und dass jede Verbindung tatsächlich zwei existierende Knoten verbindet. Eine Datei, die durchfällt, sagt, welche ID falsch war.
Sobald ein Prozess in seiner Lösung reist, dienen Import und Export dazu, einen Entwurf von Hand zwischen Umgebungen zu bewegen – eine Bequemlichkeit, nicht der Weg, auf dem Arbeit befördert wird. Das ist die Lösung.
Ein Bild exportieren
Exportieren → Bild (PNG) und Bild (SVG) zeichnen das Diagramm so, wie es aussieht – für ein Dokument, eine Folie oder eine Wand. Keines von beiden ist der Prozess: Sie lassen sich nicht wieder importieren.
Fehlerbehebung
-
Meine Variable erscheint nicht in den Vorschlägen des Editors. – Eine unbenannte Variable wird nirgends angeboten. Geben Sie der Zeile einen Namen, und verlassen Sie das Feld, damit der Name übernommen wird.
-
Ich finde
setVariablein einer Bedingung nicht. – Eine Bedingung darf nur lesen; siehe oben. Legen Sie die Änderung stattdessen in das Skript einer Aufgabe. -
Ein Skript, das ich an einer Aufgabe geschrieben habe, ist verschwunden. – Die Art einer Aufgabe zu ändern, ändert, welche Momente sie hat. Machen Sie aus einer Benutzeraufgabe eine Dienstaufgabe, und ihre Plätze Bei Zuweisung und Bei Abschluss werden nicht mehr angeboten; bei einem damit importierten Entwurf werden sie verworfen.
-
„That file is not valid JSON, so it could not be imported.“ – Die Datei ist abgeschnitten oder überhaupt kein Entwurf.
-
„That file is not a valid process design: …“ – Das Detail nennt die ID, die falsch ist: einen Knoten in einer Lane, die nicht in der Datei steht, eine Verbindung zu einem Knoten, der nicht da ist.
-
Speichern meldet, der Entwurf sei nicht gültig. – Vor dem Speichern läuft dieselbe Prüfung. Korrigieren Sie den genannten Knoten oder die genannte Verbindung; das Diagramm auf dem Bildschirm geht nicht verloren.
-
Ein Knoten ist beim Öffnen des Prozesses gesprungen. – Ein Knoten, der außerhalb seiner Lane lag, wird beim Öffnen in sie zurückgeholt. Die Lane eines Knotens ist die Person, die die Arbeit macht, daher dürfen beide nie voneinander abweichen.
-
Automatisch anordnen hat nichts getan. – Es ordnet nach dem Ablauf an und braucht daher Verbindungen. Ein Diagramm aus unverbundenen Knoten hat keine Reihenfolge, in die es sich ordnen ließe.
-
Der Bereich Probleme sagt, ein Schritt „führt nirgendwohin“. – Von ihm aus ist kein Ende erreichbar. Verbinden Sie ihn weiter, oder verbinden Sie ihn mit etwas, das bereits eines erreicht.
-
Es heißt, mein Skript lasse sich nicht parsen, und im Code-Editor sah es gut aus. – Der Bereich prüft jedes Skript im Prozess, auch die, die Sie gerade nicht ansehen. Wählen Sie die Zeile aus, um zum Knoten zu gelangen, und öffnen Sie dann den genannten Platz.
-
„Es ist kein KI-Anbieter eingerichtet. Öffnen Sie Einstellungen → KI, um einen zu verbinden.“ — die Organisation hat noch keine KI-Verbindung. Ein Mandantenadministrator richtet sie einmal unter Einstellungen → KI für alle ein.
-
„The AI answered without a design in it.“ – Das Modell hat in Prosa geantwortet statt mit einem Prozess. Beschreiben Sie die Lanes und Schritte schlichter, und generieren Sie erneut; nichts auf der Zeichenfläche geht verloren.