Direkt zum Hauptinhalt

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.

Vorsicht

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​

ArtBedeutung
StartWo der Prozess beginnt. Zeichnen Sie genau einen.
EndeWo er endet. Es kann mehrere geben – genehmigt und abgelehnt sind beides Enden.
AufgabeEin Schritt. Der, den Sie am häufigsten verwenden.
VerzweigungEine Entscheidung: ein Weg hinein, mehrere hinaus.
AufteilungAufteilen in Pfade, die alle laufen.
ZusammenführungWarten, bis diese Pfade wieder zusammenkommen.
ZeitgeberEine 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.

Tipp

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.

Prozesse, die gezeichnet wurden, bevor Namen erforderlich waren

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.

FeldWofür es da ist
AppIn 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 / BildschirmWorum es in dem Schritt geht. Welches der drei Sie erhalten, hängt davon ab, was Sie oben gewählt haben.
Welches Formular / Welche AnsichtEin benanntes Formular bzw. eine benannte Ansicht statt des Standards der Tabelle. Leer verwendet den Standard.
GeöffnetSchreibgeschü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öchtenSchreiben Sie
Alle, die eine Rolle innehabenrole("Manager")
Eine bestimmte Personuser("a.khan")
Ein Teamteam("Finance")
Die Person, die den Prozess gestartet hatinstanceStartedBy()

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.

Für alle, die das Dokument lesen

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:

AuswahlWas passiert
Als verspätet markierenNichts 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 anbietenWer 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 entscheidenDer 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.

Zusehen, ohne einen Tag zu warten

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:

PlatzWann er läuft
Beim EintrittDer Prozess erreicht diesen Schritt.
Bei ZuweisungDie Aufgabe hat jemanden – nur Benutzeraufgaben.
Bei AbschlussDiese Person markiert sie als erledigt – nur Benutzeraufgaben.
Beim VerlassenDer 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.

Hinweis

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 lautetBedeutung
Noch nicht veröffentlichtNichts führt diesen Prozess aus.
Version 3 läuft und entspricht dem, was Sie sehenSie sehen, was live ist.
Version 3 läuft. Sie haben unveröffentlichte ÄnderungenIhre 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.
Hinweis

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 setVariable in 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.

Verwandte Szenarien​