Skip to content

Rust 更新日志

当前版本 v1.0.12 · crates.io(jeeflow-core / jeeflow-repository-sqlx / jeeflow-persist / jeeflow-facade 四 crate,独立 1.0.x 版本线)· 仓库 mldong/jeeflow-rust · Releases 版本日期以本仓 git tag 为准;跨语言对齐脉络见 更新记录总览

Rust 引擎(jeeflow-rust)为联邦第六个成员,独立版本线,API 对齐统一规范。2026-08-25 首发 crates.io v1.0.5(v1.0.0–v1.0.4 为 2026-08-24 联调期 tag,因 crates.io tag 已占而跳过;crate 间依赖 version="1.0.0" caret 兼容,1.0.5 直接可用)。发布通道:四 crate 拓扑序 cargo publish(core → repository-sqlx → persist → facade),CI Release 由 tag push 触发。

v1.0.12 — 2026-09-10

  • 修复 salvo S15「指定下一节点处理人」双缺口:① facade collect_static_candidate_actors 静态候选误收节点 assignee——assignee 是默认处理人(运行时落 task.actor_id)非候选池成员,Java/Python/Go 参考实现均只取 candidateUsers+candidateGroups;误收致 candidatePage 短路 user_search 全量搜索,弹窗只剩默认处理人。删 assignee 收集分支。② core resolve_assignee 优先级1 只取字符串形态,前端 UserSelect multiple 提交 JSON 数组取不到 → 落 assignee 字面量、指定不生效;对齐 Python _resolve_actors 双形态(数组逐项 + 字符串逗号分隔)。
  • 测试 双回归单测负向红/修复绿;workspace 全绿 core 129 / facade 96 / persist 33 / sqlx 28(Cargo.lock 顺带从过期 1.0.8 修正)。
  • 集成栈 mldong-salvo-jeeflow pin 1.0.11 → 1.0.12(真拉 crates.io,31 单测绿);干净重建候选 c5871ce6 全 gate(baseL2 11/11 + gate26 26/26 + wf-L3 18 passed/1 skipped 含 S15 绿 + base-L3 零新增)后原样晋升生产,生产冒烟 wf-L3 全绿,公网 demo 抽查健康。坑:crates.io api 端点对默认 curl UA 返回 403(Fastly 拦截),回拉验证需带自定义 UA 或直拉 static.crates.io。

v1.0.11 — 2026-09-09

  • 修复 五语言 SQL 仓聚合水合:find_instance_by_idjeeflow-repository-sqlx)此前硬编码 tasks: vec![],门面 processInstance/detail 的 tasks/activeTaskList 恒空(gate26 L2-12 门禁真根因,非会签语义)。二次查 wf_process_task(内联查询 + 自由异步 fn tasks_from_rows:批查 actor、保行序;不套 block_on 避免嵌套 block_in_place)水合任务副本,语义对齐 Java findTasksByInstanceId / PHP PdoProcessRepository / C# FindTasksInternalAsync(聚合水合口径)。update_instance 本就不级联任务(仅实例行),withdraw 逐任务 update_task 路径不变。memory 仓本就水合(基线正确,未动);引擎核心会签语义未动。
  • 测试 T0 新增 test_mysql_i110_find_instance_by_id_hydrates_tasks(真实 MySQL,独立 9008xx id 段——C8 占 9004xx,cargo test 并行线程共用 160 DB 会撞主键);workspace 全绿:core 129 / facade 94 / persist 33 / sqlx 28。
  • 集成栈 mldong-salvo-jeeflow pin 1.0.10 → 1.0.11 随 P3 收口(base+1,进行中)。

v1.0.10 — 2026-09-06

  • 修复 分页双重分页:facade 6 个分页 action(processDefine/page、processInstance/page、ccList、todoList、doneList、processDesign/page)的 m_ 过滤 + 分页切片下推仓储(memory/sqlx 消费 PageQuery.filters,core 新增 filter_sql 构造器 + 列白名单,对齐 java pushdown 与仓内 processSurrogate/page 正确形态)。两大主症状消除:recordCount = 总记录数(此前虚低为本页行数)、pageNum≥2 不再恒空;m_ 过滤下 total/rows 口径自洽。
  • 测试 新增多页/翻页/m_ 过滤跨页单测;T0 cargo test --workspace(core 129 / facade 94 / persist 33 / sqlx 27)+ T1 mysql-smoke(连 160)全绿;公网八语言 processDefine/page pageNum=2&pageSize=3 同参抽检全部 15/5/3(修复前 rust 3/1/0)。
  • 集成栈 mldong-salvo pin 1.0.9 → 1.0.10 随本批收口(集成仓按 base+1 模式 squash 回薄壳单 commit 10c8248cargo build+28 单测绿后 push feature/jeeflow)。

