工作流

更新时间: 2026-06-27 10:32:57

工作流是 FocusAny 内置的图形化自动化编排系统,允许您通过拖拽节点、连线的方式,将多个操作组合成一条自动化的执行流水线。支持命令执行、JavaScript 脚本、条件判断、AI 大模型调用以及 MCP 插件调用,满足从简单任务自动化到复杂 AI 工作流的各种场景。


快速开始

进入工作流

  1. 打开系统设置页,点击左侧导航栏的 工作流 按钮。
  2. 进入工作流管理页面,默认显示工作流列表。

创建工作流

  1. 在列表页点击 新建工作流 按钮。
  2. 进入编辑界面,默认包含一个触发节点(工作流的起点)。
  3. 从左侧节点工具栏拖拽节点到画布,或点击工具栏 [+] 按钮添加节点。
  4. 将鼠标悬停在节点右侧锚点,拖拽连线到目标节点左侧锚点。
  5. 点击节点,在右侧配置面板中设置参数。
  6. 点击右上角 保存 按钮。

运行工作流

  • 手动运行: 在列表页点击工作流卡片上的 ▶ 按钮,或在编辑页点击 运行 按钮。
  • 定时运行: 将触发节点设为「定时触发」,配置 Cron 表达式,保存后自动生效。
  • 事件触发: 将触发节点设为「事件触发」,配置事件名称,通过 $mapi.workflow.emit(eventName) 触发。

界面说明

工作流界面包含三种视图模式:

视图 说明
列表视图 展示所有工作流的卡片列表,包含节点数、边数、运行状态,支持运行、查看历史、编辑、复制、删除操作
编辑视图 图形化画布编辑模式,左侧画布 + 右侧配置面板(360px 宽),支持拖拽、连线、配置
历史视图 展示选定工作流的运行记录,支持文本日志和可视化回放两种模式

编辑界面布局

┌──────────────────────────────────────────────┐
│  PageHeader(返回 / 名称输入 / 保存按钮)      │
├───────────────────────────────┬──────────────┤
│                               │  配置面板     │
│     LogicFlow 画布            │  ┌──────────┐│
│     (节点拖拽 / 连线)          │  │ 节点信息   ││
│                               │  │ 输入参数   ││
│  工具栏:                      │  │ 配置项     ││
│  [+] [放大] [缩小] [自适应]    │  │ 输出参数   ││
│                               │  └──────────┘│
└───────────────────────────────┴──────────────┘

画布操作

  • 添加节点: 点击工具栏 [+] 按钮,或从节点类型列表拖拽到画布
  • 连接节点: 从节点右侧锚点拖拽到目标节点左侧锚点
  • 选中节点: 单击选中,显示配置面板
  • 删除节点/连线: 选中后按 Delete 键
  • 框选: 在画布空白处拖拽框选多个节点
  • 缩放: 使用工具栏放大/缩小按钮,或鼠标滚轮
  • 自适应: 点击工具栏自适应按钮,自动调整视图以展示全部节点

节点类型

工作流支持 6 种节点类型,每种节点承担不同的职责。

触发节点

标识: ↯ 绿色 用途: 工作流的起点,定义如何启动工作流。 每个工作流有且仅有一个触发节点。

