Workflow-SDK 1.0.0
Diese Seite ist die API-Referenz von @acriva/workflow-sdk 1.0.0, dem SDK, gegen das Sie Skripte im Workflow-Designer schreiben. Sie wird aus den Deklarationen des SDK erzeugt und ändert sich nicht mehr, sobald die Version veröffentlicht ist. Wie Sie ein Skript schreiben, testen und veröffentlichen, beschreibt die Anleitung Workflows anpassen und programmieren; was sich je Version geändert hat, steht im Changelog.
SDK 1.x wächst nur additiv: Neue Hooks, Mitglieder von ctx, Hilfen und optionale Parameter kommen hinzu, nichts fällt weg. Unions, die ein Skript empfängt (Hook, TaskOutcome, die Schlüssel der Typen des Arbeitsbereichs), können deshalb neue Mitglieder bekommen; ein switch darüber braucht einen default-Zweig.
Schnittstellen
Abschnitt betitelt „Schnittstellen“Reference
Abschnitt betitelt „Reference“Ein Verweis auf ein anderes Objekt des Arbeitsbereichs, etwa einen Kontakt in einem Feld „Lieferant“.
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ | Beschreibung |
|---|---|---|---|
id |
readonly |
string |
Die ID des Objekts. |
name |
readonly |
string |
Der Anzeigename des Objekts. |
DocumentFields
Abschnitt betitelt „DocumentFields“Die Felder, die ein Skript als ctx.document.fields liest: die Eingaben seines Schritts, Schlüssel → Typ. Leer im SDK;
die Typen des Arbeitsbereichs (tenant.d.ts, GET /workflows/sdk/types) ergänzen es per Module Augmentation. Ein Pflichtfeld
hat seinen Typ, ein optionales Feld Typ | null. Typen: string (Text), number, Money, PlainDate,
boolean, eine Union der Optionsschlüssel (Auswahl) und Reference.
Beispiel
Abschnitt betitelt „Beispiel“import type { Money, Reference } from '@acriva/workflow-sdk';declare module '@acriva/workflow-sdk' { interface DocumentFields { bruttobetrag: Money; lieferant: Reference; kostenstelle: string | null; }}SettableFields
Abschnitt betitelt „SettableFields“Die Felder, die ein Skript mit EffectContext.setField setzen darf, Schlüssel → Typ: die Felder des
Dokumenttyps des Auslösers ohne die, die Finanzen für eine Rechnung liest, und die Felder, die der Workflow deklariert.
Leer im SDK; tenant.d.ts ergänzt es wie DocumentFields.
DocumentTypeRegistry
Abschnitt betitelt „DocumentTypeRegistry“Die Dokumenttypen des Arbeitsbereichs: ein Eintrag je Schlüssel (eingangsrechnung: true). Leer im SDK; tenant.d.ts
ergänzt es. Ohne Einträge ist DocumentTypeKey string.
FileTypeRegistry
Abschnitt betitelt „FileTypeRegistry“Die Akten-Typen des Arbeitsbereichs: ein Eintrag je Schlüssel. Leer im SDK; tenant.d.ts ergänzt es. Ohne Einträge ist
FileTypeKey string.
TagRegistry
Abschnitt betitelt „TagRegistry“Die Schlagwörter des Arbeitsbereichs: ein Eintrag je Name ('über 500 €': true). Leer im SDK; tenant.d.ts ergänzt es.
Ohne Einträge ist TagName string.
RoleRegistry
Abschnitt betitelt „RoleRegistry“Die Rollen des Arbeitsbereichs: ein Eintrag je Rolle, eine Standardrolle mit ihrem Schlüssel (admin), eine eigene Rolle
mit ihrem Namen. Leer im SDK; tenant.d.ts ergänzt es. Ohne Einträge ist RoleKey string.
CostCenterRegistry
Abschnitt betitelt „CostCenterRegistry“Die Kostenstellen des Arbeitsbereichs: ein Eintrag je Nummer ('4200': true), die aktiven aus Finanzen. Leer im SDK;
tenant.d.ts ergänzt es. Ohne Einträge ist CostCenterNumber string.
DocumentTypeFieldsRegistry
Abschnitt betitelt „DocumentTypeFieldsRegistry“Die Felder jedes Dokumenttyps: Schlüssel des Typs → (Schlüssel des Felds → Typ), wie bei DocumentFields. Leer im
SDK; tenant.d.ts ergänzt es. FieldsOf liest einen Typ daraus.
SettableFieldKeysRegistry
Abschnitt betitelt „SettableFieldKeysRegistry“Die Felder jedes Dokumenttyps, die ein Skript setzen darf: Schlüssel des Typs → Union der Schlüssel (ohne die, die
Finanzen für eine Rechnung liest). Leer im SDK; tenant.d.ts ergänzt es. SettableFieldsOf liest einen Typ daraus.
FileRef
Abschnitt betitelt „FileRef“Eine Akte, in der das Dokument liegt.
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ | Beschreibung |
|---|---|---|---|
type |
readonly |
FileTypeKey |
Der Schlüssel des Akten-Typs. |
number |
readonly |
string |
Die Nummer der Akte. |
ScriptDocument
Abschnitt betitelt „ScriptDocument“Das Dokument, für das der Workflow läuft: seine Metadaten, nie sein Text.
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ | Beschreibung |
|---|---|---|---|
id |
readonly |
string |
Die ID des Dokuments. |
type |
readonly |
DocumentTypeKey |
Der Schlüssel seines Dokumenttyps. |
fields |
readonly |
Readonly<DocumentFields> |
Die Felder, die der Schritt als Eingaben deklariert, typisiert aus tenant.d.ts (DocumentFields). |
tags |
readonly |
readonly TagName[] |
Die Namen seiner Schlagwörter. |
files |
readonly |
readonly FileRef[] |
Die Akten, in denen es liegt. |
ScriptInstance
Abschnitt betitelt „ScriptInstance“Die Workflow-Instanz, in der das Skript läuft.
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ | Beschreibung |
|---|---|---|---|
id |
readonly |
string |
Die ID der Instanz. |
step |
readonly |
string |
Der Name des Skript-Schritts. |
lastTaskOutcome |
readonly |
TaskOutcome | null |
Das Ergebnis der letzten erledigten Aufgabe der Instanz, null vor der ersten. |
ScriptResult
Abschnitt betitelt „ScriptResult“Was run zurückgibt: das Ergebnis von EffectContext.branch oder EffectContext.result. Nur das SDK
erzeugt es.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
O extends Outputs |
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ |
|---|---|---|
[resultBrand] |
readonly |
O |
Eine Benachrichtigung von EffectContext.notify.
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ | Beschreibung |
|---|---|---|---|
to |
readonly |
readonly Recipient[] |
Die Empfänger. |
text |
readonly |
string |
Reiner Text, höchstens 1.000 Zeichen. Wer das Dokument nicht lesen darf, bekommt nur einen Link. |
ScriptContext
Abschnitt betitelt „ScriptContext“Was jedes Skript in run bekommt, an jedem Hook. ctx ist eingefroren; Uhr und Zufall gibt es nur hier, weil
Date.now und Math.random im Skript fehlen.
Erweitert durch
Abschnitt betitelt „Erweitert durch“Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ | Beschreibung |
|---|---|---|---|
document |
readonly |
ScriptDocument |
Das Dokument, für das der Workflow läuft. |
instance |
readonly |
ScriptInstance |
Die Workflow-Instanz. |
sources |
readonly |
Sources |
Die Datenquellen des Arbeitsbereichs, nur lesend (Sources): externe JSON-Endpunkte, die eine Administratorin oder ein Administrator eingerichtet hat. |
tables |
readonly |
Tables |
Die Datentabellen des Arbeitsbereichs, nur lesend (Tables): Stammdaten wie eine Lieferantenliste. |
Methoden
Abschnitt betitelt „Methoden“now(): Date;Der Zeitpunkt des Laufs; innerhalb eines Laufs immer derselbe.
Rückgabewert
Abschnitt betitelt „Rückgabewert“Date
today()
Abschnitt betitelt „today()“today(): PlainDate;Der heutige Tag in Deutschland (Europe/Berlin), zum Zeitpunkt des Laufs.
Rückgabewert
Abschnitt betitelt „Rückgabewert“random()
Abschnitt betitelt „random()“random(): number;Eine Zufallszahl in [0, 1), anstelle von Math.random.
Rückgabewert
Abschnitt betitelt „Rückgabewert“number
log(...values): void;Schreibt eine Zeile in die Konsole des Laufs (höchstens 1.000 Zeichen je Zeile, 1.000 Zeilen je Lauf).
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
…values |
readonly unknown[] |
Die Werte der Zeile, durch Leerzeichen getrennt. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“void
hint(text): void;Hängt einen Hinweis an die nächste Aufgabe der Instanz (reiner Text, höchstens 500 Zeichen, als Ausgabe des
Skripts gekennzeichnet). Die einzige Wirkung an beforeApproval.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
text |
string |
Der Hinweis. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“void
EffectContext
Abschnitt betitelt „EffectContext“ctx an den Hooks mit Wirkungen (onDocumentArrived, onApproved, onRejected, onTimer). Wirkungen werden
gesammelt und erst nach dem Lauf geprüft und als die Instanz angewendet; ein Testlauf wendet nichts an.
Erweitert
Abschnitt betitelt „Erweitert“Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter | Standardtyp |
|---|---|
O extends Outputs |
Outputs |
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ | Beschreibung | Geerbt von |
|---|---|---|---|---|
document |
readonly |
ScriptDocument |
Das Dokument, für das der Workflow läuft. | ScriptContext.document |
instance |
readonly |
ScriptInstance |
Die Workflow-Instanz. | ScriptContext.instance |
sources |
readonly |
Sources |
Die Datenquellen des Arbeitsbereichs, nur lesend (Sources): externe JSON-Endpunkte, die eine Administratorin oder ein Administrator eingerichtet hat. | ScriptContext.sources |
tables |
readonly |
Tables |
Die Datentabellen des Arbeitsbereichs, nur lesend (Tables): Stammdaten wie eine Lieferantenliste. | ScriptContext.tables |
Methoden
Abschnitt betitelt „Methoden“now(): Date;Der Zeitpunkt des Laufs; innerhalb eines Laufs immer derselbe.
Rückgabewert
Abschnitt betitelt „Rückgabewert“Date
Geerbt von
Abschnitt betitelt „Geerbt von“today()
Abschnitt betitelt „today()“today(): PlainDate;Der heutige Tag in Deutschland (Europe/Berlin), zum Zeitpunkt des Laufs.
Rückgabewert
Abschnitt betitelt „Rückgabewert“Geerbt von
Abschnitt betitelt „Geerbt von“random()
Abschnitt betitelt „random()“random(): number;Eine Zufallszahl in [0, 1), anstelle von Math.random.
Rückgabewert
Abschnitt betitelt „Rückgabewert“number
Geerbt von
Abschnitt betitelt „Geerbt von“log(...values): void;Schreibt eine Zeile in die Konsole des Laufs (höchstens 1.000 Zeichen je Zeile, 1.000 Zeilen je Lauf).
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
…values |
readonly unknown[] |
Die Werte der Zeile, durch Leerzeichen getrennt. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“void
Geerbt von
Abschnitt betitelt „Geerbt von“hint(text): void;Hängt einen Hinweis an die nächste Aufgabe der Instanz (reiner Text, höchstens 500 Zeichen, als Ausgabe des
Skripts gekennzeichnet). Die einzige Wirkung an beforeApproval.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
text |
string |
Der Hinweis. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“void
Geerbt von
Abschnitt betitelt „Geerbt von“setField()
Abschnitt betitelt „setField()“setField<K>(key, value): void;Setzt ein Feld des Dokuments; null leert es. Nach einer Freigabe (onApproved, ein onTimer danach) nur ein
leeres Feld, das der Workflow deklariert.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
K extends keyof SettableFields & string |
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
key |
K |
Der Schlüssel des Felds. |
value |
| FieldInput<NonNullable<SettableFields[K]>> | null |
Der neue Wert. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“void
addTag()
Abschnitt betitelt „addTag()“addTag(name): void;Fügt dem Dokument ein vorhandenes Schlagwort hinzu.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
name |
TagName |
Der Name des Schlagworts. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“void
fileInto()
Abschnitt betitelt „fileInto()“fileInto(file): void;Legt das Dokument in einer Akte ab.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
file |
FileRef |
Akten-Typ und Nummer der Akte. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“void
notify()
Abschnitt betitelt „notify()“notify(notice): void;Benachrichtigt Mitglieder oder Rollen des Arbeitsbereichs.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
notice |
Notice |
Empfänger und Text. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“void
branch()
Abschnitt betitelt „branch()“branch(value, values?): ScriptResult<O>;Wählt den Ausgang des Schritts: einen der festen Werte aus outputs. Geben Sie das Ergebnis aus run zurück.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
value |
BranchValue<O> |
Der Wert des Ausgangs. |
values? |
OutputValues<O> |
Weitere Rückgaben. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“ScriptResult<O>
Das Ergebnis für run.
result()
Abschnitt betitelt „result()“result(values): ScriptResult<O>;Gibt Rückgaben ohne Ausgang zurück; der Schritt geht dann zu seinem Standard-Nachfolger.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
values |
OutputValues<O> |
Die Rückgaben. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“ScriptResult<O>
Das Ergebnis für run.
HookContexts
Abschnitt betitelt „HookContexts“Die Hooks: wo ein Skript-Schritt im Workflow steht, und welches ctx er bekommt.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter | Standardtyp |
|---|---|
O extends Outputs |
Outputs |
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Typ | Beschreibung |
|---|---|---|
onDocumentArrived |
EffectContext<O> |
Sobald ein Dokument eingegangen und erkannt ist, vor dem ersten Schritt. Alle Wirkungen. |
beforeApproval |
ScriptContext |
Vor einer Freigabe oder Prüfung, nur lesend: die einzige Wirkung ist ScriptContext.hint an dieser Aufgabe. |
onApproved |
EffectContext<O> |
Nach einer Freigabe. Alle Wirkungen; Felder nur, wenn sie leer und deklariert sind. |
onRejected |
EffectContext<O> |
Nach einer Zurückweisung. Alle Wirkungen. |
onTimer |
EffectContext<O> |
Nach einer Frist oder einem Zeitplan. Alle Wirkungen; nach einer Freigabe Felder nur, wenn sie leer und deklariert sind. |
EffectScriptDefinition
Abschnitt betitelt „EffectScriptDefinition“Ein Skript an einem Hook mit Wirkungen.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
O extends Outputs |
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ | Beschreibung |
|---|---|---|---|
hook |
readonly |
EffectHook |
Der Hook; er muss der des Schritts sein. |
outputs? |
readonly |
O |
Die Rückgaben des Skripts. |
Methoden
Abschnitt betitelt „Methoden“run(ctx): MaybePromise<void | ScriptResult<O>>;Der Code des Skripts. Ohne Rückgabe geht der Schritt zu seinem Standard-Nachfolger.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
ctx |
EffectContext<O> |
Dokument, Instanz und Wirkungen. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“MaybePromise<void | ScriptResult<O>>
ReadOnlyScriptDefinition
Abschnitt betitelt „ReadOnlyScriptDefinition“Ein Skript an beforeApproval: nur lesend, ohne Rückgaben.
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ | Beschreibung |
|---|---|---|---|
hook |
readonly |
"beforeApproval" |
Der Hook. |
Methoden
Abschnitt betitelt „Methoden“run(ctx): MaybePromise<void>;Der Code des Skripts.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
ctx |
ScriptContext |
Dokument und Instanz, nur lesend, und ctx.hint. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“MaybePromise<void>
Ein definiertes Skript, der Default-Export der Datei. Nur das SDK erzeugt es.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
O extends Outputs |
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ |
|---|---|---|
[scriptBrand] |
readonly |
O |
MoneyHelpers
Abschnitt betitelt „MoneyHelpers“Geldbeträge in deutscher Schreibweise.
Methoden
Abschnitt betitelt „Methoden“format()
Abschnitt betitelt „format()“format(value): string;Formatiert einen Betrag: 1249.5 → '1.249,50 €'.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
value |
number |
Der Betrag in Euro. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“string
parse()
Abschnitt betitelt „parse()“parse(text): Money | null;Liest einen Betrag in deutscher Schreibweise, mit oder ohne Tausenderpunkte und €: '1.249,50 €' → 1249.5.
null, wenn der Text kein Betrag ist.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
text |
string |
Der Text. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“Money | null
round()
Abschnitt betitelt „round()“round(value): Money;Rundet kaufmännisch auf Cent: 12.345 → 12.35.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
value |
number |
Der Betrag. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“DateHelpers
Abschnitt betitelt „DateHelpers“Kalendertage (PlainDate) in deutscher Schreibweise.
Methoden
Abschnitt betitelt „Methoden“format()
Abschnitt betitelt „format()“format(value): string;Formatiert einen Tag als TT.MM.JJJJ: '2026-10-14' → '14.10.2026'. Ein Date gilt in Europe/Berlin.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
value |
PlainDate | Date |
Der Tag. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“string
parse()
Abschnitt betitelt „parse()“parse(text): PlainDate | null;Liest einen Tag als TT.MM.JJJJ oder JJJJ-MM-TT. null, wenn der Text kein gültiger Tag ist.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
text |
string |
Der Text. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“PlainDate | null
addDays()
Abschnitt betitelt „addDays()“addDays(value, days): PlainDate;Addiert Kalendertage; negative ziehen ab.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
value |
PlainDate |
Der Tag. |
days |
number |
Die Anzahl der Tage. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“daysBetween()
Abschnitt betitelt „daysBetween()“daysBetween(from, to): number;Die Kalendertage von from bis to, negativ, wenn to früher ist.
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
from |
PlainDate |
Der erste Tag. |
to |
PlainDate |
Der zweite Tag. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“number
DataSourceRegistry
Abschnitt betitelt „DataSourceRegistry“Die Datenquellen des Arbeitsbereichs: Schlüssel → { params; response }, also die Query-Parameter, die die Quelle
annimmt, und der JSON-Typ ihrer Antwort. Leer im SDK; tenant.d.ts ergänzt es. Ohne Einträge ist DataSourceKey
string, die Parameter sind beliebig und die Antwort ist unknown.
Beispiel
Abschnitt betitelt „Beispiel“declare module '@acriva/workflow-sdk' { interface DataSourceRegistry { erp: { params: { lieferantId: string }; response: { kostenstelle: string; kreditor: string } }; }}DataTableRegistry
Abschnitt betitelt „DataTableRegistry“Die Datentabellen des Arbeitsbereichs: Schlüssel → { key; row }, also der Typ des Schlüssels der Tabelle und ihre
Zeile (Spaltenschlüssel → Typ). Leer im SDK; tenant.d.ts ergänzt es. Ohne Einträge ist DataTableKey string.
Beispiel
Abschnitt betitelt „Beispiel“declare module '@acriva/workflow-sdk' { interface DataTableRegistry { lieferanten: { key: string; row: { lieferantId: string; name: string; kostenstelle: string } }; }}SourceRequest
Abschnitt betitelt „SourceRequest“Eine Anfrage an eine Datenquelle für Sources.get.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
K extends DataSourceKey |
Eigenschaften
Abschnitt betitelt „Eigenschaften“| Eigenschaft | Modifikator | Typ | Beschreibung |
|---|---|---|---|
path? |
readonly |
string |
Ein Pfad relativ zur Basis-URL der Quelle ('lieferanten/4711'). Der Broker kodiert jedes Segment, sodass .., //, @ und ein Backslash den Basispfad nicht verlassen und den Host nicht ändern. |
query? |
readonly |
SourceParams<K> |
Die Query-Parameter; der Broker kodiert sie. |
Sources
Abschnitt betitelt „Sources“ctx.sources: liest externe Daten über den Broker der Plattform. Das Skript selbst hat kein Netz.
Hinweise
Abschnitt betitelt „Hinweise“Ein Schritt muss die Quelle unter seinen Eingaben deklarieren (eine Eingabe der Art Source), sonst antwortet der
Aufruf 'not-declared'. Höchstens 10 Aufrufe und 30 s Broker-Zeit je Lauf, danach 'limit'; ein Treffer im Cache zählt
als Aufruf. Nur GET.
Methoden
Abschnitt betitelt „Methoden“get<K>(key, request?): Promise<SourceResult<SourceResponse<K>>>;Ruft die Datenquelle key auf.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
K extends DataSourceKey |
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
key |
K |
Der Schlüssel der Quelle. |
request? |
SourceRequest<K> |
Pfad und Query-Parameter. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“Promise<SourceResult<SourceResponse<K>>>
Die Daten oder der Grund, warum es keine gibt.
ctx.tables: liest Zeilen der Datentabellen des Arbeitsbereichs über den Broker der Plattform.
Hinweise
Abschnitt betitelt „Hinweise“Ein Schritt muss die Tabelle unter seinen Eingaben deklarieren (eine Eingabe der Art Table); die Prüfung meldet eine nicht
deklarierte Tabelle schon vor dem Veröffentlichen. Höchstens 50 Abfragen je Lauf, lookup und query zusammen. Anders als
bei Sources ist eine Ablehnung hier kein Ergebnis: Eine nicht deklarierte Tabelle (table-not-declared) oder die
51. Abfrage (limit-table-lookups) beendet den Lauf mit diesem Code, wie ein überschrittenes Limit, und ein catch hält
ihn nicht auf. Ein stilles null sähe sonst aus wie „nicht in der Liste“ und könnte ein Dokument falsch weiterleiten (etwa
bei einer Sperrliste).
Methoden
Abschnitt betitelt „Methoden“lookup()
Abschnitt betitelt „lookup()“lookup<K>(table, key): Promise<TableRow<K> | null>;Die Zeile mit dem Schlüssel key, oder null, wenn es keine gibt.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
K extends DataTableKey |
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
table |
K |
Der Schlüssel der Tabelle. |
key |
TableKeyOf<K> |
Der Schlüssel der Zeile; verglichen wird seine kanonische Textform. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“Promise<TableRow<K> | null>
Die Zeile oder null.
query()
Abschnitt betitelt „query()“query<K>(table, filter): Promise<readonly TableRow<K>[]>;Die Zeilen, deren Spalten dem Filter gleichen: höchstens 100, nach Schlüssel sortiert, sodass die Grenze jedes Mal dieselben Zeilen liefert.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
K extends DataTableKey |
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
table |
K |
Der Schlüssel der Tabelle. |
filter |
TableFilter<K> |
Gleichheit auf 1 bis 3 Spalten. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“Promise<readonly TableRow<K>[]>
Die Zeilen, vielleicht keine.
Typenaliasse
Abschnitt betitelt „Typenaliasse“type Money = number & object;Ein Geldbetrag in Euro, als Zahl mit höchstens zwei Nachkommastellen. Er lässt sich wie eine Zahl vergleichen und
rechnen (betrag > 500); das Ergebnis einer Rechnung ist eine number.
Typendeklaration
Abschnitt betitelt „Typendeklaration“[moneyBrand]
Abschnitt betitelt „[moneyBrand]“readonly [moneyBrand]: "EUR";PlainDate
Abschnitt betitelt „PlainDate“type PlainDate = string & object;Ein Kalendertag ohne Uhrzeit und Zeitzone, als ISO-Text JJJJ-MM-TT ('2026-10-14'). Zwei Tage lassen sich mit < und
> vergleichen. Erzeugen Sie einen mit date oder ScriptContext.today.
Typendeklaration
Abschnitt betitelt „Typendeklaration“[plainDateBrand]
Abschnitt betitelt „[plainDateBrand]“readonly [plainDateBrand]: "PlainDate";FieldsOf
Abschnitt betitelt „FieldsOf“type FieldsOf<T> = T extends keyof DocumentTypeFieldsRegistry ? DocumentTypeFieldsRegistry[T] : object;Die Felder des Dokumenttyps T, Schlüssel → Typ; {} für einen Typ ohne Felder. Der Editor und die Prüfung leiten
daraus DocumentFields eines Schritts ab (interface DocumentFields extends Pick<FieldsOf<'…'>, '…'> {}).
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
T extends DocumentTypeKey |
SettableFieldsOf
Abschnitt betitelt „SettableFieldsOf“type SettableFieldsOf<T> = Pick<FieldsOf<T>, Extract<T extends keyof SettableFieldKeysRegistry ? SettableFieldKeysRegistry[T] : never, keyof FieldsOf<T>>>;Die Felder des Dokumenttyps T, die ein Skript setzen darf, Schlüssel → Typ; Grundlage von SettableFields.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
T extends DocumentTypeKey |
RegistryKey
Abschnitt betitelt „RegistryKey“type RegistryKey<R> = [keyof R] extends [never] ? string : Extract<keyof R, string>;Die Schlüssel einer Registry, oder string, solange sie leer ist.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
R |
DocumentTypeKey
Abschnitt betitelt „DocumentTypeKey“type DocumentTypeKey = RegistryKey<DocumentTypeRegistry>;Der Schlüssel eines Dokumenttyps.
FileTypeKey
Abschnitt betitelt „FileTypeKey“type FileTypeKey = RegistryKey<FileTypeRegistry>;Der Schlüssel eines Akten-Typs.
TagName
Abschnitt betitelt „TagName“type TagName = RegistryKey<TagRegistry>;Der Name eines Schlagworts.
RoleKey
Abschnitt betitelt „RoleKey“type RoleKey = RegistryKey<RoleRegistry>;Der Schlüssel einer Rolle.
CostCenterNumber
Abschnitt betitelt „CostCenterNumber“type CostCenterNumber = RegistryKey<CostCenterRegistry>;Die Nummer einer Kostenstelle.
FieldInput
Abschnitt betitelt „FieldInput“type FieldInput<T> = T extends Money ? number : T extends Reference ? Pick<Reference, "id"> : T;Der Wert, den EffectContext.setField für ein Feld des Typs T annimmt: eine Zahl für Money, die ID
für Reference, sonst T.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
T |
TaskOutcome
Abschnitt betitelt „TaskOutcome“type TaskOutcome = "Approved" | "Rejected" | "Returned" | "Done";Das Ergebnis einer erledigten Aufgabe. Die Union kann in 1.x neue Werte bekommen.
OutputType
Abschnitt betitelt „OutputType“type OutputType = | readonly [string, ...string[]] | "text" | "number" | "money" | "date" | "boolean" | "reference";Der Typ einer Rückgabe in outputs: eine Liste fester Werte (eine Auswahl, nach der der Schritt verzweigen kann) oder
der Name eines Typs.
Outputs
Abschnitt betitelt „Outputs“type Outputs = object;Die Rückgaben eines Skripts: Schlüssel (camelCase, höchstens 40 Zeichen) → OutputType. Spätere Bedingungen lesen sie; die Werte einer Auswahl sind die Ausgänge des Schritts.
Indexsignatur
Abschnitt betitelt „Indexsignatur“[key: string]: OutputTypeOutputValue
Abschnitt betitelt „OutputValue“type OutputValue<T> = T extends readonly string[] ? T[number] : T extends "text" ? string : T extends "number" | "money" ? number : T extends "date" ? PlainDate : T extends "boolean" ? boolean : T extends "reference" ? Pick<Reference, "id"> : never;Der Wert einer Rückgabe des Typs T.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
T extends OutputType |
BranchValue
Abschnitt betitelt „BranchValue“type BranchValue<O> = { [K in keyof O]: O[K] extends readonly string[] ? O[K][number] : never }[keyof O];Die Werte, nach denen ein Skript verzweigen kann: alle festen Werte seiner Auswahl-Rückgaben.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
O extends Outputs |
OutputValues
Abschnitt betitelt „OutputValues“type OutputValues<O> = { readonly [K in keyof O]?: OutputValue<O[K]> | null };Rückgaben mit ihren Werten; jede ist optional, null heißt „kein Wert“.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
O extends Outputs |
Recipient
Abschnitt betitelt „Recipient“type Recipient = | { member: string; role?: never;} | { role: RoleKey; member?: never;};Ein Empfänger von EffectContext.notify: ein Mitglied des Arbeitsbereichs per E-Mail-Adresse oder eine Rolle per Schlüssel, nie eine freie Adresse.
type Hook = keyof HookContexts;Der Name eines Hooks. Die Union kann in 1.x neue Hooks bekommen (onExport kommt später).
EffectHook
Abschnitt betitelt „EffectHook“type EffectHook = Exclude<Hook, "beforeApproval">;Die Hooks mit Wirkungen.
MaybePromise
Abschnitt betitelt „MaybePromise“type MaybePromise<T> = T | Promise<T>;Ein Wert oder ein Promise darauf.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
T |
ScriptDefinition
Abschnitt betitelt „ScriptDefinition“type ScriptDefinition<O> = | EffectScriptDefinition<O> | ReadOnlyScriptDefinition;Die Beschreibung eines Skripts für defineScript; hook entscheidet, welches ctx run bekommt.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
O extends Outputs |
DataSourceKey
Abschnitt betitelt „DataSourceKey“type DataSourceKey = RegistryKey<DataSourceRegistry>;Der Schlüssel einer Datenquelle.
DataTableKey
Abschnitt betitelt „DataTableKey“type DataTableKey = RegistryKey<DataTableRegistry>;Der Schlüssel einer Datentabelle.
SourceParamValue
Abschnitt betitelt „SourceParamValue“type SourceParamValue = string | number | boolean;Der Wert eines Query-Parameters; der Broker kodiert ihn.
SourceParams
Abschnitt betitelt „SourceParams“type SourceParams<K> = K extends keyof DataSourceRegistry ? DataSourceRegistry[K] extends object ? { readonly [N in keyof P]: P[N] & SourceParamValue } : never : object;Die Query-Parameter der Datenquelle K, aus DataSourceRegistry.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
K extends DataSourceKey |
SourceResponse
Abschnitt betitelt „SourceResponse“type SourceResponse<K> = K extends keyof DataSourceRegistry ? DataSourceRegistry[K] extends object ? R : unknown : unknown;Der JSON-Typ der Antwort der Datenquelle K, aus DataSourceRegistry; unknown ohne Eintrag.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
K extends DataSourceKey |
SourceError
Abschnitt betitelt „SourceError“type SourceError = | "data-source-blocked" | "timeout" | "too-large" | "invalid-response" | "http-error" | "not-declared" | "confidential" | "limit";Warum ein Aufruf einer Datenquelle keine Daten liefert. Die Union kann in 1.x neue Werte bekommen.
'data-source-blocked': Der Schutz vor internen Adressen hat die Adresse abgelehnt.'timeout': Die Quelle hat nicht innerhalb ihres Timeouts geantwortet.'too-large': Die Antwort ist größer als 1 MiB.'invalid-response': Die Antwort ist kein JSON, oder sie erfüllt das Schema der Quelle nicht.'http-error': Die Quelle hat mit einem Status außerhalb von 2xx geantwortet (siehestatus).'not-declared': Der Schritt deklariert die Quelle nicht unter seinen Eingaben.'confidential': Das Dokument ist vertraulich, und die Quelle lässt vertrauliche Dokumente nicht zu.'limit': Der Lauf hat seine 10 Aufrufe (oder 30 s Broker-Zeit) verbraucht.
SourceResult
Abschnitt betitelt „SourceResult“type SourceResult<T> = | { ok: true; status: number; data: T; cached: boolean;} | { ok: false; error: SourceError; status?: number;};Das Ergebnis von Sources.get: Daten bei ok: true, sonst ein SourceError. Eine Ablehnung ist ein
Ergebnis, nie eine Ausnahme; prüfen Sie ok, bevor Sie data lesen.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
T |
Union-Mitglieder
Abschnitt betitelt „Union-Mitglieder“Typenliteral
Abschnitt betitelt „Typenliteral“{ ok: true; status: number; data: T; cached: boolean;}readonly ok: true;Die Quelle hat geantwortet.
readonly status: number;Der HTTP-Status (2xx).
readonly data: T;Die Antwort als JSON.
readonly cached: boolean;true, wenn die Antwort aus dem Cache der Quelle kommt; auch das zählt als Aufruf.
Typenliteral
Abschnitt betitelt „Typenliteral“{ ok: false; error: SourceError; status?: number;}readonly ok: false;Der Aufruf hat keine Daten geliefert.
readonly error: SourceError;Der Grund.
status?
Abschnitt betitelt „status?“readonly optional status?: number;Der HTTP-Status, wenn die Quelle geantwortet hat ('http-error').
TableCellValue
Abschnitt betitelt „TableCellValue“type TableCellValue = string | number | boolean | null;Der Wert einer Zelle einer Datentabelle ohne Eintrag in DataTableRegistry: Text, Zahl, Betrag, Datum (ISO-Text),
Wahrheitswert oder null.
TableRow
Abschnitt betitelt „TableRow“type TableRow<K> = K extends keyof DataTableRegistry ? DataTableRegistry[K] extends object ? Readonly<R> : never : object;Eine Zeile der Datentabelle K, Spaltenschlüssel → Wert, die Schlüsselspalte eingeschlossen.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
K extends DataTableKey |
TableKeyOf
Abschnitt betitelt „TableKeyOf“type TableKeyOf<K> = K extends keyof DataTableRegistry ? DataTableRegistry[K] extends object ? Key : never : string | number;Der Typ des Schlüssels der Datentabelle K. Der Broker vergleicht die kanonische Textform: Text getrimmt und
Unicode-normalisiert (NFC), eine Zahl als kanonische Dezimalzahl, ein Datum als ISO-Text ('2026-10-14').
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
K extends DataTableKey |
TableFilter
Abschnitt betitelt „TableFilter“type TableFilter<K> = Partial<TableRow<K>>;Ein Filter für Tables.query: Gleichheit auf höchstens 3 Spalten der Zeile. Mehr Spalten oder keine lehnt der Broker ab.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter |
|---|
K extends DataTableKey |
Variablen
Abschnitt betitelt „Variablen“moneyBrand
Abschnitt betitelt „moneyBrand“const moneyBrand: unique symbol;plainDateBrand
Abschnitt betitelt „plainDateBrand“const plainDateBrand: unique symbol;resultBrand
Abschnitt betitelt „resultBrand“const resultBrand: unique symbol;scriptBrand
Abschnitt betitelt „scriptBrand“const scriptBrand: unique symbol;const money: MoneyHelpers;Die Hilfen für Geldbeträge.
const date: DateHelpers;Die Hilfen für Kalendertage.
Funktionen
Abschnitt betitelt „Funktionen“defineScript()
Abschnitt betitelt „defineScript()“function defineScript<O>(script): Script<O>;Definiert ein Skript. Jede Skriptdatei exportiert genau ein defineScript(…) als Default-Export und importiert nichts
außer '@acriva/workflow-sdk'.
Typenparameter
Abschnitt betitelt „Typenparameter“| Typenparameter | Standardtyp |
|---|---|
O extends Outputs |
object |
Parameter
Abschnitt betitelt „Parameter“| Parameter | Typ | Beschreibung |
|---|---|---|
script |
ScriptDefinition<O> |
Hook, Rückgaben und Code. |
Rückgabewert
Abschnitt betitelt „Rückgabewert“Script<O>
Das Skript für den Default-Export.
Beispiel
Abschnitt betitelt „Beispiel“import { defineScript } from '@acriva/workflow-sdk';
export default defineScript({ hook: 'onDocumentArrived', outputs: { weg: ['gf', 'kostenstelle'] }, async run(ctx) { return ctx.branch(ctx.document.fields.bruttobetrag > 500 ? 'gf' : 'kostenstelle'); },});