跳到主要内容

Mastra.addDynamicWorkflow()

beta

动态 Workflow 目前处于 beta 阶段。在 API 稳定之前,可能会出现不伴随主版本号升级的破坏性变更。

.addDynamicWorkflow() 方法会验证动态 Workflow 定义,并将其作为实时 Workflow 注册到实例上,同时通过 workflowDefinitions Storage domain 将其持久化。注册后,该 Workflow 可通过 getWorkflow() 像其他 Workflow 一样运行。

完整设置示例请参阅动态 Workflow,接受的字段和 graph 条目请参阅动态 Workflow 定义参考

使用示例
使用示例的直接链接

await mastra.addDynamicWorkflow({
id: 'greeting-workflow',
description: 'Returns a greeting for the supplied name',
inputSchema: {
type: 'object',
properties: { name: { type: 'string' } },
required: ['name'],
},
outputSchema: {
type: 'object',
properties: { message: { type: 'string' } },
required: ['message'],
},
graph: [
{
type: 'mapping',
id: 'create-greeting',
mapConfig: JSON.stringify({
message: { template: 'Hello, ${initData.name}!' },
}),
},
],
})

const run = await mastra.getWorkflow('greeting-workflow').createRun()
const result = await run.start({ inputData: { name: 'Ada' } })

参数
参数的直接链接

def:

DynamicWorkflowGraph
Workflow 定义:id、可选的 description 和 metadata、JSON Schema 输入/输出 schema、可选的 state 和 request-context schema,以及步骤 graph。

返回值
返回值的直接链接

定义完成验证、注册和持久化后兑现的 Promise。

行为
行为的直接链接

  • 在更改任何内容之前,会完整验证定义(结构、引用、schema 流)。graph 引用的 Agent、Tool 和 Workflow 必须已在实例上注册。
  • 添加具有现有 ID 的定义会同时替换已存储的定义和实时注册。正在进行的 run 会保留启动时使用的 graph。
  • 如果没有支持 workflowDefinitions domain 的 Storage adapter,Workflow 仍会经过验证并注册到内存中,但重启后定义会丢失。
  • 要同时添加根 Workflow 及其嵌套的辅助 Workflow,请使用 addDynamicWorkflows()