# pipeline **Repository Path**: toophy/pipeline ## Basic Information - **Project Name**: pipeline - **Description**: c++流水线系统, 通过yaml配置文件定制流水线 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-09 - **Last Updated**: 2025-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PipelineFramework 一个简洁、简单、高效的C++流水线(工作流)功能库。 ## 📦 vcpkg包 本项目已改造为vcpkg包,包名为 `pipeline`。 ### 安装 ```bash vcpkg install pipeline ``` ### 使用 ```cpp #include int main() { pipeline::Manager manager; manager.init(); auto pipelines = manager.load("config.yaml"); for (const auto& name : pipelines) { manager.run(name); } return 0; } ``` 详细使用说明请参考 [vcpkg使用指南](docs/vcpkg使用指南.md)。 ## ✨ 核心特性 - **基于节点的架构**: 将复杂的逻辑分解为一系列可复用的节点。 - **声明式配置**: 使用简单的 YAML 文件来定义和组织复杂的流水线,无需修改代码。 - **控制流**: 内置 `Sequence` (顺序) 和 `Selector` (选择) 节点,轻松实现逻辑分支。 - **动态注册**: 可以轻松编写自定义节点并将其注册到框架中,实现功能扩展。 - **变量上下文**: 节点之间可以通过执行上下文(`ExecutionContext`)来传递和共享数据。 - **可视化**: 提供工具函数,可以将任何流水线配置一键生成为 [Mermaid](https://mermaid-js.github.io/mermaid/#/) 格式的流程图。 - **极简API**: 提供了 `PipelineManager` 类作为统一入口,隐藏了所有内部复杂性。 ## 🚀 快速入门 ### 1. 环境依赖 - C++17 编译器 - CMake (>= 3.15) - [vcpkg](https://github.com/microsoft/vcpkg) (用于自动管理第三方库) ### 2. 第三方库 本框架使用 vcpkg 自动管理以下依赖: - `yaml-cpp`: 用于解析 `.yaml` 配置文件。 - `nlohmann-json`: 用于在节点间传递结构化参数。 ### 3. 构建项目 #### 方法一:使用脚本(推荐) ```powershell # 构建项目 .\scripts\build.ps1 # 运行程序 .\scripts\run.ps1 # 一次性构建并运行 .\scripts\build-and-run.ps1 ``` #### 方法二:使用批处理文件 直接双击根目录下的批处理文件: - `build.bat` - 构建项目 - `run.bat` - 运行程序 - `clean.bat` - 清理文件 #### 方法三:手动构建 ```bash # 1. 克隆仓库 git clone cd PipelineFramework # 2. 配置 CMake (它会自动调用 vcpkg 来安装依赖) # 确保你已经设置了 VCPKG_ROOT 环境变量,或者修改 CMakeLists.txt 中的路径 cmake -B build -S . # 3. 构建 cmake --build build ``` 构建成功后,可执行文件 `Example.exe` (或 `Example`) 会出现在 `bin/` 目录下。 ### 4. 运行示例 项目内置了一个示例,演示了如何加载并运行一条简单的流水线。 ```bash # 从项目根目录运行 cd bin ./Example ``` 你会看到如下输出: ``` --- 加载流水线 --- 流水线加载成功! --- 运行流水线 --- [Log:log_start] 流水线开始 [Log:log_middle] 正在处理中... [Log:log_end] 流水线结束 流水线运行完毕! --- 生成图表 --- graph TD; test((Pipeline
test)); test --> main_flow; main_flow{"Sequence
main_flow"}; main_flow --> log_start; log_start["Log
log_start"]; main_flow --> log_middle; log_middle["Log
log_middle"]; main_flow --> log_end; log_end["Log
log_end"]; ``` ## 🎨 设计你自己的流水线 你可以编辑 `bin/data/test_pipeline.yaml` 文件来尝试不同的节点组合。例如,使用 `Selector` 节点。 ## 🔧 扩展 要创建自己的节点,只需: 1. 编写一个继承自 `PipelineFramework::BaseNode` 的类。 2. 实现 `execute()` 方法。 3. (可选)实现 `initialize()` 方法来接收配置参数。 4. 在你的主程序中,使用 `manager.registerNode("YourNodeType")` 来注册它。 5. 现在你就可以在 YAML 文件中使用 `"YourNodeType"` 了。 ## 📝 脚本说明 项目提供了完整的构建和运行脚本,位于 `scripts` 目录下: ### PowerShell脚本 - `build.ps1` - 构建脚本,自动安装依赖并编译项目 - `run.ps1` - 运行脚本,运行编译好的示例程序 - `clean.ps1` - 清理脚本,清理构建文件和临时文件 - `build-and-run.ps1` - 组合脚本,一次性完成构建和运行 ### 批处理文件 - `build.bat` - 构建项目的便捷入口 - `run.bat` - 运行程序的便捷入口 - `clean.bat` - 清理文件的便捷入口 详细使用说明请参考 [构建和运行说明](docs/构建和运行说明.md)。