Das Prozessdokument
Ein Prozess ist ein Markdown-Dokument. Diese Seite ist die vollständige Liste dessen, was kyte daraus liest.
Außer den Schritten ist alles freiwillig. Ein Dokument ohne Kopf funktioniert auch, und ein Kopf, den kyte nicht lesen kann, verschluckt nie die Schritte darunter.
Der Kopf
Der Block zwischen den beiden ----Zeilen ganz oben.
---
api: company-as-code.org/v0
type: process
id: neuen-kunden-aufnehmen
title: Neuen Kunden aufnehmen
owner: [[x-kyte/person/mara-mohrmann]]
x-kyte/category: Vertrieb
x-kyte/parent: [[x-kyte/process/vertrieb]]
x-kyte/agent: auto
x-kyte/trigger:
- on: create
table: core.organizations
x-kyte/data:
score: number
---
| Schlüssel | wofür |
|---|---|
title |
der Name überall. Änderst du ihn hier, heißt der Prozess anders. |
id |
der Kurzname, unter dem andere Dokumente ihn rufen — [[x-kyte/process/neuen-kunden-aufnehmen]]. Ohne ihn zählt der Titel. |
owner |
wem er gehört. Eine Person: [[x-kyte/person/<name>]], klein geschrieben, mit Bindestrichen. |
x-kyte/category |
wo er einsortiert ist: Vertrieb, Finanzen, Personal … was ihr wollt. |
x-kyte/parent |
der Prozess, unter dem dieser in der Liste hängt. Nur Darstellung, am Ablauf ändert es nichts. |
x-kyte/trigger |
was ihn von selbst startet. Siehe unten. |
x-kyte/agent |
wie weit der Agent in diesem Prozess gehen darf: ask, build (Standard) oder auto. Siehe Prozesse, die von allein laufen. |
x-kyte/data |
die Felder, die ein Lauf füllt — ihre Namen, als Gedächtnisstütze für den, der die Bedingungen schreibt. Ein Lauf startet mit leeren Feldern. |
api, type |
was für ein Dokument das ist. Wird für dich geschrieben, lass es stehen. |
Auslöser
x-kyte/trigger:
- on: create # create · update · delete
table: crm.organizations
Der Schreibvorgang startet den Prozess, egal woher er kommt — Formular, Import, Agent. Der Lauf trägt
den geschriebenen Datensatz mit sich; das ist es, was data.record in einer Bedingung liest.
Ein Satz geht auch, wenn kyte das Auslösende noch gar nicht kennt:
x-kyte/trigger: wenn ein Vertrag unterschrieben wird
Er wird behalten und angezeigt, aber nie ausgelöst. So kann ein Prozess sagen, was ihn startet, bevor jemand das Auslösende modelliert hat.
Die Schritte
Jede Überschrift ab ## ist ein Schritt.
## 3a · Vertrag versenden
- type: task
- who: [[role/vertrieb]]
Das unterschriebene PDF geht an den Kunden, das gegengezeichnete in die Ablage.
Was vor dem Trennzeichen steht — 3a — ist der Schlüssel des Schritts: das, worauf eine
Verzweigung zeigt. Lässt du ihn weg, zählt die Position. Als Trennzeichen geht ·, ., ), :
oder ein Strich.
Zeilen mit -, die kyte kennt, sind Angaben; alles andere unter der Überschrift ist Fließtext und
wird dem gezeigt, der den Schritt macht.
| Angabe | Bedeutung |
|---|---|
- type: |
task · approval · decision · agent · process. Fehlt sie, ist es task. |
- who: |
wer ihn trägt: [[x-kyte/person/mara-mohrmann]] oder [[role/vertrieb]]. Eine Person mit Zugang bekommt den Schritt als Aufgabe in ihre Liste. |
- prompt: |
der Auftrag eines Agent-Schritts. |
- process: |
das Ziel eines Prozess-Schritts: [[x-kyte/process/bonitaet-pruefen]]. |
- if … → 3a |
ein Zweig einer Entscheidung. |
- else → 3b |
wohin es sonst geht. |
Die fünf Arten von Schritt
task — jemand macht etwas. Der Normalfall.
approval — jemand gibt frei. Braucht ein who; eine Freigabe ohne Zuständigen ist keine.
decision — eine Frage mit zwei Auswegen. Keine Arbeit: niemand hakt sie ab, sie beantwortet sich aus den Daten des Laufs.
## 4 · Bonität mindestens 70?
- type: decision
- if data.score >= 70 → 4a
- else → 4b
Eine Bedingung liest ein Feld und vergleicht es mit einem Wert: data.score >= 70,
data.record.address_city == Hamburg. Es gibt ==, !=, >, >=, <, <= und contains.
data.record ist der Datensatz, der den Lauf ausgelöst hat; alles andere ist das, was der Lauf
gesammelt hat. Solange nichts die Frage beantwortet, bleiben beide Zweige offen, und der Lauf sagt,
dass er wartet.
agent — der Agent macht es, mit dem Auftrag aus - prompt:. Siehe
Prozesse, die von allein laufen.
process — einen anderen Prozess aufrufen und auf ihn warten. Siehe Ein Prozess in einem Prozess.
Wie die Arbeit fließt
Von oben nach unten, außer an einer Entscheidung: die geht in ihre Zweige, und ein Zweig fällt danach auf den ersten Schritt, der wieder allen gehört. So führen beide Auswege zum selben Schlussschritt.
## 4 · Kunde aus Hamburg?
- type: decision
- if data.record.address_city == Hamburg → 4a
- else → 4b
## 4a · Kickoff vor Ort
- type: task
## 4b · Kickoff per Video
- type: task
## 5 · Willkommensmail senden
- type: approval
- who: [[x-kyte/person/mara-mohrmann]]
Schritt 5 passiert so oder so.
Was kyte dazu sagt
Speichern geht immer — du darfst mittendrin aufhören. Unter den Schritten listet kyte, was es gefunden hat, an der Zeile, an der es steht.
Manches verhindert nur den Start:
- der Prozess hat noch keine Schritte
- zwei Schritte haben denselben Schlüssel, eine Verzweigung könnte nicht sagen, welchen sie meint
- eine Entscheidung ohne Zweige, oder ein Zweig auf einen Schritt, den es nicht gibt
- ein
process-Schritt, der nicht sagt, welchen Prozess - Schritte, die im Kreis führen
Der Rest wird gesagt und sonst nichts: eine Freigabe ohne Zuständigen, ein Agent-Schritt ohne Auftrag, ein Schritt, zu dem nichts führt, ein Auslöser, den kyte nicht lesen konnte.
Entwurf und veröffentlicht
Ein neuer Prozess ist ein Entwurf. Er steht in der Liste wie jeder andere, mit Entwurf in der Statusspalte — weggefiltert wird nichts —, und der Trichter bietet die vier Zustände an, wenn du die Liste einengen willst.
Ein Entwurf läuft auch: der Status sagt, wie weit das Schreiben ist. Ob Lauf starten geht, entscheidet allein, ob das Dokument zusammenhält. Zum Veröffentlichen bittest du den Agenten: „veröffentliche den Beschwerdeprozess". Er fragt vorher.