编辑 | blame | 历史 | 原始文档

jnpf-flow-engine 镜像(JNPF 独立流程引擎)

它是什么

jnpf-workflow-admin-1.0.0-RELEASE.jar = 官方 Flowable 7.0.1 引擎 + JNPF 定制层。
原为无源码黑盒 jar;**2026-07-17(任务 B)已反编译重建为仓库内自有源码工程 jnpf-flow-engine/**
(41 个 Java 类 + 官方 liquibase 4.27.0 源码打 3 处达梦补丁,详见 jnpf-flow-engine/README.md),
本镜像现打包该自有工程的构建产物,引擎侧 bug 可修、Flowable 版本可升。

REST 层:admin/controller/{Definition,Instance,Task}Controller(/api/Flow/* 27 端点)+
admin/handle/GlobalExceptionHandler + admin/result/Result({success,code,msg,data} 包装)。

被 jnpf-flowable(30004) 经 config.FlowDomain(Nacos system-config.yaml,值 http://jnpf-infra:31000)
以固定 URL 直连调用(客户端代码见 jnpf-flowable-entity/.../FlowAbleUrl.java,19 个调用点)。

不能换官方 flowable-rest 镜像:调用的是上述自定义 API(路径+包装格式),与官方 REST API 不兼容。

重建镜像

自 2026-07-17(任务 B)起,jar 取自**自有源码工程** jnpf-flow-engine/(黑盒反编译重建,
可修可升,见 jnpf-flow-engine/README.md)。prepare-context.sh 取源规则:默认用自建产物
jnpf-flow-engine/target/,**产物不存在直接报错、不静默降级黑盒**(以免交付机把黑盒当自建引擎误发)。

make flow-engine                     # = mvn -f jnpf-flow-engine/pom.xml clean package(构建自建产物)
docker/flow-engine/prepare-context.sh   # 暂存 jar 到 context/(产物缺失会报错提示)
docker compose build cx-flow-engine   # 在仓库根执行
# 以上三步等价于 `make prepare && docker compose build cx-flow-engine`

回滚到黑盒 jar(**必须显式**,脚本不再自动降级):
FLOWAPI_JAR=~/Infra/jnpf/flowApi/jnpf-workflow-admin-1.0.0-RELEASE.jar ./prepare-context.sh。

配置

  • conf/application-dev.yml 烧录进镜像 /opt/flow-engine/config/:数据源已切 PG 的 jnpf_flow 库
    (随 postgres_pgdata 卷,70 张 ACT_* 表,Flowable 7 同版本 schema,启动时自动校验)
  • 环境变量覆盖(默认不用设,勿设空值):FLOW_DB_URL / FLOW_DB_USER / FLOW_DB_PASSWORD
  • 引擎不连 Nacos、无 Sa-Token 校验(调用方透传的 Authorization 头仅透传)

端口与健康检查

  • 31000:HTTP API + springdoc(/doc.html、/v3/api-docs)
  • healthcheck 用 /v3/api-docs(无 actuator)

交付

docker save cx/flow-engine:1.0.0 | gzip > cx-flow-engine-1.0.0.tar.gz,现场 docker load(amd64)。
宿主 ~/Infra/jnpf/flowApi 保留作回滚锚点(其 application-dev.yml 仍指向远程 MySQL,
回滚时注意数据面在 PG/MySQL 间的一致性)。