Workflowクラス
Workflowクラスは、条件分岐やデータ検証を含む複雑な操作のシーケンスのためのステートマシンを作成できるようにします。
使用方法
const myWorkflow = createWorkflow({
id: "my-workflow",
inputSchema: z.object({
startValue: z.string(),
}),
outputSchema: z.object({
result: z.string(),
}),
steps: [step1, step2, step3], // Declare steps used in this workflow
})
.then(step1)
.then(step2)
.then(step3)
.commit();
const mastra = new Mastra({
workflows: {
myWorkflow,
},
});
const run = mastra.getWorkflow("myWorkflow").createRun();
APIリファレンス
コンストラクタ
id:
string
ワークフローの一意な識別子
inputSchema:
z.ZodType<any>
ワークフローの入力構造を定義するZodスキーマ
outputSchema:
z.ZodType<any>
ワークフローの出力構造を定義するZodスキーマ
steps:
Step[]
ワークフローに含めるステップの配列
コアメソッド
then()
ワークフローにステップを順番に追加します。チェーン用にワークフローインスタンスを返します。
parallel()
複数のステップを同時に実行します。ステップの配列を受け取り、ワークフローインスタンスを返します。
branch()
条件分岐ロジックを作成します。条件関数と条件が満たされたときに実行するステップを含むタプルの配列を受け取ります。
dowhile()
条件が真である間、ステップを繰り返し実行するループを作成します。各実行後に条件がチェックされます。
dountil()
条件が真になるまで、ステップを繰り返し実行するループを作成します。各実行後に条件がチェックされます。
foreach()
配列を反復処理し、各要素に対してステップを実行します。オプションで並列実行の設定も可能です。
map()
マッピング設定オブジェクトまたはマッピング関数を使って、ステップ間でデータをマッピングします。ステップ間のデータ変換に便利です。
commit()
ワークフローの設定を検証し、確定します。すべてのステップを追加した後に呼び出す必要があります。
createRun()
新しいワークフロー実行インスタンスを作成し、特定の入力データでワークフローを実行できるようにします。オプションで実行IDを指定できます。
execute()
指定した入力データでワークフローを実行します。ワークフローの一時停止や再開を処理し、実行中にイベントを発行します。
ワークフローのステータス
ワークフローのステータスは、現在の実行状態を示します。考えられる値は以下の通りです。
success:
string
すべてのステップが正常に実行され、有効な結果が出力されました
failed:
string
ワークフローの実行中にエラーが発生し、エラーの詳細が利用可能です
suspended:
string
ワークフローの実行が一時停止されており、再開を待っています。停止されたステップの情報が含まれます
ステップ間でのコンテキストの受け渡し
ステップは、コンテキストオブジェクトを通じてワークフロー内の前のステップからのデータにアクセスできます。各ステップは、実行されたすべての前のステップから蓄積されたコンテキストを受け取ります。
workflow
.then({
id: "getData",
execute: async ({ inputData }) => {
return {
data: { id: "123", value: "example" },
};
},
})
.then({
id: "processData",
execute: async ({ inputData }) => {
// Access data from previous step through context.steps
const previousData = inputData.data;
// Process previousData.id and previousData.value
},
});