このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
NocoBase ワークフローエンジンのコンテキスト体系は3つのレイヤーに分かれており、それぞれ異なるスコープに対応しています。これらを適切に使用することで、サービス、設定、データの柔軟な共有と分離を実現し、ビジネスの保守性と拡張性を向上させることができます。
mode: 'runtime' | 'settings' の2つのモードをサポートしており、それぞれ実行状態と設定状態に対応しています。すべての FlowEngineContext(グローバルコンテキスト)、FlowModelContext(モデルコンテキスト)、FlowRuntimeContext(ワークフロー実行時コンテキスト)などは、FlowContext のサブクラスまたはインスタンスです。
FlowModelContext はプロキシ(delegate)メカニズムを通じて FlowEngineContext のプロパティやメソッドにアクセスでき、グローバルな機能の共有を実現します。FlowModelContext はプロキシ(delegate)メカニズムを通じて親モデルのコンテキスト(同期関係)にアクセスでき、同名の上書きをサポートします。FlowRuntimeContext は常にプロキシ(delegate)メカニズムを通じて対応する FlowModelContext にアクセスしますが、上位に書き戻されることはありません。FlowRuntimeContext は2つのモードをサポートしており、mode パラメータで区別されます:
mode: 'runtime'(実行状態):ワークフローの実際の実行フェーズで使用され、プロパティやメソッドは実際のデータを返します。例:
mode: 'settings'(設定状態):ワークフローの設計および設定フェーズで使用され、プロパティへのアクセスは変数のテンプレート文字列を返します。これにより、式や変数の選択が容易になります。例:
このデュアルモード設計は、実行時のデータ可用性を保証するだけでなく、設定時の変数参照や式生成を容易にし、ワークフローエンジンの柔軟性と使いやすさを向上させます。
特定のシナリオ(例:JS*Model の RunJS コード編集、AI コーディング)では、「呼び出し側」がコードを実行せずに以下の情報を把握する必要があります:
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()(実行環境スナップショット)ノード構造(簡略化):