v1.0.9 — 2026-09-05(crates.io 拓扑序发布于 09-05,tag 09-04)

  • 修复.3 兑现:execute_and_jump_to_end_async(submitType=2 驳回路径)在 update + abandon 后直接返回 Ok(Vec::new()),未 fire 任何事件——违反 spec 合并派「办结+拒绝都 fire ProcessInstanceEnd(2)」。补 fire ProcessInstanceEnd(对齐内联办结路径),salvo 集成层监听器 ProcessInstanceEnd → 发起人 NOTICE「流程已办结」由此恢复;新增回归测试(红证 + cargo test --workspace 绿)。

v1.0.8 — 2026-09-04

  • 新增 stats 契约对齐 A–E(wire 裸数组 / stateIn 生效 / trend 缺参报错 / define avg 口径 / define group 4 列映射,与 Java 参考实现逐字段一致)。
  • 新增 CC_CREATE 事件补齐 = CcCreate(4)(P0 抄送知会事件,六语言枚举对齐)。
  • 修复 publisher 单监听器异常兜底(P2,一个监听器 panic 不打断其余监听器,六语言同语义)。

v1.0.7 — 2026-09-01(crates.io 发布成功,tag 09-02)

  • 修复「wf 流程消息写路径缺失 / messagePage 恒空」的 salvo 栈引擎侧根因ProcessTaskStart 事件在 create_task/create_node_tasks 的 3 处落库前 fire(此时 task_id=0),监听器 find_task(0) 落空 → 静默丢,新待办 TODO 从不发出。统一改为在 persist_tasks 落库(save_task + add_task_actor 之后)fire 一次(每任务每操作一次)。与 Java CreateTaskHandler 1.8.20 / go/python/node 1.8.23「落库后 fire」同一 批次对齐。
  • 测试 新增回归 test_task_start_event_fires_after_persist:红证 + 绿证(cargo test --workspace 253 tests 0 fail)。
  • 集成栈 mldong-salvo pin 1.0.6 → 1.0.7 随本批收口(Cargo.toml+Cargo.lock 重锁,cargo check 全绿)。

v1.0.6 — 2026-08-30

  • 修复 processSurrogate/remove 兼容 {ids} 批量:此前只读单数 id → 报「缺少id参数」,「我的委托」页删除不可用。改用本仓现成助手 arg_ids()(数组优先 / 单 id 兼容 / 含 null 报非法)。
  • 测试 A 档 2 例 + 6 类负向载荷;T0 cargo test --workspace core 116 / facade 71 / persist 33 / sqlx 27 全绿;T1 SKIP_MYSQL=0(连 160)真库绿 + 假主机反证(管道有效)。
  • ⚠️ 负向文案仍为 Rust 既有的「缺少id参数」,与其余五语言「id 缺失或非法」存在 drift(已记)。

v1.0.5 — 2026-08-25(crates.io 首发)

首个 crates.io 正式版本。

  • 发布 四 crate 拓扑序发布,T0 cargo test --workspace 245 全绿 + T1 mysql-smoke 27 全绿(真库 M1–M4)。
  • 五语言对齐缺口闭环(bootX / salvo 集成反馈):
    • resume mergeVarsexecute_task / jump / jump_to_end 三路径以实例 variables 为底、本次提交覆盖(对齐 Go),发起时 f_* 表单字段 resume 可达。
    • 组织取人 7 个 AssignmentHandler 实装:Applicant / Dept(×main)Leader / TaskRoleAssignee 等,注册时捕获 User/OrgUserProvider,空结果跳过节点(对齐 Java)。
    • FormFieldAssignee 查找序f_ 前缀优先 → 裸名回落 → _NN 后缀去后缀(对齐 Go/Java)。
    • 发起抄送 f_ccActors 数组/字符串双形态解析(对齐 Go)。
    • facade args_to_flow_data 数组/对象原样透传(旧兜底 to_string() 把多选 ApiSelect 的 JSON 数组字符串化——L3 S6 根因)。
    • 雪花 EPOCH 对齐 1288834974657(2010-11-04,同 Go/Java/Python/Node 联邦 ID 空间)。
    • persist 语义对齐 Java/Go:状态字段探测错误传播、information_schema CAST、create_time 落库(8 处 INSERT 补审计列)。
  • SPEC 语言指南 languages/rust/(快速开始 / 引擎 API / 流程定义 / SPI / persist / salvo 集成 / demo)随本版本入库文档站。
  • 集成验收:mldong-salvo(Salvo 0.76 + SeaORM 1.1)薄集成栈一键部署 L0–L2 19/19 + L3 14 过 / 1 固定 skip(S12)/ 0 失败。

v1.0.0–v1.0.4 — 2026-08-24

  • 联调期内部 tag(UI 契约对齐、种子联调、startAndExecute/submitType 分发),未发布 crates.io,被 v1.0.5 取代。

jeeflow · 轻量级多语言工作流引擎