# 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/`,**产物不存在直接报错、不静默降级黑盒**(以免交付机把黑盒当自建引擎误发)。 ```bash 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 间的一致性)。