Workflows API
Workflows API は、Mastra で自動化ワークフローと対話し、実行するためのメソッドを提供します。
すべてのワークフローを取得する
利用可能なワークフローの一覧を取得します:
const workflows = await mastraClient.getWorkflows();
特定のワークフローを扱う
const 名で定義した特定のワークフローのインスタンスを取得します:
src/mastra/workflows/test-workflow.ts
export const testWorkflow = createWorkflow({
id: 'city-workflow'
})
const workflow = mastraClient.getWorkflow("testWorkflow");
ワークフローの手法
ワークフローの詳細を取得
ワークフローの詳細情報を取得します:
const details = await workflow.details();
ワークフローの実行を非同期で開始する
inputData を指定してワークフローの実行を開始し、実行が完了して結果が返るまで待機します:
const run = await workflow.createRunAsync();
const result = await run.startAsync({
inputData: {
city: "New York",
},
});
非同期でワークフローの再開を実行する
一時停止中のワークフローのステップを再開し、実行結果が得られるまで待機します:
const run = await workflow.createRunAsync();
const result = await run.resumeAsync({
step: "step-id",
resumeData: { key: "value" },
});
ワークフローの監視
ワークフローの進行状況を監視します:
try {
const workflow = mastraClient.getWorkflow("testWorkflow");
const run = await workflow.createRunAsync();
run.watch((record) => {
console.log(record);
});
const result = await run.start({
inputData: {
city: "New York",
},
});
} catch (e) {
console.error(e);
}
ワークフローの再開
ワークフローの実行を再開し、ステップの遷移を監視します。
try {
const workflow = mastraClient.getWorkflow("testWorkflow");
const run = await workflow.createRunAsync({ runId: prevRunId });
run.watch((record) => {
console.log(record);
});
run.resume({
step: "step-id",
resumeData: { key: "value" },
});
} catch (e) {
console.error(e);
}
ストリームワークフロー
リアルタイム更新のためにワークフロー実行をストリーミングします:
try {
const workflow = mastraClient.getWorkflow("testWorkflow");
const run = await workflow.createRunAsync();
const stream = await run.stream({
inputData: {
city: 'New York',
},
});
for await (const chunk of stream) {
console.log(JSON.stringify(chunk, null, 2));
}
} catch (e) {
console.error('Workflow error:', e);
}
ワークフロー実行結果を取得する
ワークフロー実行の結果を取得します:
try {
const workflow = mastraClient.getWorkflow("testWorkflow");
const run = await workflow.createRunAsync();
// ワークフローの実行を開始
const startResult = await run.start({
inputData: {
city: "New York",
},
});
const result = await workflow.runExecutionResult(run.runId);
console.log(result);
} catch (e) {
console.error(e);
}
これは、長時間実行されるワークフローを扱う際に便利です。ワークフロー実行の結果をポーリングするために使用できます。
ワークフロー実行結果
ワークフローの実行結果は次のとおりです。
フィールド | 型 | 説明 |
---|---|---|
payload | {currentStep?: {id: string, status: string, output?: Record<string, any>, payload?: Record<string, any>}, workflowState: {status: string, steps: Record<string, {status: string, output?: Record<string, any>, payload?: Record<string, any>}>}} | 実行中の現在ステップとワークフローの状態 |
eventTimestamp | Date | イベントのタイムスタンプ |
runId | string | このワークフロー実行インスタンスの一意識別子 |