刘光辉
昨天 bb638871a7fb692d80f1b7a758f991dc0879002c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 应用服务器
server:
  tomcat:
    uri-encoding: UTF-8 #tomcat编码
  port: 31000
 
# ═════════════════════════════════════════════════════════════════════════════
# 这份是 **jar 内的出厂默认值**,只在「IDE 直跑源码 / java -jar 裸跑」时生效。
# 容器里它会被外部 config 覆盖:docker/flow-engine/conf/application-dev.yml
#   (Dockerfile 的 `COPY conf/ config/` 落在 WORKDIR 下,Spring Boot 外部 config/
#     优先级高于 jar 内 classpath,且是**按属性合并**——逐属性覆盖而非整体替换)
#
# 2026-08-03 改:原本是 JNPF 出厂的 MySQL 模板(jdbc:mysql://127.0.0.1:3306,root/123456)。
# 本项目 7-20 已整体迁到 PostgreSQL,那份默认值会让 IDE 直跑时**静默连到一个完全错误的库**
# ——不报错,只是连错。这正是 2026-08-03「找不到流程模板,请重新发布该流程」故障的形状:
# 宿主 flowApi 用着 MySQL 配置写了半个月,链路上没有任何一处报错,直到测试环境点不开流程。
# 注意本 jar 里 mysql-connector-j 与 postgresql 驱动**并存**,所以那份 MySQL 配置是真能连上的。
#
# 故改为与实际拓扑一致的 PG,并遵守两条:
#   ① url 默认值用**容器服务名** cx-postgres(与 compose 默认一致)——不硬编码任何真实 IP,
#      交付给客户的 jar 里不该出现我方地址;IDE 直跑时它解析不了,会明确报
#      UnknownHostException 而不是静默连错库,提示开发者去配 FLOW_DB_URL。
#   ② password **不给默认值**——缺了就启动失败(fail fast)。凭据见 .env.tencent(gitignored)。
#
# ⚠️ 引擎库必须与业务库同源(同一个 PG 实例)。业务库 workflow_template.f_flowable_id
#    跨库引用引擎库 act_re_deployment.id_,两者不同源 = 流程模板全线失效。
#    背景与实测数据:tasks/flow-engine-db-unify-plan.md
# ═════════════════════════════════════════════════════════════════════════════
 
# 注意:
# 若使用 PostgreSQL 默认 public 模式无需配置 database-schema;指定模式时才需要
#flowable:
#  database-schema: jnpf_flow
 
spring:
  datasource:
    driver-class-name: org.postgresql.Driver
    # 【必须显式指定 type】本 jar 内 MySQL 与 PG 驱动并存;不显式声明时
    # Spring Boot 会按 classpath 自动挑选,历史上出过「MySQL 驱动去连 postgresql:// URL」
    # 的事故(详见 docker/flow-engine/conf/application-dev.yml 同位置注释)。
    type: com.zaxxer.hikari.HikariDataSource
    url: ${FLOW_DB_URL:jdbc:postgresql://cx-postgres:5432/jnpf_flow}
    username: ${FLOW_DB_USER:jnpf_flow_app}
    # 无默认值 = 不注入就启动失败,绝不静默连到错误的库
    password: ${FLOW_DB_PASSWORD}
    hikari:
      # 共享库、多环境并存,单机池要小(PG 角色 jnpf_flow_app 有 CONNECTION LIMIT 配额)。
      # 容量预算见 docs/db-connection-pool-guide.md。
      maximum-pool-size: 6
      minimum-idle: 1
      connection-timeout: 5000   # 库满时快速失败,不无限挂起拖垮 Flowable 采集线程
      keepalive-time: 120000     # 空闲连接保活,防被 PG/防火墙静默断开
      max-lifetime: 1800000      # 连接最长寿命 30min,定期轮换避免老化
 
# 其余数据库(MySQL / SQLServer / Oracle / 达梦 / KingbaseES)的出厂样例段已删除:
# 本项目数据库拓扑已定为 PostgreSQL(docs/db-connection-pool-guide.md 是唯一权威),
# 留着那些 127.0.0.1 的假配置只会成为「静默连错库」的诱饵。
# 需要时从 git 历史取回本文件 2026-08-03 之前的版本。