logologo
スタート
マニュアル
開発
プラグイン
API
ホーム
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
スタート
マニュアル
開発
プラグイン
API
ホーム
logologo

概要

FlowEngineとは
FlowEngineとプラグインの関係
クイックスタート
学習ロードマップ

ガイド

FlowModelの登録
FlowModelの作成
FlowModelのレンダリング
FlowModelのイベントフローと設定
FlowModelの永続化
FlowModelのライフサイクル
FlowModelのコンテキスト体系
リアクティブ機構:Observable
FlowModel vs React.Component
RunJSプラグインの拡張ポイント

定義

ModelDefinition
FlowDefinition
EventDefinition
ActionDefinition
StepDefinition
Previous PageFlowModelのライフサイクル
Next Pageリアクティブ機構:Observable
AI翻訳通知

このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。

#コンテキスト体系の概要

NocoBase ワークフローエンジンのコンテキスト体系は3つのレイヤーに分かれており、それぞれ異なるスコープに対応しています。これらを適切に使用することで、サービス、設定、データの柔軟な共有と分離を実現し、ビジネスの保守性と拡張性を向上させることができます。

  • FlowEngineContext(グローバルコンテキスト):グローバルで一意であり、すべてのモデルやワークフローからアクセス可能です。グローバルなサービスや設定の登録などに適しています。
  • FlowModelContext(モデルコンテキスト):モデルツリー内部でコンテキストを共有するために使用されます。子モデルは親モデルのコンテキストを自動的にプロキシ(delegate)し、同名の上書きをサポートします。モデルレベルのロジックとデータの分離に適しています。
  • FlowRuntimeContext(ワークフロー実行時コンテキスト):ワークフローが実行されるたびに作成され、ワークフローの実行サイクル全体を通して存続します。ワークフロー内でのデータ受け渡し、変数保存、実行状態の記録などに適しています。mode: 'runtime' | 'settings' の2つのモードをサポートしており、それぞれ実行状態と設定状態に対応しています。

すべての FlowEngineContext(グローバルコンテキスト)、FlowModelContext(モデルコンテキスト)、FlowRuntimeContext(ワークフロー実行時コンテキスト)などは、FlowContext のサブクラスまたはインスタンスです。


#🗂️ 階層構造図

FlowEngineContext(グローバルコンテキスト)
│
├── FlowModelContext(モデルコンテキスト)
│     ├── 子 FlowModelContext(子モデル)
│     │     ├── FlowRuntimeContext(ワークフロー実行時コンテキスト)
│     │     └── FlowRuntimeContext(ワークフロー実行時コンテキスト)
│     └── FlowRuntimeContext(ワークフロー実行時コンテキスト)
│
├── FlowModelContext(モデルコンテキスト)
│     └── FlowRuntimeContext(ワークフロー実行時コンテキスト)
│
└── FlowModelContext(モデルコンテキスト)
      ├── 子 FlowModelContext(子モデル)
      │     └── FlowRuntimeContext(ワークフロー実行時コンテキスト)
      └── FlowRuntimeContext(ワークフロー実行時コンテキスト)
  • FlowModelContext はプロキシ(delegate)メカニズムを通じて FlowEngineContext のプロパティやメソッドにアクセスでき、グローバルな機能の共有を実現します。
  • 子モデルの FlowModelContext はプロキシ(delegate)メカニズムを通じて親モデルのコンテキスト(同期関係)にアクセスでき、同名の上書きをサポートします。
  • 非同期の親子モデルは、状態の汚染を避けるため、プロキシ(delegate)関係を構築しません。
  • FlowRuntimeContext は常にプロキシ(delegate)メカニズムを通じて対応する FlowModelContext にアクセスしますが、上位に書き戻されることはありません。

#🧭 実行状態と設定状態(mode)

FlowRuntimeContext は2つのモードをサポートしており、mode パラメータで区別されます:

  • mode: 'runtime'(実行状態):ワークフローの実際の実行フェーズで使用され、プロパティやメソッドは実際のデータを返します。例:

    console.log(runtimeCtx.steps.step1.result); // 42
  • mode: 'settings'(設定状態):ワークフローの設計および設定フェーズで使用され、プロパティへのアクセスは変数のテンプレート文字列を返します。これにより、式や変数の選択が容易になります。例:

    console.log(settingsCtx.steps.step1.result); // '{{ ctx.steps.step1.result }}'

このデュアルモード設計は、実行時のデータ可用性を保証するだけでなく、設定時の変数参照や式生成を容易にし、ワークフローエンジンの柔軟性と使いやすさを向上させます。


#🤖 ツール/大規模言語モデル向けのコンテキスト情報

特定のシナリオ(例:JS*Model の RunJS コード編集、AI コーディング)では、「呼び出し側」がコードを実行せずに以下の情報を把握する必要があります:

  • 現在の ctx 下にどのような静的能力があるか(API ドキュメント、パラメータ、例、ドキュメントリンクなど)
  • 現在のインターフェース/実行状態にどのような選択可能な変数があるか(例:「現在のレコード」、「現在のポップアップレコード」などの動的構造)
  • 現在の実行環境の軽量なスナップショット(プロンプト用)

#1) await ctx.getApiInfos(options?)(静的 API 情報)

#2) await ctx.getVarInfos(options?)(変数構造情報)

  • defineProperty(...).meta(meta factory を含む)に基づいて変数構造を構築します。
  • path によるトリミングと maxDepth による深度制御をサポートしています。
  • 必要な場合にのみ下位に展開します。

常用パラメータ:

  • maxDepth:最大展開レベル(デフォルトは 3)
  • path: string | string[]:トリミング。指定されたパスのサブツリーのみを出力します。

#3) await ctx.getEnvInfos()(実行環境スナップショット)

ノード構造(簡略化):

type EnvNode = {
  description?: string;
  getVar?: string; // await ctx.getVar(getVar) で直接使用可能。"ctx." で始まります
  value?: any; // 解析済み/シリアル化可能な静的な値
  properties?: Record<string, EnvNode>;
};