Dit document is vertaald door AI. Raadpleeg de Engelse versie voor nauwkeurige informatie.
Het contextsysteem van de NocoBase flow-engine is verdeeld in drie lagen, die elk overeenkomen met een ander bereik. Een correct gebruik maakt flexibele deling en isolatie van services, configuraties en gegevens mogelijk, wat de onderhoudbaarheid en uitbreidbaarheid van de business verbetert.
mode: 'runtime' | 'settings', die respectievelijk overeenkomen met de runtime-status en de configuratiestatus.Alle FlowEngineContext (globale context), FlowModelContext (modelcontext), FlowRuntimeContext (flow-runtimecontext), enz., zijn subklassen of instanties van FlowContext.
FlowModelContext heeft via een delegatiemechanisme (delegate) toegang tot de eigenschappen en methoden van FlowEngineContext, waardoor globale mogelijkheden worden gedeeld.FlowModelContext van een submodel heeft via een delegatiemechanisme (delegate) toegang tot de context van het bovenliggende model (synchrone relatie), ondersteunt overschrijven met dezelfde naam.FlowRuntimeContext heeft altijd via een delegatiemechanisme (delegate) toegang tot de bijbehorende FlowModelContext, maar geeft dit niet naar boven door.FlowRuntimeContext ondersteunt twee modi, onderscheiden door de parameter mode:
mode: 'runtime' (runtime-status): Wordt gebruikt voor de daadwerkelijke uitvoeringsfase van de flow, eigenschappen en methoden retourneren echte gegevens. Bijvoorbeeld:
mode: 'settings' (configuratiestatus): Wordt gebruikt voor de ontwerpfase en configuratiefase van de flow, toegang tot eigenschappen retourneert een variabele sjabloonstring, wat de selectie van expressies en variabelen vergemakkelijkt. Bijvoorbeeld:
Dit ontwerp met twee modi garandeert zowel de beschikbaarheid van gegevens tijdens runtime als het gemak van variabelereferenties en het genereren van expressies tijdens de configuratie, wat de flexibiliteit en het gebruiksgemak van de flow-engine verbetert.
In bepaalde scenario's (zoals RunJS-codebewerking in JS*Model, AI-coding) moet de "aanroepende partij" het volgende begrijpen zonder de code uit te voeren:
ctx (API-documentatie, parameters, voorbeelden, documentatielinks, enz.)await ctx.getApiInfos(options?) (Statische API-informatie)await ctx.getVarInfos(options?) (Informatie over variabelestructuur)defineProperty(...).meta (inclusief meta-factory)path-bijsnijden en maxDepth-dieptecontroleVeelgebruikte parameters:
maxDepth: maximaal uitklapniveau (standaard 3)path: string | string[]: bijsnijden, voert alleen de subboom van het opgegeven pad uitawait ctx.getEnvInfos() (Momentopname van runtime-omgeving)Knooppuntstructuur (vereenvoudigd):