Zum Inhalt springen

RUNOS Dokumentation

RUNOS ist ein Werkzeug zur Workflow-Automatisierung für Windows. Ein Workflow besteht aus einem Trigger, der ihn startet, und einer Liste von Aktionen, die nacheinander die Arbeit erledigen. RUNOS läuft lokal auf Ihrem Rechner, im Hintergrund im Infobereich der Taskleiste, und ist kostenlos.

Trigger

Eine neue Datei im Ordner, ein Zeitplan oder ein Klick startet den Workflow. Zu den Triggern

Aktionen

Mails senden (SMTP, Mailprogramm), APIs abfragen und E-Rechnungen erzeugen. Zu den Aktionen

Operationen

Entscheiden (IF), wiederholen (Loop), gleichzeitig ausführen (Parallel) und Daten mit JavaScript umformen (Code). Zu den Operationen

Konnektoren

Zugangsdaten und OAuth-Anmeldungen einmal speichern, in allen Workflows nutzen. Zu den Konnektoren

Jede Rechnung, die das ERP über den PDF-Drucker in den Ordner C:\RUNOS\Rechnungen druckt, soll als XRechnung an den Kunden gemailt werden.

In RUNOS ist das ein Workflow mit

  1. einem File-Trigger, der den Ordner überwacht,
  2. einer XRechnung-Aktion, die aus den Rechnungsdaten die E-Rechnung erzeugt und prüft,
  3. einer Mail-Aktion (SMTP, MAPI oder Microsoft 365), die sie verschickt.

Jeder Lauf wird protokolliert. Schlägt etwas fehl, landet die Datei im Ordner Failed, Sie werden benachrichtigt und können eigene Fehler-Aktionen ausführen lassen.

  • Windows 10 (Version 1809 oder neuer) oder Windows 11, 64 Bit
  • Einmalig eine Internetverbindung zur Aktivierung, danach regelmäßig zur Verlängerung der kostenlosen Lizenz
  • Für MAPI mit Client: Outlook: das klassische Outlook
  • Für Drucke aus Programmen ohne Export: der eingebaute PDF-Drucker (nutzt den Windows-Treiber „Microsoft Print to PDF“; Anlegen braucht einmal Administratorrechte; der RUNOS-Dienst nimmt die Drucke auch bei geschlossenem RUNOS entgegen)
  1. Laden Sie die aktuelle Version von systemberg.de/runos/download herunter. Sie erhalten eine einzelne Datei RunOS.exe; der Name bleibt bei jeder Version gleich.
  2. Legen Sie die Datei an einen festen Ort, zum Beispiel C:\Programme\RUNOS\RunOS.exe, und starten Sie sie. Eine Installation ist nicht nötig.
  3. Beim ersten Start fragt RUNOS, ob es anonyme Nutzungsstatistiken senden darf. RUNOS funktioniert in beiden Fällen gleich.
  4. Danach fragt RUNOS, ob es eine Verknüpfung auf Ihrem Desktop anlegen soll. Die Frage kommt einmal je Windows-Benutzer und entfällt, wenn dort schon eine RUNOS-Verknüpfung liegt. Die Verknüpfung zeigt auf die .exe am aktuellen Ort.

RUNOS läuft nur einmal pro Windows-Sitzung. Wird es ein zweites Mal gestartet, beendet sich die ältere Instanz und die neue übernimmt. Wenn Sie das Fenster schließen, läuft RUNOS im Infobereich der Taskleiste weiter, und Ihre Workflows laufen weiter. Beenden im Tray-Menü stoppt alle Workflows.

RUNOS ist kostenlos. Jede Installation erhält trotzdem eine eigene, an diesen PC gebundene Lizenz:

  • Aktivierung: Beim ersten Start mit Internetverbindung aktiviert sich RUNOS selbst. Ohne Internet laufen Workflows für 7 Tage nach dem ersten Start; danach pausieren sie, bis der PC einmal online war.
  • Verlängerung: Die kostenlose Lizenz gilt 30 Tage und wird automatisch verlängert, solange der PC zwischendurch online ist (RUNOS prüft etwa einmal am Tag).
  • Abgelaufen: Ist die Lizenz abgelaufen, pausieren die Workflows. Workflows und Einstellungen bleiben erhalten, und alles läuft weiter, sobald RUNOS die Lizenz erneuert hat. Eine Datei, die ein File-Trigger während einer Pause findet, bleibt im Ordner und wird danach verarbeitet.
  • Systemuhr: Steht die Uhr des PCs deutlich falsch, pausieren Workflows ebenfalls, bis die Uhrzeit korrigiert ist.

Den Status sehen Sie unter Einstellungen → Lizenz, mit der Installations-ID (für den Support) und Jetzt prüfen.

RUNOS sieht kurz nach dem Start und danach alle 6 Stunden nach, ob eine neue Version erschienen ist. Gibt es eine, erscheint in der Aktivitätsleiste über Hilfe das Update-Symbol (Pfeil mit rotem Punkt), und eine Benachrichtigung weist darauf hin. Ein Klick auf das Symbol zeigt, welche Version kommt und wie viel geladen wird; Jetzt aktualisieren lädt sie herunter, ersetzt RUNOS und startet es neu. Selbst nachsehen können Sie unter Einstellungen → Info → Nach Updates suchen.

  • Nur die Änderungen: RUNOS lädt meist nur 1–3 MB statt der ganzen Datei (rund 160 MB). Ist Ihre Version älter als die letzten fünf, lädt es die ganze Datei.
  • Geprüft: RUNOS vergleicht die neue Datei mit ihrer Prüfsumme (SHA-256), bevor es die alte ersetzt. Klappt etwas nicht, läuft RUNOS unverändert weiter, und der Grund steht im Dialog und im Protokoll.
  • Gleicher Ort, gleicher Name: Die neue Version ersetzt die .exe dort, wo sie liegt. Autostart und Verknüpfungen bleiben gültig. Heißt die Datei noch nach ihrer Version (runos_3.66.exe, der frühere Download-Name), wird sie dabei zu RunOS.exe umbenannt, sofern im Ordner noch keine RunOS.exe liegt. Der Autostart zieht von selbst mit; eine Verknüpfung auf den alten Namen legen Sie einmal neu an. Liegt RUNOS in einem Ordner, in den Ihr Benutzer nicht schreiben darf (z. B. C:\Programme\RUNOS), fragt Windows nach Administratorrechten.
  • Aktionen, die beim Neustart gerade laufen, werden abgebrochen. Workflows, Konnektoren und Einstellungen liegen im Datenordner und bleiben erhalten. Andere Windows-Benutzer, die dieselbe .exe gerade verwenden (Terminalserver), arbeiten bis zu ihrem nächsten Start von RUNOS mit der alten Version weiter.

