Este documento foi traduzido por IA. Para informações precisas, consulte a versão em inglês.
O sistema de contexto do mecanismo de fluxo (FlowEngine) do NocoBase é dividido em três camadas, correspondendo a diferentes escopos. O uso adequado permite o compartilhamento e isolamento flexível de serviços, configurações e dados, melhorando a manutenibilidade e a escalabilidade do negócio.
mode: 'runtime' | 'settings', correspondendo respectivamente ao estado de execução e ao estado de configuração.Todos os FlowEngineContext (Contexto Global), FlowModelContext (Contexto do Modelo), FlowRuntimeContext (Contexto de Execução do Fluxo), etc., são subclasses ou instâncias de FlowContext.
FlowModelContext acessa as propriedades e métodos do FlowEngineContext através de um mecanismo de delegação (delegate), realizando o compartilhamento de capacidades globais.FlowModelContext de submodelos acessa o contexto do modelo pai através de um mecanismo de delegação (relação síncrona), suportando sobrescrita de mesmo nome.FlowRuntimeContext sempre acessa seu FlowModelContext correspondente através de um mecanismo de delegação, mas não propaga de volta para cima.O FlowRuntimeContext suporta dois modos, diferenciados pelo parâmetro mode:
mode: 'runtime' (Estado de execução): Usado na fase de execução real do fluxo, onde propriedades e métodos retornam dados reais. Exemplo:
mode: 'settings' (Estado de configuração): Usado na fase de design e configuração do fluxo, onde o acesso a propriedades retorna strings de template de variáveis, facilitando expressões e seleção de variáveis. Exemplo:
Este design de modo duplo garante a disponibilidade de dados em tempo de execução e facilita a referência de variáveis e a geração de expressões na configuração, aumentando a flexibilidade e facilidade de uso do mecanismo de fluxo.
Em certos cenários (como edição de código RunJS no JS*Model, AI coding), é necessário permitir que o "chamador" entenda, sem executar o código:
ctx atual (documentação de API, parâmetros, exemplos, links de documentação, etc.)await ctx.getApiInfos(options?) (Informações estáticas de API)await ctx.getVarInfos(options?) (Informações de estrutura de variáveis)defineProperty(...).meta (incluindo meta factory)path e controle de profundidade maxDepthParâmetros comuns:
maxDepth: Nível máximo de expansão (padrão 3)path: string | string[]: Recorte, gera apenas a subárvore do caminho especificadoawait ctx.getEnvInfos() (Snapshot do ambiente de execução)Estrutura do nó (simplificada):