触发方式 配置项 说明
手动触发 无需额外配置 用户在 UI 上点击"运行"按钮触发
定时触发 Cron 表达式(如 * * * * * 按周期性表达式自动执行,最小精度为每分钟
事件触发 事件名称(如 demo.event 通过 API 发送事件名称触发

命令节点

标识: >_ 蓝色 用途: 执行 Shell 命令。 超时时间: 30 秒

配置项:

  • command:Shell 命令字符串,支持变量插值(如 echo ${lastOutput}

示例:

echo "工作流执行成功"
cat /tmp/output.txt
pwd

JS 节点

标识: JS 青色 用途: 执行 JavaScript 脚本,用于数据转换、逻辑处理等。 超时时间: 5 秒

配置项:

  • code:JavaScript 代码,需返回一个值
  • outputType:输出类型(text / json / any),决定输出字段的解析方式

示例:

(() => {
const data = JSON.parse(lastOutput);
return data.length;
})()

条件节点

标识: ? 琥珀色 用途: 条件判断,根据比较结果分支出两条路径(true / false)。 该节点有双锚点出口,分别对应"是"和"否"两条分支。

配置项:

配置项 说明
leftValue 左值,支持变量插值(如 ${lastOutput}
operator 比较运算符
rightValue 右值,支持变量插值

支持的运算符:

运算符 说明
equals 等于
notEquals 不等于
greaterThan 大于
lessThan 小于
greaterThanOrEquals 大于等于
lessThanOrEquals 小于等于
contains 包含

大模型节点

标识: AI 紫色 用途: 调用 AI 大模型进行对话、文本生成、分析等。

配置项:

  • modelProvider:模型标识,格式为 providerId|modelId
  • prompt:提示词,支持变量插值(如 请总结以下内容:${lastOutput}

可用模型通过 $mapi.workflow.listModels() 获取,包括已配置的所有 AI 服务商及其模型。

插件节点

标识: P 玫瑰色 用途: 调用 MCP(Model Context Protocol)插件的工具方法,扩展工作流能力。

配置项:

  • mcpToolName:MCP 工具全名,格式为 PluginName-ToolName
  • arguments:工具参数,支持可视化编辑和 JSON 编辑两种模式,支持变量插值

选择 MCP 工具后,系统会自动加载该工具的参数 Schema,辅助您填写参数。


变量系统

工作流支持在节点配置中使用变量,实现节点间的数据传递。

变量语法

使用 ${变量表达式} 格式进行变量插值。

内置变量

变量 说明
${lastOutput} 上一节点的原始输出
${节点标题.字段名} 指定节点的某个输出字段的值

解析规则

  • 字符串内联替换:结果:${节点A.Content} 会替换为 结果:xxx
  • 精确匹配: 如果整个值等于 ${xxx},则替换为原始类型(不转为字符串)
  • 变量支持在命令节点、JS 节点、条件节点、大模型节点、插件节点中使用

执行与日志

执行流程

  1. 从触发节点开始,按拓扑顺序依次执行下游节点
  2. 条件节点根据比较结果选择 true 或 false 分支
  3. 如果某个节点执行失败,其下游所有节点自动标记为「跳过」
  4. 执行完成后生成运行记录,包含每个节点的执行状态和输出

节点状态

状态 说明
success 执行成功
failed 执行失败
skipped 上游节点失败,自动跳过

查看运行历史

  1. 在工作流列表页,点击工作流卡片的 历史 按钮
  2. 历史视图展示所有运行记录,按时间降序排列,保留最近 50 条
  3. 每条记录显示运行状态、触发方式、耗时等概要信息

历史查看模式

模式 说明
文本日志 深色终端风格,展示每个节点的执行时间、状态和输出内容
可视化回放 复用画布组件(只读模式),点击节点可查看该节点的运行状态和详细日志

定时触发

工作流支持 Cron 表达式实现周期性自动执行。

Cron 表达式格式: 分 时 日 月 周 * * * * * 表示每分钟执行一次。

注意:

  • 定时工作流必须保存并启用(enabled: true)才会生效
  • 应用重启后,定时器会自动恢复
  • 同一分钟内不会重复触发同一工作流

事件触发

工作流支持通过事件名称触发,适用于被其他功能或外部调用。

使用方式:

  1. 将触发节点设为「事件触发」,配置事件名称(如 on-file-saved
  2. 在其他地方通过 $mapi.workflow.emit('on-file-saved') 发送事件
  3. 所有启用的、事件名称匹配的工作流会被自动执行

常见问题

Q:为什么我的定时工作流没有执行? A:请检查:① 工作流是否已保存并启用;② Cron 表达式是否正确;③ 工作流中是否存在未配置完成的节点。

Q:如何中断正在运行的工作流? A:目前工作流执行是同步串行的,不支持中断。建议将超时时间较长的操作放在命令节点或 JS 节点中,并设置合理的超时时间。

Q:变量插值没有生效? A:请检查:① 变量语法是否正确(使用 ${变量名} 格式);② 引用的节点标题是否与实际一致;③ 上游节点是否已成功执行并产生输出。

Q:工作流中的数据如何持久化? A:工作流数据存储在本地 PouchDB 数据库中,纯本地运行,不经过远程 API。运行日志保留最近 50 条。

Q:一个工作流最多可以添加多少个节点? A:没有硬性限制,但建议保持节点数量在合理范围内(20 个以内),以保证执行效率和可维护性。

语言
QQ
微信客服
微信交流群
客服