Este documento ha sido traducido por IA. Para información precisa, consulte la versión en inglés.
El sistema de contexto del motor de flujo de NocoBase se divide en tres capas, que corresponden a diferentes ámbitos. El uso adecuado permite lograr un intercambio y aislamiento flexible de servicios, configuraciones y datos, mejorando la mantenibilidad y escalabilidad del negocio.
mode: 'runtime' | 'settings', que corresponden al estado de ejecución y al estado de configuración respectivamente.Todos los FlowEngineContext (contexto global), FlowModelContext (contexto del modelo), FlowRuntimeContext (contexto de ejecución del flujo), etc., son subclases o instancias de FlowContext.
FlowModelContext puede acceder a las propiedades y métodos de FlowEngineContext a través del mecanismo de delegación (delegate), logrando el intercambio de capacidades globales.FlowModelContext de los submodelos puede acceder al contexto del modelo padre (relación síncrona) a través del mecanismo de delegación (delegate), admitiendo la sobrescritura por nombre.FlowRuntimeContext siempre accede a su FlowModelContext correspondiente a través del mecanismo de delegación (delegate), pero no se transmite hacia arriba.FlowRuntimeContext admite dos modos, diferenciados por el parámetro mode:
mode: 'runtime' (Estado de ejecución): Se utiliza en la fase de ejecución real del flujo; las propiedades y métodos devuelven datos reales. Por ejemplo:
mode: 'settings' (Estado de configuración): Se utiliza en la fase de diseño y configuración del flujo; el acceso a las propiedades devuelve cadenas de plantilla de variables, facilitando la selección de expresiones y variables. Por ejemplo:
Este diseño de modo dual garantiza la disponibilidad de los datos en tiempo de ejecución y facilita la referencia de variables y la generación de expresiones durante la configuración, mejorando la flexibilidad y facilidad de uso del motor de flujo.
En ciertos escenarios (como la edición de código RunJS en JS*Model o AI coding), es necesario que el "llamador" comprenda lo siguiente sin ejecutar el código:
ctx actual (documentación de API, parámetros, ejemplos, enlaces de documentación, etc.).await ctx.getApiInfos(options?) (Información estática de la API)await ctx.getVarInfos(options?) (Información de la estructura de variables)defineProperty(...).meta (incluyendo meta factory).path y el control de profundidad con maxDepth.Parámetros comunes:
maxDepth: Nivel máximo de expansión (por defecto 3).path: string | string[]: Recorte, solo genera el subárbol de la ruta especificada.await ctx.getEnvInfos() (Instantánea del entorno de ejecución)Estructura del nodo (simplificada):