Version 3.66 und älter haben noch kein Update-Symbol. Dort aktualisieren Sie einmal von Hand: RUNOS über das Tray-Menü beenden, die alte .exe durch die neue von systemberg.de/runos/download ersetzen (gleicher Ort) und RUNOS wieder starten.

Was sich in welcher Version geändert hat, steht unter Änderungen.

Links im RUNOS-Fenster liegt die Aktivitätsleiste:

Ansicht Inhalt
Workflows Liste aller Workflows mit Zustand, Trigger und den letzten Läufen; Neu legt einen Workflow an, leer oder aus einer Vorlage
Protokolle Das Protokoll aller Workflows, filterbar nach Stufe, Workflow und Benutzer
Konnektoren Gespeicherte Zugänge zu Diensten und APIs, siehe Konnektoren
E-Rechnung (XRechnung) Eine Rechnung Feld für Feld ausfüllen und JSON, XML und Prüfungen sehen, siehe Die Ansicht E-Rechnung
Drucker PDF-Drucker anlegen, ändern und löschen, die jeden Druck als PDF in einen Ordner speichern, siehe PDF-Drucker
Hilfe Kontakt per E-Mail an info@systemberg.de
Einstellungen Sprache, Autostart, Protokoll, Skriptblöcke, KoSIT-Validator, Lizenz, siehe Einstellungen

Workflow-Liste: Jede Zeile zeigt Namen und Trigger, die Schaltfläche Starten / Stoppen und die letzten Läufe als Punkte: grün erfolgreich, gelb mit Warnung oder abgebrochen, rot fehlgeschlagen. Löschen Sie das Protokoll (Papierkorb), verschwinden auch diese Punkte, bei ausgewählten Workflows nur deren. Ein Klick öffnet den Workflow im Editor; über das Kontextmenü können Sie ihn starten, stoppen oder löschen. Die Reihenfolge ändern Sie per Drag-and-drop, mit einem Klick auf den Griff links in der Zeile oder über Kontextmenü → Verschieben (nach oben, nach unten, ganz nach oben, ganz nach unten); für den ausgewählten Workflow gehen auch Alt+↑ / Alt+↓. Läuft RUNOS als Administrator, gibt es kein Drag-and-drop (Windows lässt es für Programme mit Administratorrechten nicht zu); Kontextmenü und Tasten funktionieren auch dann.

Workflow-Editor: Er öffnet sich in einem Tab, den Sie auch in ein eigenes Fenster ziehen können.

