# mac-flow **Repository Path**: bo_boom/mac-flow ## Basic Information - **Project Name**: mac-flow - **Description**: 轻量级 高性能 JAVA 流程引擎 及其 设计器 - **Primary Language**: Java - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: http://www.boarsoft.com/mac/flow - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2025-08-27 - **Last Updated**: 2025-08-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mac-flow mac-flow 是一个基于 Java 的流程引擎,可用于构建和管理复杂的工作流和业务流程。它支持多种流程节点类型,如开始、结束、分支、判断等,并提供流程执行、跟踪、监控等功能。 ## 项目结构 - **mac-flow-core**: 核心流程引擎模块,包含流程定义、执行、跟踪等核心功能。 - **mac-flow-demo**: 示例模块,展示如何使用 mac-flow 创建和执行流程。 - **mac-flow-editor**: Web 编辑器模块,提供流程图的可视化编辑和管理功能。 ## 主要功能 - **流程定义**: 支持多种节点类型,如开始、结束、分支、判断、子流程等。 - **流程执行**: 提供流程执行引擎,支持同步和异步执行。 - **流程跟踪**: 记录流程执行过程中的每一步,便于监控和调试。 - **流程监控**: 提供流程执行状态的监控和管理功能。 - **可视化编辑**: 通过 Web 编辑器进行流程图的可视化编辑和管理。 ## 使用示例 ### 创建并执行流程 在 `mac-flow-demo` 模块中,可以通过以下代码创建并执行一个流程: ```java public class Main { public static void main(String[] args) throws Throwable { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:spring/context.xml"); SimpleFlowEngine fe = ctx.getBean(SimpleFlowEngine.class); test10(fe); } public static void test10(SimpleFlowEngine fe) throws Throwable { SimpleFlow flow = fe.create("test10"); flow = fe.start(flow); System.out.println("Flow executed with status: " + flow.getStatus()); } } ``` ### 流程节点定义 流程节点定义在 `mac-flow-core` 模块中,支持多种节点类型,如 `ProcessNode`, `JudgeNode`, `ForkNode`, `JoinNode` 等。每个节点类型都有特定的处理逻辑,例如 `ProcessNode` 用于执行具体的业务逻辑,`JudgeNode` 用于根据条件决定流程的分支。 ### Web 编辑器 `mac-flow-editor` 模块提供了一个基于 Web 的流程编辑器,可以通过浏览器访问并进行流程图的可视化编辑。编辑器支持流程的创建、修改、删除和执行等功能。 ## 安装与部署 ### 依赖 确保已安装以下依赖: - Java 8 或更高版本 - Maven 3.x - Spring Framework ### 构建项目 使用 Maven 构建项目: ```bash mvn clean install ``` ### 运行示例 运行 `mac-flow-demo` 模块中的 `Main` 类以启动示例应用。 ### 部署 Web 编辑器 将 `mac-flow-editor` 模块打包为 WAR 文件并部署到支持 Servlet 3.0 或更高版本的服务器(如 Tomcat 8)。 ## 贡献者指南 欢迎贡献代码和文档。请遵循以下步骤: 1. Fork 本项目 2. 创建新分支 (`git checkout -b feature/new-feature`) 3. 提交更改 (`git commit -am 'Add new feature'`) 4. 推送分支 (`git push origin feature/new-feature`) 5. 创建新的 Pull Request ## 许可证 本项目使用 MIT 许可证。详情请参见 [LICENSE](LICENSE) 文件。