You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在animate_process中展示未完成流程的当前状态?

解决processanimateR强制跳转未完成案例到END节点的问题

核心思路

processanimateR默认会给所有案例自动补全到END节点,不管流程是否真的完成。要让未完成案例停留在当前活跃节点,关键是预处理事件日志,移除未完成案例对应的END节点,或者直接不让这些案例生成END事件。

具体步骤与代码示例

1. 识别未完成案例

先从日志里筛选出没有到达最终结束事件(比如你的场景里的closed,或示例里的Check-out)的案例:

library(processanimateR)
library(eventdataR)
library(dplyr)

# 加载示例数据
data(patients)

# 找出已完成流程的案例(以Check-out为结束事件)
completed_cases <- patients %>%
  filter(event == "Check-out") %>%
  pull(case_id) %>%
  unique()

# 未完成案例就是不在completed_cases里的
incomplete_cases <- setdiff(unique(patients$case_id), completed_cases)

2. 预处理日志,移除未完成案例的END节点

processanimateR会自动给每个案例添加END事件,我们需要把未完成案例的END事件删掉:

# 处理日志:保留已完成案例的所有事件,未完成案例只保留到最后一个实际事件
processed_log <- patients %>%
  group_by(case_id) %>%
  # 对未完成案例,过滤掉END事件;已完成案例保留所有
  filter(!(case_id %in% incomplete_cases & event == "END")) %>%
  ungroup()

3. 重新生成动画

用处理后的日志调用animate_process,此时未完成案例会停留在它们最后一个实际发生的节点(比如示例里的Triage and Assessment):

animate_process(processed_log, 
                mode = "relative", 
                jitter = 10, 
                legend = "color", 
                mapping = token_aes(color = token_scale("employee",scale = "ordinal", range = RColorBrewer::brewer.pal(7, "Paired"))))

针对你的业务场景调整

把上面代码里的Check-out换成你日志里的结束事件closed,就能适配你的数据:

# 替换成你的结束事件
completed_cases <- your_log %>%
  filter(event == "closed") %>%
  pull(case_id) %>%
  unique()

# 后续步骤和上面一致

内容的提问来源于stack exchange,提问作者data_cones_goes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:22:15