QQ扫一扫联系
工作流是 FocusAny 内置的图形化自动化编排系统,允许您通过拖拽节点、连线的方式,将多个操作组合成一条自动化的执行流水线。支持命令执行、JavaScript 脚本、条件判断、AI 大模型调用以及 MCP 插件调用,满足从简单任务自动化到复杂 AI 工作流的各种场景。
$mapi.workflow.emit(eventName) 触发。工作流界面包含三种视图模式:
| 视图 | 说明 |
|---|---|
| 列表视图 | 展示所有工作流的卡片列表,包含节点数、边数、运行状态,支持运行、查看历史、编辑、复制、删除操作 |
| 编辑视图 | 图形化画布编辑模式,左侧画布 + 右侧配置面板(360px 宽),支持拖拽、连线、配置 |
| 历史视图 | 展示选定工作流的运行记录,支持文本日志和可视化回放两种模式 |
┌──────────────────────────────────────────────┐
│ PageHeader(返回 / 名称输入 / 保存按钮) │
├───────────────────────────────┬──────────────┤
│ │ 配置面板 │
│ LogicFlow 画布 │ ┌──────────┐│
│ (节点拖拽 / 连线) │ │ 节点信息 ││
│ │ │ 输入参数 ││
│ 工具栏: │ │ 配置项 ││
│ [+] [放大] [缩小] [自适应] │ │ 输出参数 ││
│ │ └──────────┘│
└───────────────────────────────┴──────────────┘
工作流支持 6 种节点类型,每种节点承担不同的职责。
标识: ↯ 绿色 用途: 工作流的起点,定义如何启动工作流。 每个工作流有且仅有一个触发节点。
| 触发方式 | 配置项 | 说明 |
|---|---|---|
| 手动触发 | 无需额外配置 | 用户在 UI 上点击"运行"按钮触发 |
| 定时触发 | Cron 表达式(如 * * * * *) |
按周期性表达式自动执行,最小精度为每分钟 |
| 事件触发 | 事件名称(如 demo.event) |
通过 API 发送事件名称触发 |
标识: >_ 蓝色
用途: 执行 Shell 命令。
超时时间: 30 秒
配置项:
command:Shell 命令字符串,支持变量插值(如 echo ${lastOutput})示例:
echo "工作流执行成功"
cat /tmp/output.txt
pwd
标识: 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},则替换为原始类型(不转为字符串)| 状态 | 说明 |
|---|---|
success |
执行成功 |
failed |
执行失败 |
skipped |
上游节点失败,自动跳过 |
| 模式 | 说明 |
|---|---|
| 文本日志 | 深色终端风格,展示每个节点的执行时间、状态和输出内容 |
| 可视化回放 | 复用画布组件(只读模式),点击节点可查看该节点的运行状态和详细日志 |
工作流支持 Cron 表达式实现周期性自动执行。
Cron 表达式格式: 分 时 日 月 周
* * * * * 表示每分钟执行一次。
注意:
enabled: true)才会生效工作流支持通过事件名称触发,适用于被其他功能或外部调用。
使用方式:
on-file-saved)$mapi.workflow.emit('on-file-saved') 发送事件Q:为什么我的定时工作流没有执行? A:请检查:① 工作流是否已保存并启用;② Cron 表达式是否正确;③ 工作流中是否存在未配置完成的节点。
Q:如何中断正在运行的工作流? A:目前工作流执行是同步串行的,不支持中断。建议将超时时间较长的操作放在命令节点或 JS 节点中,并设置合理的超时时间。
Q:变量插值没有生效?
A:请检查:① 变量语法是否正确(使用 ${变量名} 格式);② 引用的节点标题是否与实际一致;③ 上游节点是否已成功执行并产生输出。
Q:工作流中的数据如何持久化? A:工作流数据存储在本地 PouchDB 数据库中,纯本地运行,不经过远程 API。运行日志保留最近 50 条。
Q:一个工作流最多可以添加多少个节点? A:没有硬性限制,但建议保持节点数量在合理范围内(20 个以内),以保证执行效率和可维护性。