# Flow State

Source: https://openflow.run/ja/docs/concepts/flow-state/
Language: ja
Product version: 0.1.0-beta.77

ワークフロー定義を変えずに、明示的に書き込んだ業務データを実行間で保持します。

Flow State は Code が明示的に書き込む業務値を保存します。値はフローと実行元の `draft` または `live` に属します。ドラフトテストと本番実行の状態は分離されます。

## 値の読み書き

```javascript
export default async function (inputs, context) {
  const previous = await context.state.get("lastProcessedId");
  await context.state.set("lastProcessedId", inputs.id);
  return { previous };
}
```

`get` は独立した JSON 値または null を返します。`set(key, null)` は値を削除します。`insert` はキーが存在しない場合のみ書き込み、`delete` はキーを削除し、`list` は並べ替えたキーを返します。

キーは UTF-8 で 1–256 バイト、値は JSON です。容量制限はデプロイ先が定めます。無制限と仮定せず、サービスが報告する上限を確認してください。

## 書き込みのタイミング

書き込みは外部への影響として即座に永続化されます。後続タスクの失敗や実行の取消しでは戻りません。リビジョンの公開、ロールバック、編集でもコピーや初期化はされません。

State はノード結果、変数、実行ログとは別のものです。明示的な業務状態に使い、秘密の保管や、過去の任意の呼び出しへの暗黙の経路には使わないでください。

## 確認と削除

デプロイ先の Flow State 管理インターフェースで、`draft` か `live` を明示的に選択します。Live の状態を消すと、後続の本番実行にすぐ影響します。対象範囲と業務への影響を確認してください。

ランタイム機能は [Code](https://openflow.run/ja/docs/nodes/code/index.md)、正確な制限と管理方法は[技術仕様](https://openflow.run/ja/docs/reference/contracts/index.md)を参照してください。

## 参照元

*   [docs/architecture.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/architecture.md#flow-state)
*   [docs/control/contracts/nodejs-runtime.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/nodejs-runtime.md#flow-state-engine-v10)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#flow-state)
