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.