> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # Workflow クラス `Workflow` クラスを使用すると、条件分岐とデータ検証を含む複雑な処理シーケンスのステートマシンを作成できます。 ## 使用例 ```typescript import { createWorkflow } from '@mastra/core/workflows' import { z } from 'zod' export const workflow = createWorkflow({ id: 'test-workflow', inputSchema: z.object({ value: z.string(), }), outputSchema: z.object({ value: z.string(), }), }) ``` ## スキーマを定義する Workflow の `inputSchema` と `outputSchema` は、[Standard JSON Schema](https://standardschema.dev/json-schema) をサポートする任意のライブラリで定義できます。[Zod](https://zod.dev/)、[Valibot](https://valibot.dev/)、[ArkType](https://arktype.io/) などのライブラリが該当します。 **Zod**: ```typescript import { createWorkflow, createStep } from "@mastra/core/workflows"; import { z } from "zod"; const step1 = createStep({...}); export const testWorkflow = createWorkflow({ id: "test-workflow", inputSchema: z.object({ message: z.string() }), outputSchema: z.object({ output: z.string() }) }) .then(step1) .commit(); ``` **Valibot**: ```typescript import { createWorkflow, createStep } from "@mastra/core/workflows"; import * as v from "valibot"; import { toStandardJsonSchema } from "@valibot/to-json-schema"; const step1 = createStep({...}); export const testWorkflow = createWorkflow({ id: "test-workflow", inputSchema: toStandardJsonSchema(v.object({ message: v.string() })), outputSchema: toStandardJsonSchema(v.object({ output: v.string() })) }) .then(step1) .commit(); ``` **ArkType**: ```typescript import { createWorkflow, createStep } from "@mastra/core/workflows"; import { type } from "arktype"; const step1 = createStep({...}); export const testWorkflow = createWorkflow({ id: "test-workflow", inputSchema: type({ message: "string" }), outputSchema: type({ output: "string" }) }) .then(step1) .commit(); ``` ## コンストラクターのパラメーター **id** (`string`): Workflow の一意な識別子 **inputSchema** (`StandardJSONSchemaV1`): Workflow の入力構造を定義する Standard JSON Schema **outputSchema** (`StandardJSONSchemaV1`): Workflow の出力構造を定義する Standard JSON Schema **stateSchema** (`StandardJSONSchemaV1`): Workflow state の任意の Standard JSON Schema。Mastra の state system を使用すると自動的に挿入されます。指定しない場合、型は 'any' になります。 **requestContextSchema** (`StandardJSONSchemaV1`): Request Context の値を検証する Standard JSON Schema。指定すると run.start() の開始時に context が検証され、検証に失敗した場合はエラーがスローされます。 **schedule** (`WorkflowScheduleConfig | WorkflowScheduleConfig[]`): Workflow の任意の cron スケジュール。単一の設定、または複数の頻度で起動するための設定配列を受け取ります。設定すると、Workflow は evented execution engine に自動的に昇格します。使用方法については、スケジュールされた Workflow のガイドを参照してください。 **schedule.id** (`string`): スケジュールの安定した識別子。スケジュールの配列を渡す場合は必須です。単一のスケジュールオブジェクトを渡す場合、デフォルトは Workflow ID です。 **schedule.cron** (`string`): 5、6、または 7 パートの cron 式。Workflow の構築時に検証されます。 **schedule.timezone** (`string`): IANA タイムゾーン(例: "America/New\_York")。デフォルトはホストのローカルタイムゾーンです。起動時刻がサーバーのロケールに左右されないよう、本番環境では明示的に設定してください。 **schedule.inputData** (`TInput`): 起動のたびに Workflow の入力として渡されるペイロード。 **schedule.initialState** (`TState`): Run の初期 state。 **schedule.requestContext** (`Record`): Run に付加される Request Context。 **schedule.metadata** (`Record`): スケジュール行とともに永続化される任意の metadata。 **options** (`WorkflowOptions`): Workflow の任意のオプション **options.tracingPolicy** (`TracingPolicy`): Workflow の任意の tracing policy **options.validateInputs** (`boolean`): Workflow の入力を検証するかどうかを指定する任意のフラグ。Workflow またはステップの input/resume data にある zodSchema のデフォルト値も適用します。start/resume 時に input/resume data の検証が失敗すると、Workflow は開始/再開せず、代わりにエラーをスローします。ステップの実行時に入力データの検証が失敗すると、そのステップが失敗し、Workflow も失敗してエラーが返されます。 **options.shouldPersistSnapshot** (`(params: { stepResults: Record>; workflowStatus: WorkflowRunStatus }) => boolean`): Workflow のスナップショットを永続化するかどうかを決定する任意のフラグ **options.pruneSnapshot** (`(params: { snapshot: WorkflowRunState; workflowStatus: WorkflowRunStatus }) => WorkflowRunState`): Workflow のスナップショットを永続化する直前に変換する任意のフック。JSON にシリアライズ可能なデータを返し、Workflow の再開に必要なすべての情報(中断されたステップの suspendPayloads、suspendedPaths、executionPath など)を保持する必要があります。Agent Run ではスナップショットを最小限に保つため内部的に使用されます。ユーザーの Workflow では、デフォルトで完全なスナップショットが永続化されます。 **options.onFinish** (`(result: WorkflowFinishCallbackResult) => void | Promise`): Workflow がいずれかのステータス(success、failed、suspended、tripwire)で完了したときに呼び出されるコールバック。ステータス、出力、エラー、ステップ結果を含む Workflow の結果を受け取ります。このコールバック内でスローされたエラーは捕捉されてログに記録され、伝播しません。 **options.onFinish.status** (`WorkflowRunStatus`): Workflow のステータス: 'success'、'failed'、'suspended'、または 'tripwire' **options.onFinish.result** (`any`): Workflow の出力(ステータスが 'success' の場合) **options.onFinish.error** (`SerializedError`): エラーの詳細(ステータスが 'failed' の場合) **options.onFinish.steps** (`Record`): 各ステップのステータスと出力を含む個別のステップ結果 **options.onFinish.tripwire** (`StepTripwireInfo`): Tripwire の情報(ステータスが 'tripwire' の場合) **options.onFinish.runId** (`string`): この Workflow Run の一意な識別子 **options.onFinish.workflowId** (`string`): Workflow の識別子 **options.onFinish.resourceId** (`string`): 任意のリソース識別子(Run の作成時に指定した場合) **options.onFinish.getInitData** (`() => any`): Workflow に渡された初期入力データを返す関数 **options.onFinish.mastra** (`Mastra`): Mastra インスタンス(Workflow が Mastra に登録されている場合) **options.onFinish.requestContext** (`RequestContext`): リクエストスコープの context データ **options.onFinish.logger** (`IMastraLogger`): Workflow の logger インスタンス **options.onFinish.state** (`Record`): Workflow の現在の state オブジェクト **options.onError** (`(errorInfo: WorkflowErrorCallbackInfo) => void | Promise`): Workflow が失敗した場合(failed または tripwire ステータス)にのみ呼び出されるコールバック。エラーの詳細とステップ結果を受け取ります。このコールバック内でスローされたエラーは捕捉されてログに記録され、伝播しません。 **options.onError.status** (`'failed' | 'tripwire'`): Workflow のステータス('failed' または 'tripwire') **options.onError.error** (`SerializedError`): エラーの詳細 **options.onError.steps** (`Record`): 各ステップのステータスと出力を含む個別のステップ結果 **options.onError.tripwire** (`StepTripwireInfo`): Tripwire の情報(ステータスが 'tripwire' の場合) **options.onError.runId** (`string`): この Workflow Run の一意な識別子 **options.onError.workflowId** (`string`): Workflow の識別子 **options.onError.resourceId** (`string`): 任意のリソース識別子(Run の作成時に指定した場合) **options.onError.getInitData** (`() => any`): Workflow に渡された初期入力データを返す関数 **options.onError.mastra** (`Mastra`): Mastra インスタンス(Workflow が Mastra に登録されている場合) **options.onError.requestContext** (`RequestContext`): リクエストスコープの context データ **options.onError.logger** (`IMastraLogger`): Workflow の logger インスタンス **options.onError.state** (`Record`): Workflow の現在の state オブジェクト ## 初期 state を指定して実行する Workflow Run を開始するときに `initialState` を渡すと、Workflow state の開始値を設定できます。 ```typescript const run = await workflow.createRun() const result = await run.start({ inputData: { value: 'hello' }, initialState: { counter: 0, items: [], }, }) ``` `initialState` オブジェクトは、Workflow の `stateSchema` で定義された構造と一致する必要があります。詳しくは、[Workflow state](https://mastra.zisheng.pro/ja/docs/workflows/workflow-state)を参照してください。 ## Workflow のステータス Workflow の `status` は、現在の実行状態を示します。指定できる値は次のとおりです。 **success** (`string`): すべてのステップが正常に実行を完了し、有効な結果が出力されました **failed** (`string`): Workflow の実行中にエラーが発生し、エラーの詳細を確認できます **suspended** (`string`): Workflow の実行が再開を待って一時停止しており、中断されたステップの情報を確認できます **tripwire** (`string`): Workflow が processor の tripwire によって終了されました。これは、Workflow 内の Agent ステップが tripwire をトリガーした場合(たとえば、guardrail によってコンテンツがブロックされた場合)に発生します。結果から tripwire の情報を確認できます。 ### tripwire ステータスを処理する Workflow に tripwire をトリガーする Agent ステップが含まれている場合、Workflow は `status: 'tripwire'` と tripwire の詳細を返します。 ```typescript const run = await workflow.createRun() const result = await run.start({ inputData: { message: 'Hello' } }) if (result.status === 'tripwire') { console.log('Workflow terminated by tripwire:', result.tripwire?.reason) console.log('Processor ID:', result.tripwire?.processorId) console.log('Retry requested:', result.tripwire?.retry) } ``` これは予期しないエラーを示す `status: 'failed'` とは異なります。tripwire ステータスは、processor が意図的に実行を停止したこと(たとえば、コンテンツモデレーションのため)を示します。 ## 関連項目 - [Step クラス](https://mastra.zisheng.pro/ja/reference/workflows/step) - [Workflow state](https://mastra.zisheng.pro/ja/docs/workflows/workflow-state) - [制御フロー](https://mastra.zisheng.pro/ja/docs/workflows/control-flow)