Element Funktion
Name Klick auf den Namen zum Umbenennen. Der Name im JSON wird mit angepasst.
Visuell / JSON / Skript Wechselt zwischen Diagramm, JSON-Editor und den Skriptblöcken, die eine Datei für diesen Workflow mitbringen muss, siehe unten. Ein Workflow öffnet sich als Diagramm, wenn sein JSON gültig ist.
Speichern (Strg+S) Prüft das JSON und speichert. Danach gilt der Wert von Autostart.
Ausführen (F5) Führt die Aktionen einmal aus, mit dem JSON im Editor, gespeichert oder nicht.
Lauschen Schaltet den Trigger zum Testen ein, solange der Tab offen ist.
Starten / Stoppen Startet oder stoppt den gespeicherten Workflow wie die Schaltfläche in der Workflow-Liste. Der Zustand bleibt auch nach einem Neustart von RUNOS erhalten.
JSON-Editor Nach {{ schlägt er die Variablen dieses Workflows vor, nach einem Punkt deren Felder.
Protokoll Blendet das Protokoll dieses Workflows unter dem Editor ein und aus (beim Öffnen ausgeblendet). Die Zahlen auf der Schaltfläche zählen seine Einträge: rot Fehler, gelb Warnungen, blau Info. Doppelklick zeigt einen Eintrag vollständig; der Papierkorb löscht nur die Einträge dieses Workflows und seine Punkte in der Workflow-Liste.

Diagramm (Visuell): Der Workflow von oben nach unten: der Trigger mit den Startdaten daneben, die Aktionen in ihrer Reihenfolge, bei If die Zweige Wenn wahr und Wenn falsch nebeneinander, bei Loop ein Rahmen um die Aktionen, die je Element laufen, bei Parallel eine Spalte je Zweig mit dessen Namen. Rechts daneben stehen die OnError-Aktionen. Jede Aktion zeigt Namen, Art und die wichtigste Einstellung; ausgeschaltete Aktionen ("Enabled": false) sind blass und mit Aus markiert, die Description erscheint beim Zeigen auf die Aktion.

  • Ziehen verschiebt das Diagramm, Strg+Mausrad zoomt, F oder die Schaltfläche unten links passt es ins Fenster ein. If, Loop und Parallel lassen sich zuklappen.
  • + zwischen zwei Aktionen, in einem Zweig oder in einem leeren Zweig (Aktion hinzufügen) öffnet die Auswahl der Aktionen, mit Suche und Kategorien. Die neue Aktion bekommt einen freien Namen und öffnet sich in der Testansicht.
  • Aktionen, Trigger, Startdaten und die OnError-Spalte lassen sich frei platzieren: einfach ziehen. Ein If, Loop oder Parallel nimmt alles mit, was darin steht; die Linien folgen. Die Positionen speichert RUNOS im Workflow unter "Layout", Aufräumen (oben links) stellt die automatische Anordnung wieder her. Eine Aktion auf ein + ziehen ändert dagegen ihre Stelle in der Reihenfolge, auch in einen Zweig hinein oder aus ihm heraus. Über der Aktion: ein- und ausschalten, duplizieren, im JSON zeigen, nach oben / unten, löschen.
  • Ein Klick auf eine Aktion öffnet rechts ihre Einstellungen: Name, Beschreibung, Ein/Aus, die Parameter in einem Formular (bei jeder Aktion, z. B. HttpRequest, XRechnung oder SMTP; Parameter, die das Formular nicht kennt, unter Weitere Parameter; bei Parallel fügen Sie dort Zweige hinzu, benennen sie um oder entfernen sie), Bei Fehler (eigene OnErrorPolicy) und die ganze Aktion als JSON. Nach {{ schlägt das Feld die Werte früherer Aktionen vor, bei Aktionen mit Testdaten deren echte Schlüssel. Wird eine Aktion umbenannt, werden die Verweise {{Name.…}} darauf mit angepasst.
  • Die Schaltfläche mit den Spalten oben im Einstellungsfeld öffnet die Testansicht: Eingabe, Einstellungen und Ausgabe nebeneinander, mit Schritt testen und Werten, die Sie per Drag-and-drop auf Felder ziehen. Nach einem Test oder Ausführen zeigt jede Aktion ein Zeichen für ihr Ergebnis: grüner Haken ohne Fehler, gelb mit Warnungen, rot fehlgeschlagen.
  • Der Trigger öffnet Art und Einstellungen, Startdaten eine Tabelle mit Name, Wert und Typ (mit Anzeige, welche Aktionen den Wert verwenden), das Zahnrad oben links die Workflow-Einstellungen (Autostart, Zeitlimit, OnErrorPolicy, OnWarningPolicy).
  • Unten zeigt das Diagramm Fehler und Warnungen: doppelte Namen, unbekannte Aktionen, Verweise auf Aktionen, die es nicht gibt, die ausgeschaltet sind oder erst später laufen, und {{InitialData.…}}-Werte, die fehlen. Ein Klick auf einen Eintrag wählt die Aktion aus.
  • Rückgängig und Wiederholen: oben links oder Strg+Z / Strg+Y. Entf löscht, Strg+D dupliziert, Alt+↑/↓ verschiebt die gewählte Aktion.
  • Doppelklick auf eine Aktion (oder Im JSON zeigen) wechselt ins JSON und markiert sie dort. Jede Änderung im Diagramm steht sofort im JSON; gespeichert wird wie immer mit Speichern.
  • Mit einem Fehler im JSON bleibt der Editor beim JSON, bis der Fehler behoben ist. Hat das JSON Kommentare (/* … */), ist das Diagramm schreibgeschützt, bis Sie wählen: Kommentare direkt über einer Aktion als deren Description übernehmen oder alle Kommentare entfernen. Beides lässt sich im JSON mit Strg+Z zurücknehmen.

Protokoll: Jede Zeile hat Zeit, Stufe (Trace, Debug, Info, Erfolg, Warnung, Fehler, Kritisch), Benutzer, Quelle, Titel und Nachricht. Benutzer ist der Windows-Benutzer, dessen RUNOS den Eintrag geschrieben hat (leer bei Einträgen aus älteren Versionen); mit dem Filter Benutzer sehen Sie nur dessen Einträge, wenn mehrere Benutzer einen gemeinsamen Datenordner verwenden. Ist ein Benutzer gewählt, löscht der Papierkorb nur die angezeigten Einträge. Protokoll in Datei speichern exportiert die sichtbaren Einträge als Text oder CSV. Für die Fehlersuche lohnt sich der Filter Trace: Dann sehen Sie, wie jede Variable aufgelöst wurde und welche Parameter jede Aktion bekam.

In diesem Beispiel überwacht RUNOS einen Ordner. Für jedes PDF, das dort landet, öffnet sich eine neue Mail im Mailprogramm, mit dem PDF als Anhang.

  1. Öffnen Sie links Workflows, klicken Sie auf Neu, geben Sie einen Namen ein, zum Beispiel PDF per Mail, und bestätigen Sie mit Erstellen.
  2. Fügen Sie im Editor dieses JSON ein und speichern Sie:
{
"Name": "PDF per Mail",
"Autostart": false,
"Trigger": {
"Type": "File",
"Name": "Eingang",
"Parameters": {
"Pool": "C:\\RUNOS\\Eingang",
"Filter": "*.pdf",
"CronExpression": "0/10 * * * * ?"
}
},
"Actions": [
{
"Type": "MAPI",
"Name": "MailOeffnen",
"Parameters": {
"Client": "Default",
"Mode": "Display",
"To": "kunde@example.com",
"Subject": "Ihr Dokument vom %DATE%",
"Body": "Guten Tag,\n\nanbei das Dokument {{FileName}}.",
"Attachments": "{{FilePath}}"
}
}
]
}
  1. Klicken Sie auf Lauschen und legen Sie ein PDF in C:\RUNOS\Eingang. Nach spätestens 10 Sekunden öffnet sich die Mail.
  2. Beenden Sie das Lauschen, setzen Sie "Autostart": true und speichern Sie. Ab jetzt läuft der Workflow dauerhaft, auch nach einem Neustart.

Neu in der Workflow-Liste fragt nach dem Namen des neuen Workflows und bietet darüber die Vorlagen an: einen leeren Workflow oder ein fertiges, kommentiertes Beispiel zum Anpassen. Die Wahl einer Vorlage schlägt ihren Namen vor. Kommentare (/* … */) im JSON erklären jede Einstellung.

Die Vorlagen kommen bei jedem Öffnen des Dialogs vom RUNOS-Server, neue und verbesserte Vorlagen erscheinen also ohne neue RUNOS-Version. Ohne Internetverbindung bietet der Dialog nur den leeren Workflow an.

Vorlage Zeigt
Gedruckte Rechnung als XRechnung Rechnung aus der Warenwirtschaft auf den PDF-Drucker → geprüfte XRechnung im ZUGFeRD-PDF → Mail, siehe XRechnung-Beispiel
XRechnung per E-Mail XRechnung aus Rechnungsdaten im Workflow erzeugen, prüfen und mailen
XRechnung-Referenz (alle Felder) Alle Felder einer XRechnung mit Beschreibung, als Nachschlagewerk
PDF-Drucker → E-Mail / → Outlook / → Archiv Jeder Druck auf den PDF-Drucker per Mail (SMTP), als Outlook-Mail zum Prüfen oder abgelegt nach Jahr und Monat
Eingehende Dateien drucken Jede Datei drucken, die in einem Ordner gespeichert wird
Ordner → Netzwerkfreigabe, Ordner → SFTP-Server Neue Dateien auf eine Freigabe verschieben oder auf einen SFTP-Server hochladen
Tägliche Ordnersicherung Einen Ordner werktags abends kopieren (Time-Trigger)
Mail über Microsoft 365, Mail im klassischen Outlook Mail mit Anhang über Microsoft 365 / Outlook.com oder das klassische Outlook (MAPI)
API-Abfrage mit Bedingung HTTP-Abfrage einer Wetter-API, Wenn/Sonst-Entscheidung, Mail per SMTP

Die Vorlagen verwenden Platzhalter wie smtp.example.com und für Mail-Zugangsdaten den Basic-Konnektor Mailserver; der Kommentar am Anfang jeder Vorlage sagt, was einmal einzurichten ist.

Ein Workflow ist ein JSON-Objekt. Groß- und Kleinschreibung der Feldnamen spielt keine Rolle. Kommentare /* … */ und // … sind erlaubt.

{
"Name": "Rechnungen versenden",
"Autostart": true,
"InitialData": { "Empfaenger": "buchhaltung@example.com" },
"Trigger": { "Type": "File", "Name": "Eingang", "Parameters": { "Pool": "C:\\RUNOS\\Rechnungen", "Filter": "*.pdf" } },
"Actions": [
{ "Type": "SMTP", "Name": "Senden", "Parameters": { "To": "{{InitialData.Empfaenger}}" } }
],
"OnError": [
{ "Type": "SMTP", "Name": "Fehlermail", "Parameters": { "Subject": "Fehler: {{Error.Message}}" } }
],
"TimeoutSeconds": 0,
"OnErrorPolicy": { "Strategy": "CancelRun" },
"OnWarningPolicy": { "Strategy": "LogOnly" }
}
Feld Pflicht Bedeutung
Name ja Name des Workflows
Autostart nein true: läuft nach dem Speichern und nach jedem Start von RUNOS. Standard false.
InitialData nein Beliebige Daten, die alle Aktionen als {{InitialData.…}} lesen, z. B. Adressen oder feste Rechnungsdaten
Trigger ja Der Trigger: File, Printer, Time oder Manual
Actions ja Liste der Aktionen, mindestens eine. Sie laufen nacheinander.
OnError nein Aktionen, die laufen, wenn ein Lauf fehlschlägt, siehe Fehlerbehandlung
TimeoutSeconds nein Zeitlimit je Aktion in Sekunden. 0 = kein Limit.
OnErrorPolicy, OnWarningPolicy nein Was bei Fehlern und Warnungen passiert, für alle Aktionen ohne eigene Richtlinie
Layout nein Nur für das Diagramm: wohin Sie Aktionen verschoben haben. RUNOS führt den Workflow unabhängig davon aus.

Trigger und Aktionen haben denselben Aufbau:

Feld Bedeutung
Type Art des Triggers (File, Printer, Time, Manual) oder der Aktion (XRechnung, SMTP, MAPI, Outlook365, HttpRequest, If, Loop, Parallel, StopWorkflow)
Name Eindeutiger Name. Über ihn lesen spätere Aktionen das Ergebnis, z. B. {{Senden.Response.Results.Status}}.
Parameters Die Einstellungen; welche es gibt, steht auf der Seite der jeweiligen Aktion. Unbekannte Parameter werden ignoriert.
OnErrorPolicy, OnWarningPolicy Nur bei Aktionen: eigene Richtlinie, die die des Workflows ersetzt
Description Nur bei Aktionen, optional: Beschreibung für Menschen, im Diagramm beim Zeigen auf die Aktion zu sehen. RUNOS wertet sie nicht aus.
Enabled Nur bei Aktionen, optional: false schaltet die Aktion aus, siehe unten. Fehlt es, ist die Aktion eingeschaltet.

"Enabled": false schaltet eine Aktion ab, ohne sie zu löschen: { "Type": "SMTP", "Name": "Senden", "Enabled": false, … }. Sie läuft nicht, und bei If, Loop und Parallel auch nichts, was darin steht; der Lauf geht mit der nächsten Aktion weiter. Spätere Aktionen, die {{Senden.…}} lesen, bekommen keinen Wert. Das funktioniert in Actions, in OnError und in den Zweigen von If, Loop und Parallel. Sind alle Aktionen in Actions ausgeschaltet, lässt sich der Workflow nicht laden.

Die ältere Schreibweise mit # vor dem Typ ("Type": "#SMTP") funktioniert weiterhin, aber nur direkt in Actions und OnError.

Jede Aktion legt ihr Ergebnis unter ihrem Namen ab, mit diesem Grundaufbau:

{
"Name": "Senden",
"Type": "SMTP",
"Parameters": { … },
"Response": { "Results": [ { … } ], "SuccessCount": 1, "ErrorCount": 0 },
"Meta": { "Host": "PC-BUCHHALTUNG" },
"Status": { "State": "Completed", "Warnings": [], "Errors": [] }
}

Status.State ist Completed, Failed, Skipped oder Cancelled. Jedes Auslösen startet einen eigenen, unabhängigen Lauf.

In fast jedem Parameter sind Platzhalter erlaubt. RUNOS ersetzt sie unmittelbar bevor die Aktion läuft:

  • %…% für Datum, Uhrzeit, Ordner und Umgebungsvariablen. Sie werden zuerst ersetzt.
  • {{…}} für Daten aus dem Workflow: Ergebnisse von Trigger und Aktionen, InitialData, Konnektoren.

Ein Platzhalter ist ein Pfad aus Namen, getrennt durch Punkte, z. B. {{RechnungErstellen.Response.Results.FilePath}}. Groß- und Kleinschreibung spielt keine Rolle.

Wurzel Inhalt Verfügbar
InitialData InitialData des Workflows, ergänzt durch Parametersätze und Skriptblöcke immer
Trigger oder Name des Triggers Ergebnis des Triggers immer
Name einer Aktion Ergebnis dieser Aktion nach der Aktion
FilePath, FileName, FileContent Datei dieses Laufs und ihr Text File-Trigger
Error der Fehler, der den Lauf beendet hat in OnError
item, index, count aktuelles Element, Position (ab 0), Anzahl in einer Loop
connector gespeicherte Konnektoren immer
eigene Werte globale Werte aus einem Skriptblock File-Trigger
Schreibweise Ergebnis
Results.0 oder Results[0] erstes Element einer Liste (ab 0)
Results.first / .last / .count / .any erstes / letztes Element, Anzahl, nicht leer
Results.FilePath ein Feldname auf einer Liste greift automatisch auf das erste Element zu
.toString(), .toInt(), .toDouble(), .toBool() Wert umwandeln
.toBase64() Base64 des Textes; ist der Wert ein vorhandener Dateipfad, des Dateiinhalts
.length() Länge eines Textes
  • Steht der Platzhalter allein im Parameter, wird der Wert mit seinem Typ übernommen (ein Objekt bleibt ein Objekt).
  • Steht er in einem Text, wird er als Text eingesetzt; Objekte erscheinen als kompaktes JSON. {{!pfad}} liefert immer Text.
  • Ein Platzhalter, der nicht aufgelöst werden kann, wird zu leerem Text, mit einer Warnung im Protokoll.
Platzhalter Beispiel Hinweis
%DATE% / %TIME% 2026-10-08 / 14-05-09
%yyyy% / %yy% / %MM% / %dd% 2026 / 26 / 10 / 08 %MM% = Monat, groß
%HH% / %hh% / %mm% / %ss% / %fff% 14 / 02 / 05 / 09 / 123 %mm% = Minute, klein
%userdesktop%, %userdocuments%, %userdownloads% Desktop, Dokumente, Downloads
%userprofile%, %userappdata%, %local% Benutzerordner, AppData\Roaming, AppData\Local
%programdata%, %programfiles%, %base% C:\ProgramData, C:\Program Files, Ordner von RUNOS
%username%, %machinename%, %osversion% Benutzer, PC-Name, Windows-Version
%NAME% jede Windows-Umgebungsvariable, z. B. %TEMP%

Beispiel: Export_%yyyy%-%MM%-%dd%_%HH%-%mm%.csv → Export_2026-10-08_14-05.csv. Platzhalter dürfen direkt aneinanderstehen (%HH%%mm%%ss%). Ein unbekanntes %…% bleibt stehen.

Die Parameter Body und Signatur der Mail-Aktionen nehmen auch den Pfad einer Text- oder HTML-Datei; Platzhalter darin werden ebenfalls ersetzt. Platzhalter rechnen nicht; für Entscheidungen gibt es IF, zum Rechnen und Umformen Code.

Ein Lauf kann an einer Aktion, am Zeitlimit (TimeoutSeconds) oder schon am Trigger scheitern (Ordner nicht lesbar, fehlerhafter Skriptblock). Dann:

  1. Die Fehlerrichtlinie der Aktion entscheidet: wiederholen, überspringen oder den Lauf beenden.
  2. Wird der Lauf beendet, laufen die folgenden Aktionen nicht mehr.
  3. Die Datei des Laufs wird nach <Pool>\Spooler\Failed\<ID>\ verschoben.
  4. Die OnError-Aktionen laufen, mit dem Fehler in {{Error…}}.
  5. Gibt es keine OnError-Aktionen oder schlägt eine fehl, zeigt RUNOS eine Benachrichtigung (und auf Wunsch ein Fehler-Pop-up).
  6. Der Workflow läuft weiter. Nur CancelWorkflow und die Aktion StopWorkflow halten ihn an.
"OnErrorPolicy": { "Strategy": "RetryThenNotify", "MaxRetries": 3, "InitialDelaySeconds": 5, "BackoffStrategy": "exponential" }
Strategy Wirkung
CancelRun Standard. Der Lauf endet als fehlgeschlagen, der Workflow läuft weiter.
CancelWorkflow Der Lauf endet und der Workflow wird gestoppt, auch über einen Neustart hinweg.
SkipAction Aktion als übersprungen markieren, mit der nächsten weitermachen. Im Protokoll: „Skipping the failed action; the run continues.“
Retry / RetryThenNotify Bis zu MaxRetries Wiederholungen, danach wie CancelRun
RetryThenSkip Bis zu MaxRetries Wiederholungen, danach wie SkipAction. Im Protokoll: „Skipping the action after N failed attempts; the run continues.“ (N = Versuche insgesamt)

MaxRetries (Standard 0), InitialDelaySeconds (Standard 1) und BackoffStrategy (exponential: 1×, 2×, 4× … oder linear) steuern die Wiederholungen. Die Richtlinie einer Aktion hat Vorrang vor der des Workflows. Schreiben Sie Strategy genau wie in der Tabelle: Ein anderer Wert (auch skipaction in Kleinbuchstaben) wirkt wie CancelRun; beginnt er mit Retry, wird vorher wiederholt. Fehlt Strategy in einer OnErrorPolicy, gilt CancelRun, nicht die Richtlinie des Workflows. Im Diagramm zeigt der Reiter Bei Fehler jeder Aktion, was an ihrer Stelle tatsächlich gilt.

Eine eigene Richtlinie wirkt auch für Aktionen in If, Loop, Parallel und OnError. Eine Aktion in If, Loop oder Parallel ohne eigene Richtlinie übernimmt die des Workflows nicht: Schlägt sie fehl, schlägt das If fehl (dann gilt dessen Richtlinie), zählt der Durchlauf des Loops als Fehler bzw. schlägt ihr Zweig und damit das Parallel fehl. Mit "OnErrorPolicy": { "Strategy": "SkipAction" } an der Aktion selbst läuft der Zweig bzw. Durchlauf weiter.

OnWarningPolicy gilt für Aktionen, die mit Warnungen enden: LogOnly (Standard), Retry (mit RetryCount und RetryDelaySeconds) oder SkipAction.

OnError ist eine zweite Aktionsliste, die nur läuft, wenn ein Lauf fehlschlägt:

"OnError": [
{
"Type": "SMTP",
"Name": "FehlerMelden",
"Parameters": {
"To": "it@example.com",
"Subject": "RUNOS: {{Error.Workflow}} fehlgeschlagen",
"Body": "Aktion: {{Error.Action}}\nFehler: {{Error.Message}}\nDatei: {{Error.FileName}}\nZeit: {{Error.Time}}",
"SmtpServer": "smtp.example.com", "SmtpUser": "runos@example.com",
"SmtpPassword": "{{connector.Mailserver.Password}}", "From": "runos@example.com"
}
}
]
Feld von Error Inhalt
Message, Errors Fehlermeldung, alle Meldungen als Liste
Source Action oder Trigger
Action, ActionType Name und Typ der fehlgeschlagenen Aktion
Workflow, Machine, InstanceId Workflow, PC, Kennung des Laufs
Time / TimeUtc Zeitpunkt (lokal / UTC)
FileName, FilePath Datei des Laufs, falls vorhanden

Sind alle OnError-Aktionen erfolgreich, gilt der Fehler als behandelt. OnError-Aktionen nutzen nur ihre eigene OnErrorPolicy, nie die des Workflows; schlägt eine fehl, werden die restlichen übersprungen und RUNOS zeigt die Fehlermeldung. OnError startet dabei nie erneut, eine Fehlerschleife ist also nicht möglich.

  • Ausführen (F5) startet die Aktionen genau einmal, als hätte der Trigger ausgelöst, ohne den Trigger einzuschalten. Bei einem File-Trigger gibt es dabei keine Datei; {{FilePath}} bleibt leer. Danach zeigt die Testansicht die Daten jeder Aktion, und das Diagramm markiert jede Aktion mit ihrem Ergebnis.
  • Parametersätze (Pfeil neben Ausführen) sind JSON-Objekte, die über InitialData gelegt werden. So probieren Sie einen Workflow mit verschiedenen Daten aus, ohne das JSON zu ändern. Sie gelten für Ausführen und Schritt testen.
  • Lauschen schaltet den Trigger im Testmodus ein, solange der Tab offen ist. Läuft derselbe Workflow schon aus der Liste, fragt RUNOS, ob er gestoppt werden soll.
  • Starten / Stoppen im Editor ist kein Test: Es schaltet den gespeicherten Workflow dauerhaft ein oder aus, genau wie in der Workflow-Liste. Ungespeicherte Änderungen gelten erst nach Speichern. Lauscht der Tab gerade, endet das Lauschen beim Starten.
  • Schritt testen in der Testansicht führt eine einzelne Aktion sofort aus, mit den Daten der Schritte davor. Eine E-Rechnung probieren Sie ohne Workflow in der Ansicht E-Rechnung (XRechnung) aus.

Im Protokoll sehen Sie je Lauf TriggerFired, ActionCompleted je Aktion, Fehler und Warnungen sowie eine Summary.

Die Testansicht zeigt für eine Aktion drei Spalten nebeneinander. Sie öffnen sie im Diagramm mit der Schaltfläche mit den Spalten oben im Einstellungsfeld einer Aktion; eine neu hinzugefügte Aktion öffnet sich gleich darin. Esc oder die Schaltfläche zum Verkleinern führt zurück zum Diagramm.

Spalte Inhalt
Eingabe Die Daten, die die Aktion verwenden kann: jede frühere Aktion (die nächste zuerst) mit den Daten ihres letzten Laufs oder Tests als Baum oder, solange es keine gibt, mit den Feldern, die ihre Art liefert; die Variablen des Triggers (z. B. {{FilePath}}); die Startdaten (InitialData); in einem Loop item, index und count; in der OnError-Spalte Error.*; die gespeicherten Konnektoren als {{connector.<Name>.<Feld>}} (geheime Werte wie Passwort, API-Key oder Token stehen dort nur als „(verborgen)“, der Lauf liest den echten Wert). Das Suchfeld oben filtert alle Quellen nach Schlüssel, Verweis oder Wert. Das If, Loop oder Parallel, in dem die Aktion steht, fehlt: Es hat erst ein Ergebnis, wenn sein Inhalt gelaufen ist. Testen bei einer früheren Aktion führt diese aus, damit ihre Daten da sind. Daten leeren verwirft alle Testdaten.
Einstellungen Formular bzw. Parameter, Bei Fehler und die Aktion als JSON, wie im Einstellungsfeld.
Ausgabe Schritt testen (auch oben im Einstellungsfeld), danach der Zustand (Erfolgreich, Erfolgreich mit Warnungen oder Fehlgeschlagen), die Dauer, Fehler und Warnungen und das Ergebnis als Baum oder JSON: Response, Status, die aufgelösten Parameters und Meta.

Werte per Drag-and-drop: Ziehen Sie einen Wert aus dem Baum der Eingabe oder Ausgabe auf ein Feld. Er wird dort, wo Sie loslassen, als {{…}}-Verweis eingefügt, z. B. {{LieferantSuchen.Response.Body.id}}. Auf einer Auswahlliste, einem Schalter oder einem Zahlenfeld wird das ganze Feld zu diesem Verweis. Beim Ziehen hängt der Verweis am Mauszeiger, und das Feld darunter wird hervorgehoben. Ein Klick auf einen Wert kopiert seinen Verweis; ein Klick auf einen Eintrag mit Inhalt (z. B. „8 Felder“) klappt ihn auf. Schlüssel mit ., [, ], {, }, (, ) oder " lassen sich in {{…}} nicht ansprechen und daher nicht ziehen.

Schritt testen führt nur diese eine Aktion sofort aus, mit den Daten, die die Schritte davor hinterlassen haben (ihr letzter Lauf oder Test), und mit den InitialData des gewählten Parametersatzes. Der Workflow muss dafür weder gespeichert noch vollständig sein; die Aktion braucht aber einen Namen. Fehlerrichtlinie, Wiederholungen und Zeitlimit gelten beim Test nicht. Bei If, Loop und Parallel laufen auch die Aktionen darin.

Ausführen (F5) füllt die Testdaten ebenfalls: Danach zeigt jede Aktion ihre Daten, und das Diagramm markiert sie mit ihrem Ergebnis (grüner Haken ohne Fehler, gelb mit Warnungen, rot fehlgeschlagen; während eines Tests ein Ladekreis).

Die Testdaten bleiben erhalten, solange der Tab des Editors offen ist, und werden nie mit dem Workflow gespeichert, da sie vertrauliche Daten enthalten können. Lange Texte und Listen werden nur in der Anzeige gekürzt; Tests verwenden die vollständigen Daten.

Die Einstellungen öffnen Sie über das Zahnrad unten in der Aktivitätsleiste. Den PDF-Drucker legen Sie unter Drucker in der Aktivitätsleiste an, siehe PDF-Drucker.

Einstellung Bedeutung
Anzeigesprache Systemstandard, Deutsch, Englisch, Französisch, Italienisch oder Spanisch. Wird nach einem Neustart wirksam (Jetzt neu starten).
Mit Windows starten RUNOS startet bei der Anmeldung minimiert im Infobereich, ohne dass sich das Fenster öffnet; die Workflows laufen trotzdem. Ein Klick auf das RUNOS-Symbol im Infobereich öffnet es. Beim ersten Start eingeschaltet.
Fehler-Pop-up anzeigen Bei einem fehlgeschlagenen Lauf öffnet sich ein Fenster im Vordergrund.
KoSIT-Validator mit Windows starten Lädt die E-Rechnungsregeln, sobald RUNOS startet. Standardmäßig aus: Dann startet der Validator mit der ersten XRechnung, die einmalig etwa 15–20 Sekunden wartet, oder mit Starten unter E-Rechnungs-Prüfung. Ausschalten beendet einen laufenden Validator nicht; er läuft bis zum Ende von RUNOS.
Protokolleinträge aufbewahren für Nur aktuelle Sitzung, 1 Tag oder mehrere Tage (Standard 7)
Skriptblöcke Blockmarkierungen (Standard #RUNOS / #RUNOS), Trennzeichen zwischen Blöcken (z. B. `
E-Rechnungs-Prüfung Zustand des KoSIT-Validators (Läuft, Wird gestartet…, Gestoppt, Fehler, Ersatzmodus) mit Starten / Neu starten und einer kurzen Meldung; Einzelheiten im Protokoll, siehe Wenn der Validator nicht startet
Lizenz Zustand der Lizenz, Installations-ID mit ID kopieren, Jetzt prüfen
KI-Agenten MCP-Server für KI-Agenten ein/aus (Standard aus) und KI-Agent verbinden mit Claude-Code-Befehl kopieren, JSON kopieren, Neuer Schlüssel, siehe KI-Agenten (MCP)
Nutzungsstatistik senden Einmal am Tag Zahlen wie App-Starts, Abstürze, Zahl und Erfolg der Läufe, Aktionstypen mit Fehlern, Versionen. Niemals Workflow-Namen, Dateinamen, Pfade, Inhalte oder Meldungen.

Jeder Windows-Benutzer hat seine eigenen Daten. So arbeiten mehrere Benutzer eines PCs (Terminalserver) unabhängig voneinander mit RUNOS und brauchen keine Schreibrechte auf gemeinsame Ordner.

Pfad Inhalt
Dokumente\RUNOS\Config\Settings.json Einstellungen
Dokumente\RUNOS\Config\DB\ Workflows, Konnektoren, Protokoll, Verlauf der Läufe, Parametersätze
Dokumente\RUNOS\Config\License.json Lizenz dieser Installation
Dokumente\RUNOS\Pools\<Druckername>\ Ihr Ordner eines PDF-Druckers, sofern Sie keinen anderen gewählt haben
%LOCALAPPDATA%\RUNOS\ Arbeitsordner der XRechnung-Aktion, KoSIT-Validator und Prüfberichte

Einstellungen → Datenordner zeigt den Pfad und öffnet ihn. Ändern… verschiebt die Daten in einen anderen Ordner Ihrer Wahl (leer oder neu, z. B. auf einem anderen Laufwerk): RUNOS startet neu und verschiebt Einstellungen, Lizenz, Workflows, Konnektoren und Protokoll dorthin, bevor es etwas öffnet; der alte Ordner wird danach gelöscht. Die Wahl gilt nur für Ihren Windows-Benutzer und steht unter HKEY_CURRENT_USER\Software\RUNOS (DataFolder). Enthält der gewählte Ordner bereits RUNOS-Daten (Settings.json oder DB), verschiebt RUNOS nichts, sondern fragt, ob Sie diesen Ordner verwenden möchten, siehe Gemeinsamer Datenordner. Ein anderer Ordner, der nicht leer ist, wird abgelehnt. Dokumente ist der Dokumente-Ordner des Benutzers, auch wenn er umgeleitet ist (etwa auf ein Netzlaufwerk). Die mit RUNOS gelieferten Dateien (Konnektor-Vorlagen, KoSIT-Regeln, Farbprofil) liest RUNOS aus dem Ordner Repository neben RUNOS.exe.

Zum Sichern beenden Sie RUNOS und kopieren Dokumente\RUNOS\Config. Verschlüsselte Geheimnisse von Konnektoren kann nur derselbe Windows-Benutzer auf demselben PC lesen.

Mehrere Windows-Benutzer können die Workflows eines Benutzers verwenden. Nur dieser Besitzer ändert sie; jede Änderung kommt bei den anderen Benutzern (Mitgliedern) sofort an, ohne Neustart.

  1. Legen Sie einen Ordner an, auf den alle Benutzer Schreibrechte haben, z. B. C:\RUNOS-Daten (nicht den Dokumente-Ordner eines Benutzers, den die anderen nicht öffnen dürfen).
  2. Der künftige Besitzer verschiebt seine Daten dorthin: Einstellungen → Datenordner → Ändern… und den leeren Ordner wählen. RUNOS vermerkt ihn in Owner.txt im Ordner als Besitzer.
  3. Jeder weitere Benutzer wählt denselben Ordner. RUNOS meldet, dass er bereits RUNOS-Daten enthält; Verwenden und neu starten startet RUNOS mit diesen Workflows. Nichts wird kopiert oder gelöscht: Die eigenen Daten des Mitglieds bleiben in seinem bisherigen Ordner, und es kann jederzeit zurückwechseln, indem es diesen wieder wählt.
Gemeinsam (im Ordner des Besitzers) Je Benutzer (im eigenen Ordner des Mitglieds)
Workflows, geteilte Konnektoren eigene Konnektoren mit Zugangsdaten
Protokoll (Spalte Benutzer) Einstellungen, Lizenz
Aufbewahrung des Protokolls, Skriptblöcke (legt der Besitzer fest) Starten/Stoppen jedes Workflows, Punkte der letzten Läufe
Parametersätze (bis das Mitglied eigene speichert) eigene Parametersätze und Script-Auswahl
  • Nur der Besitzer ändert Workflows. Ein Mitglied sieht in der Workflow-Liste Gemeinsam · schreibgeschützt; Neu, Umsortieren, Speichern, Umbenennen und Löschen sind gesperrt, auch für KI-Agenten. Öffnen, im Editor testen, starten und stoppen kann es die Workflows; Starten/Stoppen gilt nur für das eigene RUNOS. Speichert der Besitzer einen Workflow neu, gilt für die Mitglieder wieder sein Autostart, wie beim Besitzer.
  • Änderungen kommen sofort an. RUNOS prüft alle 2 Sekunden, ob der Besitzer etwas geändert hat, und lädt nur die geänderten Workflows neu: neue kommen hinzu, gelöschte werden gestoppt und entfernt, ein geöffneter Editor-Tab zeigt die neue Fassung (oder schließt sich, wenn der Workflow gelöscht wurde). Die anderen Workflows laufen ungestört weiter.
  • Jeder hat seine eigenen Konnektoren. Ein Workflow findet Konnektoren über ihren Namen. Legt jeder Benutzer unter Konnektoren einen Konnektor mit demselben Namen an (z. B. Mail), verwendet derselbe Workflow bei jedem dessen eigene Adresse und eigenes Passwort.
  • Konnektoren teilen: Sobald ein Mitglied RUNOS mit dem Ordner gestartet hat, zeigt der Besitzer unter Konnektoren bei jedem Konnektor das Kästchen Mit den anderen Benutzern dieses Datenordners teilen (ohne Mitglieder bleibt es verborgen). Angehakt und gespeichert, liegt der Konnektor in DB\SharedConnectors.db im gemeinsamen Ordner, und die Workflows aller Mitglieder können ihn verwenden. In der Liste steht er mit geteilt. Mitglieder sehen ihn, können ihn testen und sein Token erneuern, aber nicht ändern oder löschen; Duplizieren macht daraus einen eigenen Konnektor. Hat ein Mitglied einen eigenen Konnektor mit demselben Namen, gilt seiner. Die Geheimnisse eines geteilten Konnektors sind für diesen PC verschlüsselt statt für einen Benutzer: Jeder Benutzer dieses PCs (Terminalservers) kann sie lesen, ein anderer PC nicht. Haken entfernen und speichern macht ihn wieder zum eigenen Konnektor des Besitzers.
  • Besitz übergeben: Unter Einstellungen → Datenordner sieht der Besitzer, welche Benutzer den Ordner außerdem verwenden, und kann ihn mit Übergeben… einem davon übergeben. RUNOS startet neu, kopiert Lizenz, eigene Konnektoren, Einstellungen, Verlauf der Läufe und das Starten/Stoppen des bisherigen Besitzers in einen eigenen Ordner (Dokumente\RUNOS\Config, sonst Dokumente\RUNOS\Personal) und verwendet den gemeinsamen Ordner ab dann als Mitglied. Beim nächsten Start von RUNOS übernimmt der neue Besitzer den Ordner: Seine Lizenz, eigenen Konnektoren, Einstellungen, Verlauf und sein Starten/Stoppen kommen mit; Workflows, Protokoll, geteilte Konnektoren, Parametersätze sowie Aufbewahrung des Protokolls und Skriptblöcke bleiben, wie sie sind. Bis dahin ändert niemand die Workflows.
  • Eigene Pools: Verwenden Sie im File-Trigger Platzhalter wie %userdocuments%\RUNOS\Pool1 statt eines festen Pfads. Dann überwacht jeder Benutzer seinen eigenen Ordner. Ein fester Pfad wie C:\Eingang würde von allen angemeldeten Benutzern gleichzeitig überwacht.
  • Protokoll: Alle schreiben in dasselbe Protokoll. Die Spalte Benutzer zeigt, von wem ein Eintrag stammt; Einträge der anderen Benutzer erscheinen nach wenigen Sekunden auch in Ihrem offenen RUNOS. Ein Mitglied löscht mit dem Papierkorb nur seine eigenen Einträge.
  • Ein Mitglied kann den gemeinsamen Ordner nicht verschieben. Wählt es wieder seinen eigenen Datenordner, arbeitet es wie vorher mit seinen eigenen Workflows.

Update von einer älteren Version: Bisher lagen die Daten in C:\ProgramData\RUNOS, gemeinsam für alle Benutzer des PCs. Beim ersten Start kopiert die neue Version Settings.json, License.json und den Ordner DB von dort nach Dokumente\RUNOS\Config des Benutzers, einmal je Windows-Benutzer, damit jeder seine Workflows und Einstellungen behält. Auf einem Terminalserver startet so jeder Benutzer mit den bisher gemeinsamen Workflows; ab dann bleiben die Änderungen jedes Benutzers seine eigenen. C:\ProgramData\RUNOS bleibt unverändert; löschen Sie es, wenn alle Benutzer die neue Version gestartet haben. Kann RUNOS nicht in Dokumente\RUNOS\Config schreiben (Netzlaufwerk nicht erreichbar, oder Windows-Sicherheit → Überwachter Ordnerzugriff blockiert es), startet es nicht und meldet das.

Ist RUNOS kostenlos? Ja, RUNOS ist kostenlos.

Laufen Workflows, wenn niemand angemeldet ist? Nein. RUNOS läuft in der Sitzung eines angemeldeten Benutzers. Für einen PC, der unbeaufsichtigt arbeitet, bleibt ein Benutzer angemeldet (gesperrter Bildschirm ist in Ordnung).

Mein Workflow startet nicht, wenn eine Datei ankommt. Läuft der Workflow (die Liste zeigt Stoppen)? Passt die Datei zu Filter? Teilen mehrere Workflows den Ordner, nennt die Datei diesen Workflow in ihren Skriptblöcken (Gemeinsamer Pool)? Steht im Protokoll eine Lizenzmeldung?

Mein Workflow war plötzlich gestoppt. Durch "Strategy": "CancelWorkflow", eine StopWorkflow-Aktion oder durch Speichern mit "Autostart": false. Die Ursache steht im Protokoll.

Ein Platzhalter bleibt leer. Protokoll mit Filter Trace öffnen: Dort steht, wozu jeder Platzhalter aufgelöst wurde. Häufig: Tippfehler im Aktionsnamen, die Aktion lief noch nicht, oder der Wert einer HTTP-Antwort steckt unter Response.Body.

Funktioniert RUNOS mit dem neuen Outlook? Das neue Outlook lässt sich von keinem Programm steuern. Senden Sie über Microsoft 365; für das klassische Outlook gibt es MAPI.

Werden meine Rechnungen irgendwohin hochgeladen? Nein. Erzeugung und Prüfung der XRechnung laufen vollständig auf Ihrem PC.

Schreiben Sie uns an info@systemberg.de; in RUNOS öffnet Hilfe → Kontakt → E-Mail schreiben Ihr Mailprogramm. Hilfreich sind die Version (Einstellungen → Info), die Installations-ID und das Workflow-JSON ohne Passwörter; bei Fehlern auch das Protokoll (Protokolle → Protokoll in Datei speichern).