跳到主要内容

v5.0.0(待发布)

5.0.0 是自 4.2.5 以来的一次主要版本升级。Dataway 完成重写,形成独立核心、框架整合、元数据存储和可替换控制台;DataQL 重构引擎与扩展接口,SQL 执行器重新实现。应用的依赖、配置、Java 接口和存储结构需要配套迁移。

<dependency>
<groupId>net.hasor</groupId>
<artifactId>dataway-embedded</artifactId>
<version>5.0.0</version>
</dependency>

Web 应用按需选择 Spring、Solon 或 Hasor 整合模块,SQL 执行器和元数据存储单独引入。

更新内容​

Dataway 重写​

  • 核心从 Hasor 框架中解耦,通过 DatawayConfig 配置、Dataway 创建服务。Spring、Solon、Hasor 分别接入宿主容器与 Web 生命周期。
  • 拆分业务 API、管理 API、控制台资源和文档四个 Web 入口,可独立配置路径;业务 API、管理和文档入口按需开启。
  • 管理与执行服务分离:AdminService 提供草稿、状态、发布、停用、删除和历史查询;ApiService 支持 Java 按请求方法与路径或 API ID 调用已发布且启用的接口。
  • 保留草稿、发布版和历史记录的管理方式,增加版本冲突检查与批量原子写入。路由按请求方法与路径共同区分,修改草稿后需再次发布才对外生效。
  • 重建身份鉴权:应用负责登录,IdentityProvider 提供身份,AuthorizationCheck 校验操作;预设无权限、API 访问、控制台只读和开发管理身份。
  • 执行扩展改为 AdminInterceptor 与 ApiInterceptor,支持前后处理、异常处理和短路返回。上下文提供目标接口、操作与身份,API 拦截器还可区分 HTTP、调试和 Java 调用。
  • API 调用、控制台调试与 Java 调用统一使用 DatawayEngine、DatawayQuery,完成参数准备、脚本执行和结果处理。

元数据与事务​

  • JDBC 与 Nacos 提供者独立为 dataway-meta-jdbc、dataway-meta-nacos,应用通过 ApiDataAccessLayer 接入所选存储。
  • DatawayConfig 支持表、字段及 Nacos 实体名称映射;SCRIPT 统一保存原始脚本,SQL 脚本在创建查询时按片段类型编译。
  • JDBC 提供 MySQL、PostgreSQL、Oracle、SQL Server、H2 建表脚本;默认以独立事务完成批量写入,可通过框架的 JdbcExecutor 适配器加入宿主事务。
  • Nacos 使用配置快照和 CAS 进行版本一致性控制,支持读取原有布局进行迁移。
  • SQL 业务连接与元数据事务分别配置。Spring、Solon、Hasor 提供事务适配,将普通 SQL、tran.* 函数与宿主应用事务接通。

请求、结果与控制台​

  • 统一解析 JSON、URL 编码表单和 multipart 请求,支持多值表单、文件上传及请求参数包装;上传缓存可配置内存阈值与临时目录,请求结束后清理资源。
  • Web 函数接入当前请求与响应,提供 Header、Cookie 读写及上传文件访问;通过查询上下文传递 HTTP 对象并在执行后清理。
  • 增加 BinaryModel,支持二进制数据参与脚本执行及文件响应。
  • 将响应输出统一为 ResultHandler,内置 Structure、Raw Value、CSV、Text、Verify Code;支持默认处理器、处理器默认配置和 API 级选项,自定义处理器可控制状态、Header 与正文。
  • 迁移并升级控制台组件,保留编辑、调试、发布和历史操作;结果区支持 JSON、文本、表格、图像预览及文件下载。
  • 控制台资源独立为 dataway-embedded-web,支持单独构建、替换及前后端分离部署,通过 initializer.js 配置后端地址;开发支持 Mock 与代理模式。
  • 重写文档生成,提供 OpenAPI 3.0 和 Swagger 2.0,只导出已发布且启用的 API,可通过 Swagger UI 调用。

