# Betrieb

> Die Einheiten im Einsatz: ein Knoten je Einheit mit den Bereichen und Dashboards, über die sie bedient wird, was ein Lauf ist, der Lebenszyklus von Start bis Abgeschlossen und was abgewiesen wird, solange die Runtime steht.

**Bedienen** ist die letzte der vier Gruppen eines Modells in der Spalte Arbeitsbereich der Seite
Process (Process > Modelle > ein Modell > Betrieb), nach [Definition](process-definition),
[Visualisierung](process-visualization) und [Setup](process-setup). Die anderen drei erklären den
Prozess; diese hält die Einheiten im Einsatz, einen Knoten je Einheit, und unter jeder Einheit die
Flächen, über die sie bedient wird. Hier wird nichts konfiguriert: Eine Einheit wird auf der eigenen
Seite des Modells erklärt und beendet ([Einheiten](process-units)), ihre Bereiche und Dashboards
werden unter Visualisierung angeordnet, und was sie ausführt, wird unter Setup zusammengesetzt.

Der Zweig wird für jede Rolle gezeichnet, die Modelle ansehen darf (Modelle ansehen, Abläufe
ausführen, Process verwalten). Eine Rolle, die nur Rezepte und Bewertungen ändern hält, sieht jedes
Modell auf seine Gruppe Setup reduziert, für sie wird Betrieb also nicht gezeichnet. Das Zuschauen
gibt es mit dem Baum umsonst; das Vorbereiten, Starten und Führen eines Laufs verlangen **Abläufe
ausführen**, und ein Bereich sagt es offen, wenn der Rolle das fehlt.

## Die Seite Betrieb {#the-operate-page}

Die Auswahl der Gruppe öffnet eine Wand aus Karten, eine je Einheit, überschrieben mit "Die
Stationen, auf denen dieses Modell läuft. Öffnen Sie eine, um einen Ablauf vorzubereiten, ihn zu
starten und einen aufgezeichneten, bewerteten Lauf zu verfolgen." Ein Klick auf eine Karte öffnet
diese Einheit. Jede Karte trägt den laufenden Zustand der Einheit, in dieser Rangfolge aufgelöst:

