NocoBase 流引擎的上下文体系分为三层,分别对应不同的作用域,合理使用可实现服务、配置、数据的灵活共享与隔离,提升业务可维护性和可扩展性。
mode: 'runtime' | 'settings' 两种模式,分别对应运行态和配置态。所有的 FlowEngineContext(全局上下文)、FlowModelContext(模型上下文)、FlowRuntimeContext(流运行时上下文)等,都是 FlowContext 的子类或实例。
FlowModelContext 通过代理(delegate)机制可访问 FlowEngineContext 的属性和方法,实现全局能力共享。FlowModelContext 通过代理(delegate)机制可访问父模型的上下文(同步关系),支持同名覆盖。FlowRuntimeContext 总是通过代理(delegate)机制访问其对应的 FlowModelContext,但不会向上回传。FlowRuntimeContext 支持两种模式,通过 mode 参数区分:
mode: 'runtime'(运行态):用于流实际执行阶段,属性和方法返回真实数据。例如:
mode: 'settings'(配置态):用于流设计和配置阶段,属性访问返回变量模板字符串,便于表达式和变量选择。例如:
这种双模式设计,既保证了运行时的数据可用性,也方便了配置时的变量引用和表达式生成,提升了流引擎的灵活性和易用性。
在某些场景下(例如 JS*Model 的 RunJS 代码编辑、AI coding),需要让“调用方”在不执行代码的前提下了解:
ctx 下有哪些静态能力(API 文档、参数、示例、文档链接等)await ctx.getApiInfos(options?)(静态 API 信息)await ctx.getVarInfos(options?)(变量结构信息)defineProperty(...).meta(含 meta factory)构建变量结构path 裁剪与 maxDepth 深度控制常用参数:
maxDepth:最大展开层级(默认 3)path: string | string[]:剪裁,只输出指定路径子树await ctx.getEnvInfos()(运行时环境快照)节点结构(简化):