# ai_process **Repository Path**: qq2820/ai_process ## Basic Information - **Project Name**: ai_process - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-17 - **Last Updated**: 2025-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简化流程引擎 (Simple Process Engine) 一个轻量级的C++流程引擎原型,支持基础BPMN元素和动态库任务加载机制。 ## 项目概述 本项目实现了一个简化版的流程引擎,重点演示以下核心功能: - ✅ 基础流程管理(部署、启动、查询) - ✅ 变量管理系统(支持多种数据类型) - ✅ 流程实例生命周期管理 - ✅ 动态库加载接口定义 ## 项目结构 ``` . ├── include/ # 头文件 │ ├── types.h # 基础类型定义 │ ├── task_interface.h # 任务接口(动态库接口) │ ├── variables.h # 变量管理 │ └── process_engine.h # 流程引擎主接口 ├── src/ # 源代码 │ ├── utils/ │ │ └── variables.cpp # 变量管理实现 │ └── engine/ │ └── process_engine.cpp # 流程引擎实现 ├── examples/ # 示例程序 │ └── simple_example.cpp # 简单示例 ├── tests/ # 测试 │ └── variables_test.cpp # 变量管理单元测试 ├── CMakeLists.txt # CMake配置 ├── 功能说明文档.md # 详细功能说明 └── 单元测试方案.md # 测试方案文档 ``` ## 快速开始 ### 编译 ```bash # 创建构建目录 mkdir build && cd build # 配置项目 cmake .. # 编译 make # 编译成功后会生成: # - libprocess_engine.so (流程引擎库) # - simple_example (示例程序) ``` ### 运行示例 ```bash cd build ./simple_example ``` ### 运行测试(可选) ```bash # 重新配置启用测试 cd build cmake .. -DENABLE_TESTING=ON # 编译测试(需要Google Test) make # 运行测试 ./engine_tests ``` ## 核心功能 ### 1. 变量管理 ```cpp #include "variables.h" Variables vars; // 设置不同类型的变量 vars.set("name", "张三"); vars.set("age", 30); vars.set("price", 99.99); vars.set("approved", true); // 获取变量 std::string name = vars.get("name"); int age = vars.getInt("age"); double price = vars.getDouble("price"); bool approved = vars.getBool("approved"); // 检查变量是否存在 if (vars.has("name")) { // ... } // 删除变量 vars.remove("name"); ``` ### 2. 流程引擎基础操作 ```cpp #include "process_engine.h" using namespace ProcessEngine; // 1. 创建并初始化引擎 SimpleProcessEngine engine; engine.initialize(); // 2. 添加动态库搜索路径 engine.addLibraryPath("./tasks"); // 3. 部署流程定义 auto def = engine.deploy("simpleProcess", "Simple Test Process"); // 4. 准备流程变量 Variables vars; vars.set("orderId", "ORD-12345"); vars.set("amount", 15000); // 5. 启动流程实例 auto instance = engine.startProcess("simpleProcess", vars); // 6. 检查流程状态 if (instance.isCompleted()) { std::cout << "Process completed!" << std::endl; } // 7. 获取流程变量 std::string orderId = instance.getVariable("orderId"); int amount = instance.getVariableAsInt("amount"); // 8. 关闭引擎 engine.shutdown(); ``` ### 3. 动态库任务接口 所有任务动态库必须实现统一接口: ```cpp #include "task_interface.h" extern "C" int execute_task(TaskContext* context) { // 获取输入参数 const char* input = context->get_variable(context, "input"); // 执行业务逻辑 // ... // 设置输出变量 context->set_variable(context, "output", "result"); // 记录日志 context->log(context, "Task executed successfully"); return 0; // 0=成功, 非0=失败 } ``` ## 已实现的功能 ### 核心组件 - ✅ 类型系统定义(流程状态、元素类型、网关方向等) - ✅ 变量管理系统(支持字符串、整数、浮点数、布尔类型) - ✅ 流程定义管理(部署、查询) - ✅ 流程实例管理(创建、启动、状态查询) - ✅ 任务接口定义(动态库加载接口) ### 测试 - ✅ 变量管理单元测试(12个测试用例) - ✅ 示例程序验证 ## 技术栈 - **语言**: C++17 - **构建工具**: CMake 3.15+ - **测试框架**: Google Test (可选) - **编译器**: GCC 14.2+ / Clang / MSVC ## 文档 - [功能说明文档.md](简化流程引擎-功能说明.md) - 完整的功能说明和API文档 - [单元测试方案.md](单元测试方案.md) - 详细的测试方案和测试用例 ## 下一步开发计划 根据功能说明文档,以下功能待实现: 1. **XML解析器** - 解析BPMN定义文件 2. **动态库加载器** - 实现动态库加载和执行 3. **流程执行器** - 实现完整的流程执行逻辑 4. **网关处理** - 实现排他网关和并行网关 5. **表达式引擎** - 条件表达式求值 6. **更多测试** - 完善单元测试和集成测试 ## 示例输出 ``` === Simple Process Engine Example === [INFO] Process engine initializing... [INFO] Process engine initialized successfully [DEBUG] Added library path: ./tasks [DEBUG] Added library path: /usr/local/lib/tasks [INFO] Process deployed: simpleProcess (id: proc_simpleProcess) Deployed process: simpleProcess (Simple Test Process) Initial variables: orderId: ORD-12345 amount: 15000 customer: 张三 approved: true [INFO] Process started: instance_1 (key: simpleProcess) [INFO] Process completed: instance_1 Process instance: instance_1 Process key: simpleProcess State: COMPLETED [INFO] Process engine shutting down... [INFO] Process engine shutdown complete === Example completed successfully === ``` ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request! ## 联系方式 如有问题,请通过Issue联系。