| Zustand | Bedeutung |
| --- | --- |
| Stopp ausgelöst, Warten auf Rücksetzung, Stoppsignal nicht verfügbar | Die [Verriegelung](process-automation) der Einheit ist nicht Normal. Nur gezeigt, wenn das Modell einen externen Stopp beobachtet; sie geht allem darunter vor. |
| Wartet darauf, dass die Sollwerte das Gerät erreichen | Ein Lauf besitzt die Einheit, und sein Rezept hat die Sollwerte eines Abschnitts übergeben und wartet darauf, dass die Anlage sie annimmt. Die eigene Zeit des Abschnitts hat noch nicht zu zählen begonnen, dieser Zustand geht also denen darunter vor; der Datalog zeichnet darunter genau wie zuvor weiter auf. Nur ein Abschnitt, der auf Warten gestellt ist, zeigt ihn je. Siehe [Rezepte](process-recipes#what-a-run-does-with-it). |
| Aufzeichnung, Angehalten, Wird gespeichert, Wird vorbereitet, Wird abgeschlossen | Ein Lauf besitzt die Einheit: Er tastet ab, ist an einem Sollwert angehalten, schreibt seine Momentaufnahme, ist reserviert, bevor der Lauf besteht, oder schließt seine Datei nach dem Endzustand. |
| Bereit · Ablauf | Nichts besitzt die Einheit, und dieser Ablauf ist für den nächsten Start vorbereitet. |
| Bereit · kein Ablauf vorbereitet | Nichts besitzt die Einheit, und nichts ist vorbereitet. |

Ein Modell ohne Einheiten lautet "Noch keine Einheiten. Fügen Sie eine auf der eigenen Seite des Modells in der Tabelle Einheiten hinzu." Die
Baumzeile der Gruppe zählt ihre Einheiten.

Die Detailleiste trägt die zwei Sammelauslöser, nur für eine Rolle mit Abläufe ausführen gezeichnet.
Sonst steht nichts auf dieser Leiste, weil hier nichts angelegt oder gelöscht wird.

| Befehl | Was er tut | Ausgegraut, wenn (Lage) | Nicht gezeichnet, wenn (Rolle) |
| --- | --- | --- | --- |
| Alle starten | Startet jede Einheit, die einen Ablauf vorbereitet hat und jetzt laufen kann; die übrigen werden still übergangen. Jeder gestartete Lauf zeichnet den auf diesem Bildschirm angemeldeten Bediener als Verantwortlichen auf. | Gerade nimmt keine Einheit Start an, oder ein Sammelbefehl wird schon abgesetzt. | Ohne Abläufe ausführen. |
| Alle stoppen | Stoppt jede Einheit, die jetzt läuft; bereits gestoppte Einheiten bleiben gestoppt. | Gerade nimmt keine Einheit Stopp an, oder ein Sammelbefehl wird schon abgesetzt. | Ohne Abläufe ausführen. |

Ein Sammelbefehl ist ein Auslöser und kein abgestimmter Vorgang: Jede Einheit läuft für sich, eine
Abweisung auf einer Einheit wird protokolliert und macht nie eine andere rückgängig, und das
Aktionsprotokoll meldet die Anzahl ("3 Einheiten gestartet", "Es konnte keine Einheit gestoppt werden.").

## Die Einheit {#the-unit}

Die eigene Seite einer Einheit nennt sie, sagt, ob ein Lauf sie besitzt, und öffnet auf jede ihrer
Flächen. Der Kopf trägt eine Pille mit dem Laufzustand, solange ein Lauf die Einheit besitzt
(Aufzeichnung, Angehalten, Wird gespeichert, Wird vorbereitet, Wird abgeschlossen, oder "Wartet
darauf, dass die Sollwerte das Gerät erreichen", solange ein auf Warten gestellter Abschnitt eines
Rezepts seine Sollwerte noch schuldig ist; nichts, solange die Einheit frei ist). Solange der Lauf
wartet, weicht die Kopfzeile "Noch ausstehend: Furnace, Pump 1", den Kanälen, deren Anlage ihren
Sollwert noch nicht angenommen hat, und so sagt die Seite selbst, warum die Uhr des Abschnitts noch
nicht läuft. Eine Karte **Flächen** listet als Kacheln die Bereiche und die Dashboards, die das
Modell festlegt, für diese Einheit gezeichnet. Die Seite hat keine Befehle in der Leiste und kein
Rechtsklickmenü: Sie ist ein Weg hinein, kein Ort zum Ändern.

Unter der Einheit hält der Baum einen Knoten je Einheitenbereich des Modells und danach einen Knoten
je Dashboard. Beide öffnen unter derselben Flächenleiste, die die Seite View benutzt, benannt
"Modell · Einheit · Fläche", mit der Pille des Laufzustands neben dem Namen und den zwei Befehlen
für das Fenster auf der nachlaufenden Seite: **Erweitern** gibt der Fläche das ganze Fenster,
**Vollbild** (F11) nimmt den ganzen Bildschirm, und Esc verlässt beides.

- Ein Knoten für einen **Einheitenbereich** zeichnet die Karten, die der Bereich anordnet, für diese
  Einheit: die Karte Lauf, die Karte Metadaten, den Laufzustand, die Kommentare, die
  Ereigniseinträge, das Kanaldiagramm, die Produktivitätsliste, die Einzelbefehle und jedes
  Dashboard, das der Bereich als Karte einbettet. Diese Fläche, Karte für Karte, ist
  [Läufe und Kommentare](process-runs).
- Ein Knoten für ein **Dashboard** lässt die eine Festlegung des Modells laufen, mit jedem
  abstrakten Kanal von der gebundenen Quelle dieser Einheit beantwortet. Er zeigt das Dashboard und
  ändert es nie: Das Ändern ist ein Befehl der eigenen Zeile des Modells unter Visualisierung
  ([Dashboards eines
  Modells](process-dashboards)). Ein Dashboard, auf dem nichts steht, sagt es, statt eine leere
  Fläche zu zeichnen. Seine Befehlskomponenten verlangen hier nur Abläufe ausführen, denn dies ist
  die amtliche Fläche von Process und kein Dashboard der Station selbst.

Ein Einheitenbereich oder ein Dashboard mit **In View zeigen** erscheint auch auf der Seite View,
ein Eintrag je Einheit des Modells, unter demselben Namen; was er zeichnet, ist so oder so dasselbe.

## Was ein Lauf ist {#what-a-run-is}

Ein Lauf ist eine Ausführung eines Ablaufs auf einer Einheit. Er heißt "Ablauf · Einheit", wird in
eine eigene SQLite-Datei im Ordner `acquisitions` des Datenordners der Anwendung aufgezeichnet, und
eine Zeile des Laufindex zeigt auf ihn, was einen unfertigen Lauf nach einem Neustart auffindbar und
fortsetzbar macht. Die Form des Ablaufs ist der Rahmen des Laufs: **Direkt** legt an, zeichnet eine
Zeile auf und beurteilt einmal, dann endet er von selbst; **Zeitgeführt** durchläuft das Fenster des
Ablaufs, wahlweise als Zyklen wiederholt, und endet, wenn das letzte Fenster schließt; **Gesteuert**
legt bei Start an und zeichnet auf, bis jemand ihn stoppt.

Ein Lauf je Einheit auf einmal. Start reserviert die Einheit, bevor er irgendetwas auflöst, eine
Einheit in Vorbereitung ist also beschäftigt, ohne vorzugeben, dass sie aufzeichnet; die
Reservierung hält über Läuft, Angehalten, Wird gespeichert und das endgültige Schließen der Datei
hinweg. Solange irgendeine Einheit belegt ist, ist jede Konfigurationsfläche der Station
schreibgeschützt ("Die Projektierung ist gesperrt, solange eine Einheit läuft."); Betrieb selbst
bleibt lebendig, denn Bedienen ist nicht Konfigurieren.

## Der Lebenszyklus {#the-lifecycle}

| Zustand | Bedeutung | Betreten durch | Verlassen durch |
| --- | --- | --- | --- |
| Wird vorbereitet | Die Einheit ist reserviert, und der Lauf wird geprüft und angelegt. Kein gespeicherter Zustand: Der Punkt `Procedure.Status` liest ihn, während `Busy` bereits wahr ist. | Start | Das Entstehen des Laufs (Läuft) oder eine Abweisung (wieder bereit). |
| Läuft | Die Abtastung und, bei einem zeitgeführten Lauf, die Uhr des Fensters bewegen sich. | Start, Fortsetzen | Anhalten, Stoppen, Abbrechen, das Ende des Fensters, ein Fehlschlag, die Verriegelung. |
| Angehalten | Die Uhr des Fensters steht am letzten Sollwert eingefroren; das Datalog zeichnet weiter auf. Nur bei zeitgeführten Läufen. | Anhalten | Fortsetzen, Stoppen, Abbrechen, die Verriegelung. |
| Wird gespeichert | Die Abtastung hat aufgehört; der Abschlussblock ist gelaufen, und die eingefrorene Momentaufnahme wird geschrieben. | Stoppen, Abbrechen, das Ende des Fensters, die Verriegelung, ein abgeschlossener direkter Lauf | Das Schreiben der Momentaufnahme. |
| Abgeschlossen | Sauber beendet; das Prüfergebnis ist das der Bewertung. | Wird gespeichert nach Stoppen, einem Fensterende oder einem direkten Lauf | Endzustand. |
| Abgebrochen | Vorzeitig beendet; das Prüfergebnis ist NOK, was auch immer die Bewertung beurteilt hatte. | Wird gespeichert nach Abbrechen, eine Fehlschlagregel eines Rezepts auf Abbrechen, die Verriegelung oder das Stoppen der Runtime | Endzustand. |
| Fehlgeschlagen | Von einem nicht behebbaren Fehler beendet; das Prüfergebnis ist keines. | Ein Fehlschlag während des Laufens oder des Endens; ein Zeiger auf Wird gespeichert, den ein Absturz hinterlassen hat, kommt beim nächsten Start als Fehlgeschlagen zurück | Endzustand. |

Ein Lauf, der beim Schließen der Anwendung lief oder angehalten war, ist nicht beendet: Er setzt
beim nächsten Start fort, ein zeitgeführtes Profil an seinem gesicherten Segment und Zyklus
gehalten.

Jeder Lauf zeichnet auf, wer ihn gestartet hat (der auf dem drückenden Bildschirm angemeldete
Bediener, die Station, wenn es niemand war, die Automatik der Einheit oder ein Agent) und wer
ihn beendet hat (dieselben Arten, bei einem Stoppen oder einem Abbrechen). Ein Fenster, das
ausgelaufen ist, eine ausgelöste Verriegelung und ein Fehlschlag enden, ohne jemanden zu nennen.
Anhalten und Fortsetzen hinterlassen keinen Handelnden.

## Was abgewiesen wird und warum {#what-is-refused-and-why}

- **Runtime gestoppt**: Solange die Runtime der Station gestoppt ist, werden Starten, Anhalten,
  Fortsetzen, Stoppen, Abbrechen, die Einzelbefehle, das Vorbereiten und Kommentare allesamt mit
  diesem Grund abgewiesen, und die Karte Lauf schreibt ihn unter ihre Schaltflächen. Läufe, die beim
  Stoppen der Runtime noch offen sind, enden als Abgebrochen.
- **Die Verriegelung**: Solange die Verriegelung einer Einheit ausgelöst ist, auf eine Rücksetzung
  wartet oder nicht verfügbar ist, wird auf dieser Einheit kein neues Starten, Fortsetzen, keine
  Momentaufnahme, keine Bewertung und kein Anlegen eines Rezepts zugelassen ("Die Einheit 'X' ist durch
  ihre Verriegelung blockiert: Grund"). Stoppen und Abbrechen bleiben verfügbar.
- **Nichts vorbereitet**: Start braucht einen vorbereiteten Ablauf ("Es ist kein Ablauf vorbereitet.
  Wählen Sie zuerst einen.").
- **Eine Quelle, die ein anderer Lauf hält**: Zwei Einheiten, die dieselbe Quelle schreiben, können
  nicht zusammen laufen; der zweite Start wird unter Nennung des Kanals und der haltenden Einheit
  abgewiesen.

Die Seiten dieser Gruppe:

| Seite | Deckt ab |
| --- | --- |
| [Läufe und Kommentare](process-runs) | Der Bereich einer Einheit: das Vorbereiten, Start und was er prüft, die Befehle des Lebenszyklus, die laufenden Karten, Kommentare, die Einzelbefehle, die Laufdatei und die Wege der Automatik und des Agenten zu demselben Lebenszyklus. |
| [Der Adressraum einer Einheit](process-addresses) | Jeder Punkt, den eine Einheit unter `Process.<Model>.<Unit>` veröffentlicht, sein Typ und seine Bedeutung und welche Punkte beschreibbare Befehle sind. |
