Questo documento è stato tradotto dall'IA. Per informazioni accurate, consultare la versione inglese.
Il sistema di contesto del motore di flusso di NocoBase è diviso in tre livelli, corrispondenti a diversi ambiti di applicazione. Utilizzandoli correttamente, Lei potrà realizzare una condivisione e un isolamento flessibili di servizi, configurazioni e dati, migliorando la manutenibilità e la scalabilità del business.
mode: 'runtime' | 'settings', corrispondenti rispettivamente allo stato di esecuzione e allo stato di configurazione.Tutti i FlowEngineContext (contesto globale), FlowModelContext (contesto del modello), FlowRuntimeContext (contesto di runtime del flusso), ecc., sono sottoclassi o istanze di FlowContext.
FlowModelContext può accedere alle proprietà e ai metodi di FlowEngineContext tramite un meccanismo di delega (delegate), realizzando la condivisione delle capacità globali.FlowModelContext del sottomodello può accedere al contesto del modello padre tramite un meccanismo di delega (delegate) (relazione sincrona), supportando la sovrascrittura con lo stesso nome.FlowRuntimeContext accede sempre al relativo FlowModelContext tramite un meccanismo di delega (delegate), ma non trasmette i dati verso l'alto.FlowRuntimeContext supporta due modalità, distinte dal parametro mode:
mode: 'runtime' (stato di esecuzione): utilizzato nella fase di esecuzione effettiva del flusso, dove proprietà e metodi restituiscono dati reali. Ad esempio:
mode: 'settings' (stato di configurazione): utilizzato nella fase di progettazione e configurazione del flusso, dove l'accesso alle proprietà restituisce stringhe di template delle variabili, facilitando la selezione di espressioni e variabili. Ad esempio:
Questo design a doppia modalità garantisce sia la disponibilità dei dati a runtime, sia la facilità di riferimento alle variabili e di generazione di espressioni in fase di configurazione, migliorando la flessibilità e la facilità d'uso del motore di flusso.
In alcuni scenari (come l'editing del codice RunJS in JS*Model, AI coding), è necessario che il "chiamante" comprenda quanto segue senza eseguire il codice:
ctx corrente (documentazione API, parametri, esempi, link alla documentazione, ecc.)await ctx.getApiInfos(options?) (informazioni API statiche)await ctx.getVarInfos(options?) (informazioni sulla struttura delle variabili)defineProperty(...).meta (incluso meta factory)path e il controllo della profondità maxDepthParametri comuni:
maxDepth: livello massimo di espansione (predefinito 3)path: string | string[]: ritaglio, emette solo il sottoalbero del percorso specificatoawait ctx.getEnvInfos() (snapshot dell'ambiente di runtime)Struttura del nodo (semplificata):