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 = await mastra.getWorkflow("myWorkflow").createRunAsync();
API Reference
Constructor
id:
inputSchema:
outputSchema:
steps:
Core Methods
then()
ワークフローにステップを順次追加します。チェーンのためにワークフローインスタンスを返します。
parallel()
複数のステップを同時に実行します。ステップの配列を受け取り、ワークフローインスタンスを返します。
branch()
条件分岐ロジックを作成します。条件関数と条件が満たされた時に実行するステップを含むタプルの配列を受け取ります。
dowhile()
条件が真である間、ステップを繰り返し実行するループを作成します。条件は各実行後にチェックされます。
dountil()
条件が真になるまでステップを繰り返し実行するループを作成します。条件は各実行後にチェックされます。
foreach()
配列を反復処理し、各要素に対してステップを実行します。オプションの並行性設定を受け入れます。
map()
マッピング設定オブジェクトまたはマッピング関数を使用して、ステップ間でデータをマップします。ステップ間でデータを変換するのに便利です。
commit()
ワークフロー設定を検証し、確定します。すべてのステップを追加した後に呼び出す必要があります。
createRun()
非推奨。新しいワークフロー実行インスタンスを作成し、特定の入力データでワークフローを実行できるようにします。オプションの実行IDを受け入れます。
createRunAsync()
新しいワークフロー実行インスタンスを作成し、特定の入力データでワークフローを実行できるようにします。オプションの実行IDを受け入れます。保留中のワークフロー実行スナップショットをストレージに保存します。
execute()
提供された入力データでワークフローを実行します。ワークフローの中断、再開を処理し、実行中にイベントを発行します。
ワークフローのステータス
ワークフローのステータスは、現在の実行状態を示します。考えられる値は以下の通りです。
success:
failed:
suspended:
ステップ間でのコンテキストの受け渡し
ステップは、コンテキストオブジェクトを通じてワークフロー内の前のステップからのデータにアクセスできます。各ステップは、実行されたすべての前のステップから蓄積されたコンテキストを受け取ります。
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
},
});