File Starter
File Starter 为开发者提供四项核心能力:
本文侧重开发者用法与 API 级示例。
代码结构
excel/export/strategy:导出策略选择与具体导出实现excel/export/support:导出共享支撑组件,如数据获取、模板解析、写出、上传与自定义导出钩子excel/imports:导入流水线、处理器工厂、失败收集、持久化与自定义导入钩子excel/style:共享的 Excel 样式处理器pdf/:PDF 文档生成、Noto 字体提供,以及 PDF 签名相关辅助能力(Word、PDF、签名)word/:Word 文档生成
依赖
<dependency>
<groupId>io.softa</groupId>
<artifactId>file-starter</artifactId>
<version>${softa.version}</version>
</dependency>前置条件
- 需要对象存储(Minio 或其它受支持的 OSS)用于存放模板文件和生成文件。
- 使用异步导入时需接入 Pulsar。
- PDF 生成(RICH_TEXT 文档模板)需要 Noto 字体。本地可执行
sh deploy/install-font.sh安装。 - 数据库中需包含文件元数据表及 file-starter 表:
- 导入:
ImportTemplate、ImportTemplateField、ImportHistory - 导出:
ExportTemplate、ExportTemplateField、ExportHistory - 文档:
DocumentTemplate - 签名:
SigningRequest、SigningDocument
- 导入:
配置
MQ 主题(异步导入)
mq:
topics:
async-import:
topic: dev_demo_async_import
sub: dev_demo_async_import_subOSS 配置
oss:
type: minio # minio | aliyun。MinIO 客户端同样可以对接 AWS S3
endpoint: http://minio:9000 # 服务端连接用的地址
presign-endpoint: http://localhost:9000 # 浏览器解析用的地址;留空则回落 endpoint
access-key: minioadmin
secret-key: minioadmin
bucket-name: dev-demo
region: # 留空回落 us-east-1;指向 AWS S3 时必填
sub-dir: # 可选,桶内再套一层前缀
url-expire-seconds: # 预签名 URL 有效期;留空回落 300 秒桶不会被自动创建 —— 客户端直接向桶上传,桶不存在时表现为第一次上传抛 NoSuchBucket。建桶属于部署的前置步骤。
endpoint 与 presign-endpoint
预签名 URL 是交给浏览器去取的,因此它携带的 host 必须是浏览器能解析的地址,而这未必是服务端连接用的那个。服务端通过容器网络 hostname http://minio:9000 连 MinIO、或通过 ECS 内网端点 oss-<region>-internal.aliyuncs.com 连阿里云 OSS 时,交给前端的链接会指向这些内网地址,下载在浏览器侧失败,服务端日志里什么都看不到。
host 参与 SigV4 签名(X-Amz-SignedHeaders=host),所以签完再改域名会让签名失效 —— 必须一开始就按对外地址签。presign-endpoint 正是为此而设:endpoint 负责连接,presign-endpoint 负责签名。endpoint 本身已是公网地址时(AWS S3、公网阿里云端点)留空即可,这也是多数情况。
存储路径策略
- 普通路径:
modelName/uuid/fileName - 多租户路径:
tenantId/modelName/uuid/fileName
最后更新于