DataQL 引擎​

  • 引擎独立为 dataql-engine,通过 HostConfiguration → QueryManager → QueryBuilder → Query 构建查询,支持独立使用和 JSR-223。
  • 重整 Finder、资源加载、应用对象导入、函数库和外部片段扩展;通过 SPI 发现扩展,通过宿主附件提供共享服务。
  • UDF 参数统一为 UdfParams,setHint(String, Object) 支持传递对象引用;CustomizeScope 提供自定义作用域,Dataway 将请求参数与默认参数合并。
  • 常规函数库归入引擎,Web 函数由 Dataway 提供,SQL 与事务函数由 SQL 执行器提供,按所需模块引入。
  • 修正运算符优先级与短路求值,修复注释、负数、科学计数法、字符串转义、片段参数及嵌套函数退出行为。
  • 修复 Hint 传递、查询克隆、Lambda 作用域恢复、集合索引及回调、字符串函数和 HMAC 算法选择。
  • 修复字符、枚举、数值布尔转换与缺失字段读取,校正数值宽度 Hint 默认值。

SQL 执行器​

  • 独立提供 dataql-sqlproc,基于 dbVisitor 的动态 SQL、类型处理与方言能力重新实现,支持 SQL、XML 标签、批量执行、存储过程、多结果集与分页。
  • ConnectionProvider 统一提供默认或命名数据源连接;TransactionalProvider 扩展事务能力,支持传播行为、隔离级别和事务函数。
  • 提供 SQL 执行拦截器、公共片段、规则、类型处理器和分页方言扩展。
  • 完善位置参数、名称参数、文本替换、规则传参与参数选项,增加 CASE/WHEN/ELSE、PAIRS 规则;修复嵌套表达式、引号、逗号和参数符号转义解析。
  • 补充 Hive、ClickHouse、MongoDB、Elasticsearch、Milvus 等方言,修复分页信息同步及重复查询。非关系型数据源需使用对应的 dbVisitor JDBC 驱动。
  • 类型处理按 DataQL 数据模型调整,支持列表绑定 JDBC 数组、JSON、二进制和向量转换;修复 CHAR/NCHAR 截断、结果类型识别及时间类型时区偏移。
  • 简化 TypeHandler,保留显式注册与参数级处理器配置,清理不适用的 Java 类型映射与处理器;修复 XML trim 裁剪及 SQL Hint 默认值。

工程、示例与文档​

  • 仓库从 Hasor 中独立,使用 Gradle 构建;引擎、SQL、控制台、框架整合与存储按模块发布,示例工程使用 Maven。
  • JSON 工具统一使用 Jackson;依赖升级至 Cobble 5.0.4、dbVisitor 6.8.2、Hasor 5.3.0。SQL 执行器内置并重定位 OGNL,减少应用依赖冲突。
  • 提供 Spring、Solon、Hasor、Spring + Nacos 及 DataQL 数据转换示例,展示登录鉴权、多数据源、事务、表单上传、结果处理和 Swagger UI。
  • 补充引擎、DAL、函数、存储和 Web 请求测试;三大框架使用 Boot 启动真实服务,通过 HTTP 验证整合能力,增加可执行文档示例测试。
  • 重整中英文文档、SQL 使用手册、博客与迁移指南,提供 llms.txt 文档索引。

升级说明​

  • 依赖与配置:原 hasor-dataway、hasor-dataql、hasor-dataql-fx 的能力按新模块拆分。替换相关依赖,按框架整合重新配置入口、存储和身份,勿混用两套运行时。
  • Java 与 SPI:管理使用 AdminService,调用已发布 API 使用 ApiService;原执行及序列化 SPI 分别迁移到拦截器和结果处理器。登录接入改用 IdentityProvider。
  • 引擎扩展:调整 UDF 的 UdfParams 签名以及 Finder、片段和宿主配置入口;原始脚本重新编译,不复用先前生成的 QIL。
  • 元数据:备份后迁移,保留 API ID、原始脚本和发布历史,补齐版本及路由约束。原始脚本存于 SCRIPT_ORI 时可配置字段映射,Nacos 存储布局变化需单独处理。
  • 响应配置:通过 defaultResultHandler 和 API 的 resultHandler 选项选择输出;响应模板配置归入 Structure 处理器。核对默认结构、失败响应、二进制输出及自定义处理器。
  • SQL 扩展:TypeHandler 改用 Object 参数与返回值,AbstractTypeHandler<T> 保留泛型;使用 TypeHandlerRegistry.register(...) 注册,移除映射注解与 javaType 参数选项。

完整接口对照、配置示例及数据迁移步骤见新版 Dataway:架构、接口与数据迁移指南。