# flyqiu **Repository Path**: mnisummer/flyqiu ## Basic Information - **Project Name**: flyqiu - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-09-21 - **Last Updated**: 2026-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FlyQiu ![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg) ![Java](https://img.shields.io/badge/Java-17+-green.svg) ![Maven](https://img.shields.io/badge/Maven-3.6+-red.svg) FlyQiu 是一个综合性的企业级开发框架,包含通用工具包、流程引擎和表单引擎三大核心模块,旨在为开发者提供高效、灵活且易于扩展的解决方案。 ## 项目结构 FlyQiu 由以下三个主要模块组成: ### 1. flyqiu-common - 通用工具包 flyqiu-common 是一个功能丰富的通用工具包,为项目提供基础支撑,包含: - 常用工具类 - 统计运算功能 - 网络请求工具 - MyBatis-Plus 条件构造器 - SM 加解密工具 - 集合处理工具 - 字符串锁工具包 ### 2. flyqiu-flow - 流程引擎 flyqiu-flow 是一个具有较强扩展性的轻量级流程引擎,支持基于 Flowable 或 Activiti 流程引擎导出的 BPMN 配置。 #### 支持的 BPMN 节点元素 | 节点元素 | 支持 | 备注 | |------------------|------|-------------| | startEvent | ✔ | 开始事件 | | endEvent | ✔ | 结束事件 | | userTask | ✔ | 用户任务,支持多实例 | | parallelGateway | ✔ | 并行网关 | | inclusiveGateway | ✔ | 包容网关 | | exclusiveGateway | ✔ | 排他网关 | | subProcess | ✔ | 子流程 | #### 扩展性特点 1. 支持流程 XML 元素自定义 2. 脚本执行引擎扩展框架,默认使用 JUEL,可扩展其他脚本引擎 3. 完整的流程事件机制,包括流程引擎启动事件、活动事件、任务事件等 #### 优势 - 支持高度自由的流程信息查询 - 支持常用关系型数据库(MySQL、PostgreSQL、SQLite 等) - 优秀的事件机制、办理人加载器、缓存管理以及更灵活的数据查询机制 #### 事件机制 事件机制主要由创建前、创建后、完成前、完成后、删除前、删除后组成: | 事件类型 | 类名 | 创建前 | 创建后 | 完成前 | 完成后 | 删除前 | 删除后 | |----------|--------------------------|--------|--------|--------|--------|--------|--------| | 活动事件 | FlowElementActivityEvent | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | 任务事件 | UserTaskEvent | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | 流程事件 | ProcInstEvent | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | 引擎事件 | FlowEngineEvent | ✔ | ✔ | ✔ | ✔ | | | ### 3. flyqiu-form - 表单引擎 flyqiu-form 是一个功能强大的云表单引擎,支持: - 主表与子表设计 - 分组功能 - 统计运算功能 - 灵活的数据模型定义 - 可扩展的表单组件 ## 快速开始 ### 环境要求 - Java 17 或更高版本 - Maven 3.6 或更高版本 - Spring Boot 3.x(如需使用 Spring Boot 集成) ### 安装 将以下依赖添加到您的 Maven 项目中: ```xml com.flyqiu flyqiu 0.1.3.0-SNAPSHOT ``` ### 示例代码 #### 非 Spring Boot 环境下初始化流程引擎 ```java public class BaseTest { /** * 流程引擎实例 */ protected StartFlowEngine flowEngine; /** * 流程模型服务 */ protected ModelService modelService; /** * 流程运行服务 */ protected RunningServices flowRunningService; /** * 历史记录服务 */ protected HistoryService flowHistoryService; /** * 运行时任务服务 */ protected TaskService taskService; public BaseTest() { init(); } /** * 初始化流程引擎 */ private void init() { // 创建流程配置 DefaultFlowConfigImpl defaultFlowConfig = new DefaultFlowConfigImpl(); // 配置bpmn格式转换器 defaultFlowConfig.addBpmnFormat(new FlowableBpmnFormat()); // 初始化默认缓存 defaultFlowConfig.addCache(new FlowLocalCache()); // 初始化默认引擎事件 defaultFlowConfig.addEngineEvent(new TestFlowEngineEvent()); // 初始化任务事件 defaultFlowConfig.addTaskEvents(new TestUserTaskEvent()); // 初始化活动事件 defaultFlowConfig.addActivityEvent(new TestFlowActivityEvent()); // 初始化流程实例事件 defaultFlowConfig.addInstEvents(new TestProcInstEvent()); // 初始化数据源 DataSource dataSource = initSqliteDataSource(); // 创建流程实例 DefaultStartFlowEngineImpl flowEngine = new DefaultStartFlowEngineImpl(dataSource); // 初始化流程引擎 flowEngine.initEngine(defaultFlowConfig); this.flowEngine = flowEngine; modelService = flowEngine.getModelService(); flowRunningService = flowEngine.getProcInstService(); flowHistoryService = flowEngine.getHistoryService(); taskService = flowEngine.getTaskService(); } /** * 初始化sqlite数据源 * @return */ private DataSource initSqliteDataSource() { HikariDataSource dataSource = new HikariDataSource(); dataSource.setJdbcUrl("jdbc:sqlite:../db/sqlite/start_proc_engine.db3?date_string_format=yyyy-MM-dd HH:mm:ss"); dataSource.setDriverClassName("org.sqlite.JDBC"); dataSource.setIdleTimeout(60000); dataSource.setAutoCommit(false); dataSource.setMaximumPoolSize(2); dataSource.setMinimumIdle(1); dataSource.setMaxLifetime(60000 * 10); dataSource.setConnectionTestQuery("SELECT 1"); return dataSource; } } ``` #### 流程任务-办理人加载器(Spring Boot||Spring MVC) ```java @Component public class DefUserLoad implements IFlowCandidateLoad { @Override public String categoryKey() { return "default"; } @Override public String candidateKey() { return "fix"; } @Override public Collection load(UserTask taskElement, ProcRuUserTask userTaskInst, Set value) { System.out.printf("process:候选人加载:userTask:%s,加载候选用户信息%n", userTaskInst.getTaskDefKey()); List result = new ArrayList<>(); DefaultStartFlowUser defaultCandidateUser = new DefaultStartFlowUser(); defaultCandidateUser.setUserId("test"); defaultCandidateUser.setUserName("测试用户"); defaultCandidateUser.setUserKey("test"); result.add(defaultCandidateUser); DefaultStartFlowUser defaultCandidateUser2 = new DefaultStartFlowUser(); defaultCandidateUser2.setUserId("test2"); defaultCandidateUser2.setUserName("测试用户2"); defaultCandidateUser2.setUserKey("test2"); result.add(defaultCandidateUser2); return result; } } ``` ## 文档 更多详细文档请参考各模块的 README 文件: - [flyqiu-common](flyqiu-common/readme.md) - [flyqiu-flow](flyqiu-flow/readme.md) - [flyqiu-form](flyqiu-form/README.md) ## 贡献 欢迎贡献代码!请遵循以下步骤: 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request ## 许可证 本项目采用 Apache License 2.0 许可证。详情请参见 [LICENSE](LICENSE) 文件。 ## 联系方式 - 项目地址:https://gitee.com/clwx/flyqiu - 作者:玄狼侵袭 - 邮箱:1125302022@qq.com ## 致谢 感谢所有为 FlyQiu 项目做出贡献的开发者和用户!