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、dbVisitor6.8.2、Hasor5.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:架构、接口与数据迁移指南。