Dieses Dokument wurde von KI übersetzt. Für genaue Informationen lesen Sie bitte die englische Version.
Das Kontextsystem der NocoBase Workflow-Engine ist in drei Ebenen unterteilt, die jeweils unterschiedlichen Geltungsbereichen entsprechen. Die angemessene Verwendung ermöglicht die flexible gemeinsame Nutzung und Isolierung von Diensten, Konfigurationen und Daten, was die Wartbarkeit und Erweiterbarkeit des Geschäfts verbessert.
mode: 'runtime' | 'settings', die jeweils dem Laufzeitstatus und dem Konfigurationsstatus entsprechen.Alle FlowEngineContext (Globaler Kontext), FlowModelContext (Modellkontext), FlowRuntimeContext (Workflow-Laufzeitkontext) usw. sind Unterklassen oder Instanzen von FlowContext.
FlowModelContext kann über einen Proxy-Mechanismus (delegate) auf die Eigenschaften und Methoden von FlowEngineContext zugreifen, um die gemeinsame Nutzung globaler Fähigkeiten zu realisieren.FlowModelContext eines Untermodells kann über einen Proxy-Mechanismus (delegate) auf den Kontext des Elternmodells zugreifen (synchrone Beziehung) und unterstützt das Überschreiben bei Namensgleichheit.FlowRuntimeContext greift immer über einen Proxy-Mechanismus (delegate) auf seinen entsprechenden FlowModelContext zu, gibt jedoch keine Informationen nach oben zurück.FlowRuntimeContext unterstützt zwei Modi, die durch den Parameter mode unterschieden werden:
mode: 'runtime' (Laufzeitstatus): Wird für die tatsächliche Ausführungsphase des Workflows verwendet; Eigenschaften und Methoden geben reale Daten zurück. Beispiel:
mode: 'settings' (Konfigurationsstatus): Wird für die Design- und Konfigurationsphase des Workflows verwendet; der Zugriff auf Eigenschaften gibt Variablen-Template-Strings zurück, was die Auswahl von Ausdrücken und Variablen erleichtert. Beispiel:
Dieses Dual-Modus-Design stellt sowohl die Datenverfügbarkeit zur Laufzeit sicher als auch die einfache Variablenreferenzierung und Ausdrucksgenerierung bei der Konfiguration, was die Flexibilität und Benutzerfreundlichkeit der Workflow-Engine verbessert.
In bestimmten Szenarien (z. B. RunJS-Code-Bearbeitung im JS*Model, AI-Coding) muss der „Aufrufer“ ohne Code-Ausführung Folgendes verstehen:
ctx vorhanden sind (API-Dokumentation, Parameter, Beispiele, Dokumentationslinks usw.).await ctx.getApiInfos(options?) (Statische API-Informationen)await ctx.getVarInfos(options?) (Variablenstruktur-Informationen)defineProperty(...).meta (einschließlich Meta-Factory).path-Zuschneiden und maxDepth-Tiefenkontrolle.Häufig verwendete Parameter:
maxDepth: Maximale Ausklapptiefe (Standard 3).path: string | string[]: Zuschneiden, gibt nur den Teilbaum des angegebenen Pfads aus.await ctx.getEnvInfos() (Snapshot der Laufzeitumgebung)Knotenstruktur (vereinfacht):