flexmodel/flexmodel-engine at main · flexmodel-dev/flexmodel

Java Maven License Build Status

Flexmodel 是面向下一代应用程序的统一数据访问层解决方案。它以 flexmodel-engine 为核心,提供了一站式的数据建模、服务编排、任务调度、文件存储和身份认证能力,旨在为开发者提供开源、灵活且高度可定制的后端基础架构。

🚀 核心支柱

Flexmodel 实现了 Supabase 核心功能的中国化适配与增强:

  • 📊 统一数据管理 (Data) - 运行时动态建模,支持 10+ 种主流及国产数据库,屏蔽底层差异。
  • 服务编排 (Service Orchestration) - 基于可视化流程的业务逻辑编排,实现低代码后端逻辑扩展。
  • 任务调度 (Task Scheduling) - 内置分布式任务触发与调度系统,支持 Cron、延迟任务及事件触发。
  • 📂 文件存储 (File Storage) - 抽象化的文件存储接口,无缝集成 S3、OSS 及本地存储系统。
  • 🔐 身份认证 (Identity Authentication) - 完整的 RBAC 权限体系、多租户支持及基于 JWT 的安全验证。

✨ 引擎特性

作为 Flexmodel 的核心引擎,flexmodel-engine 提供以下关键能力:

  • 统一 DSL - 使用统一的领域特定语言进行跨数据库操作,降低开发成本。
  • 动态数据建模 - 运行时动态创建和修改数据模型,无需重启服务或修改代码。
  • 智能代码生成 - 自动生成 DAO、DSL、Entity 及 API 模板,加速开发流程。
  • GraphQL 支持 - 内置 GraphQL 查询和变更支持,提供灵活、高效的数据访问接口。
  • 国产化适配 - 深度支持达梦 (DM)、金仓 (GBase) 等国产数据库,满足信创要求。

🏗️ 架构设计

Architecture_Design

🔧 核心模块

  • flexmodel-core: 核心引擎模块,提供基础的数据访问、模型管理及多数据源适配功能。
  • flexmodel-codegen: 代码生成模块,自动生成 DAO、DSL、Entity 等代码。
  • flexmodel-graphql: GraphQL 支持模块,提供标准的 GraphQL 查询和变更功能。
  • flexmodel-maven-plugin: Maven 插件,将代码生成能力集成到 Maven 构建流程中。

🚀 快速开始

环境要求

  • Java 21+
  • Maven 3.6+
  • 支持的数据库(MySQL、PostgreSQL、SQLite 等)

Maven 依赖

<dependency>
    <groupId>dev.flexmodel</groupId>
    <artifactId>flexmodel-core</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

基本使用

// 创建 SessionFactory
SessionFactory sessionFactory = SessionFactory.builder()
    .setDefaultDataSourceProvider(new JdbcDataSourceProvider(dataSource))
    .setCache(new ConcurrentHashMapCache())
    .build();

// 创建 Session
try (Session session = sessionFactory.createSession("mySchema")) {
    // 加载模型定义
    sessionFactory.loadJSONString("mySchema", jsonSchema);
    
    // 执行数据操作
    DataOperations operations = session.getDataOperations();
    List<Map<String, Object>> results = operations.query("SELECT * FROM users");
}

📖 使用指南

1. 数据模型定义

使用 JSON 格式定义数据模型:

{
  "objects": [
    {
      "type": "entity",
      "name": "User",
      "comment": "用户表",
      "fields": [
        {
          "type": "INT",
          "name": "id",
          "identity": true,
          "autoIncrement": true
        },
        {
          "type": "STRING",
          "name": "name",
          "length": 100,
          "nullable": false
        }
      ]
    }
  ]
}

2. JSON 逻辑表达式

支持复杂的逻辑过滤条件:

{
  "and": [
    { ">": [{"var": "age"}, 18] },
    { "==": [{"var": "status"}, "active"] }
  ]
}

3. GraphQL 查询

query {
  users {
    id
    name
    email
  }
}

🔌 数据库支持

数据库 状态 特性支持
MySQL / MariaDB / TiDB 完整支持
PostgreSQL 完整支持
Oracle / SQL Server 完整支持
SQLite 完整支持
MongoDB 完整支持
达梦 (DM) / 金仓 (GBase) 深度支持
DB2 基础支持

🧪 测试

# 运行所有测试
mvn test

# 运行特定模块测试
mvn test -pl flexmodel-core

# 运行集成测试
mvn test -pl integration-tests

🤝 贡献指南

我们欢迎所有形式的贡献!请查看我们的 贡献指南

📄 许可证

本项目采用 Apache License 2.0 许可证。


FlexModel - 让后端开发更简单、更高效、更灵活!