# flyqiu **Repository Path**: clwx/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**: 1 - **Forks**: 0 - **Created**: 2024-11-02 - **Last Updated**: 2026-01-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # flyqiu-common 工具包 统计计算,集合处理,字符串锁工具包 # flyqiu-flow 工作流引擎 flyqiu-flow 是一个具有较强扩展性的轻量级流程引擎,支持基于flowable或activit 流程引擎导出的bpmn配置。 目前支持的常用的bpmn节点元素如: 节点元素 | 支持 | 备注 ------------------|----|------- startEvent | ✔ | endEvent | ✔ | userTask | ✔ | 支持多实例 parallelGateway | ✔ | inclusiveGateway | ✔ | exclusiveGateway | ✔ | subProcess | ✔ | 扩展性: 1. 支持流程xml元素自定义。 2. 脚本执行引擎扩展框架默认使用(juel)可扩展其他脚本引擎。 3. 完整流程事件机制,如:流程引擎启动事件,活动事件,任务事件等等。 ### 优势 支持高度自由的流程信息查询 支持常用关系型数据库如(mysql,pgsql,sqlite等) 优秀的事件机制,办理人加载器,缓存管理,以及更灵活的数据查询机制 ### 事件 事件机制主要有 创建前,创建后,完成前,完成后,删除前,删除后组成 事件类型 | class | 创建前 | 创建后 | 完成前 | 完成后 | 删除前 | 删除后 ------|--------------------------|-----|-----|-----|-----|-----|----- 活动事件 | FlowElementActivityEvent | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ 任务事件 | UserTaskEvent | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ 流程事件 | ProcInstEvent | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ 引擎事件 | FlowEngineEvent | ✔ | ✔ | ✔ | ✔ | | 快速开始: 非springboot 环境下 ````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(); } /** * 初始化mysql源 * @return */ private DataSource initMysqlDataSource() { HikariDataSource dataSource = new HikariDataSource(); dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/start-proc-engine?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&allowMultiQueries=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true"); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUsername("root"); dataSource.setPassword("xxxxx"); dataSource.setIdleTimeout(60000); dataSource.setAutoCommit(false); dataSource.setMaximumPoolSize(5); dataSource.setMinimumIdle(1); dataSource.setMaxLifetime(60000 * 10); // dataSource.close(); dataSource.setConnectionTestQuery("SELECT 1"); return dataSource; } /** * 初始化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; } } ``` # flyqiu-form 表单引擎 云表单功能:支持主表,子表,分组功能,统计运算