Skip to content

xiaozhaoCcz/TaskFlow

Repository files navigation

🚀 可视化工作流构建器

一个基于 Vue 3 的可视化工作流构建器,类似于影刀的任务流程编辑器。支持拖拽操作、任务嵌套、条件分支和循环控制。

工作流构建器 License

✨ 特性

  • 🎨 直观的拖拽界面 - 从左侧任务面板拖拽任务到右侧画布
  • 🏗️ 积木式构建 - 像搭积木一样从上到下构建工作流
  • 🔀 控制流支持 - 支持 IF/ELSE、WHILE、FOREACH、TRY/CATCH 等控制结构
  • 📦 任务嵌套 - 控制流任务可以包含子任务,支持无限层级嵌套
  • ⚙️ 实时配置 - 点击任务可展开配置面板,实时修改任务参数
  • ▶️ 可视化执行 - 运行工作流时实时显示执行状态和日志
  • 🎯 任务管理 - 支持任务的上移、下移、删除等操作

📦 任务类型

基础任务

任务 图标 说明
打开网页 🌐 在浏览器中打开指定URL
点击元素 👆 点击页面上的元素
输入文本 ⌨️ 在输入框中输入文本
等待 ⏱️ 等待指定的时间
获取文本 📝 获取元素的文本内容并保存到变量
截图 📸 截取当前页面的屏幕截图

控制流任务

任务 图标 说明
IF 条件 条件判断,支持 THEN 和 ELSE 分支
WHILE 循环 🔄 条件循环,满足条件时重复执行
FOREACH 遍历 📋 遍历数组,对每个元素执行子任务
TRY 异常处理 🛡️ 异常捕获,支持 TRY 和 CATCH 块

🚀 快速开始

安装依赖

npm install

启动开发服务器

npm run dev

浏览器会自动打开 http://localhost:3000

构建生产版本

npm run build

预览生产构建

npm run preview

📖 使用指南

1. 添加任务

从左侧任务面板拖拽任务到右侧画布区域:

  • 拖拽基础任务到画布根部
  • 拖拽控制流任务可以创建嵌套结构
  • 控制流任务展开后可以拖拽子任务到对应的分支中

2. 配置任务

点击任务块展开配置面板:

  • 打开网页: 设置要访问的URL
  • 点击元素: 设置元素的CSS选择器
  • 输入文本: 设置选择器和要输入的文本
  • 等待: 设置等待时间(毫秒)
  • 获取文本: 设置选择器和保存变量名
  • IF条件: 设置条件表达式(如 count > 5
  • WHILE循环: 设置循环条件和最大迭代次数
  • FOREACH遍历: 设置要遍历的数组和循环变量名

3. 管理任务

每个任务都有以下操作按钮:

  • ▶/▼ - 展开/收起任务(仅控制流任务)
  • - 将任务上移
  • - 将任务下移
  • × - 删除任务

4. 运行工作流

点击顶部工具栏的"运行工作流"按钮:

  • 工作流会从上到下依次执行
  • 当前执行的任务会高亮显示
  • 执行日志会显示在右下角面板中
  • 可以查看每个任务的执行状态和结果

5. 清空画布

点击"清空"按钮可以清除画布上的所有任务。

💡 示例工作流

示例1:简单的网页自动化

1. 打开网页 (https://www.baidu.com)
2. 等待 (2000ms)
3. 输入文本 (#kw: "Vue 3")
4. 点击元素 (#su)
5. 等待 (3000ms)
6. 截图 (result.png)

示例2:条件判断

1. 获取文本 (#title → pageTitle)
2. IF (pageTitle.includes("Vue"))
   THEN:
     - 点击元素 (#btn-vue)
     - 输入文本 (#input: "Vue is awesome")
   ELSE:
     - 点击元素 (#btn-other)
     - 输入文本 (#input: "Other framework")
3. 截图 (result.png)

示例3:循环遍历

1. FOREACH (["Vue", "React", "Angular"] → framework)
   循环体:
     - 输入文本 (#search: {framework})
     - 点击元素 (#submit)
     - 等待 (2000ms)
     - 截图 ({framework}.png)

示例4:异常处理

1. TRY
   TRY块:
     - 打开网页 (https://example.com)
     - 点击元素 (#risky-button)
     - 输入文本 (#input: "test")
   CATCH块:
     - 截图 (error.png)
     - 打开网页 (https://backup.com)

🏗️ 项目结构

/workspace
├── src/
│   ├── components/
│   │   ├── WorkflowBuilder.vue    # 主组件
│   │   ├── TaskPanel.vue          # 左侧任务面板
│   │   ├── TaskCanvas.vue         # 右侧画布
│   │   ├── TaskBlock.vue          # 任务块组件
│   │   └── DropZone.vue           # 拖放区域组件
│   ├── utils/
│   │   └── taskExecutor.js        # 任务执行引擎
│   ├── App.vue                    # 应用根组件
│   └── main.js                    # 应用入口
├── index.html                     # HTML模板
├── vite.config.js                 # Vite配置
├── package.json                   # 项目配置
└── README.md                      # 项目文档

🎨 技术栈

  • Vue 3 - 渐进式JavaScript框架
  • Vite - 下一代前端构建工具
  • 原生拖拽API - HTML5 Drag and Drop
  • CSS3 - 现代样式和动画

🔧 核心实现

拖拽功能

使用HTML5原生拖拽API实现:

  • draggable="true" - 使元素可拖拽
  • @dragstart - 开始拖拽时保存任务数据
  • @dragover - 允许拖放
  • @drop - 处理拖放并创建新任务

任务嵌套

使用递归组件实现多层嵌套:

  • TaskBlock 组件递归渲染子任务
  • DropZone 组件处理不同分支的拖放
  • 每个控制流任务可以包含多个子任务数组

任务执行

使用异步递归实现顺序执行:

  • 从上到下遍历任务列表
  • 每个任务执行前后触发回调
  • 控制流任务递归执行子任务
  • 支持变量传递和条件评估

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📄 许可证

MIT License

🙏 致谢

灵感来源于影刀RPA平台的可视化流程编辑器。


作者: Cursor AI Assistant
创建时间: 2025年11月29日

About

TaskFlow

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors