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

AnyLogic流程模拟能否生成并导出符合流程挖掘的XES事件日志?

在AnyLogic中生成流程挖掘用XES事件日志的方法

完全可以实现,AnyLogic支持自定义输出符合XES标准的事件日志,针对新手的具体操作步骤如下:

  • 先理清XES核心结构
    XES是XML格式的日志,核心是「日志(log)-轨迹(trace,对应单个流程实例)-事件(event,对应流程中的每一步)」的层级,每个元素可携带属性(比如时间戳、参与资源、活动名称)。先明确你要记录的关键信息:比如每个流程实例的唯一ID、活动名称、发生时间、用到的资源等。

  • 在流程节点埋点记录事件
    在模型里的关键流程节点(比如服务块的进入/退出、资源分配完成时)添加代码,把事件信息存到一个全局列表里:

    1. 先在模型的「全局变量」里定义存储容器:ArrayList<HashMap<String, Object>> eventLog = new ArrayList<>();
    2. 比如在某个服务块的On exit事件中,添加记录代码:
      HashMap<String, Object> event = new HashMap<>();
      event.put("concept:name", "订单审核"); // 活动名,XES标准属性
      event.put("time:timestamp", new Date()); // 事件发生时间
      event.put("case:concept:name", agent.id); // 流程实例ID(用agent的唯一标识)
      event.put("org:resource", myResourcePool.getLastUsedUnit().getName()); // 参与的资源名称
      eventLog.add(event);
      

    注意:concept:name、time:timestamp、case:concept:name是XES的标准属性,用这些命名能让日志直接兼容大多数流程挖掘工具。

  • 导出事件为XES格式文件
    模拟结束后,把eventLog里的数据转换成符合XES规范的XML文件,代码可以放在模型的On stop事件中:

    try {
        FileWriter writer = new FileWriter("process_log.xes");
        writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
        writer.write("<log xes.version=\"1.0\" xmlns=\"http://www.xes-standard.org/\">\n");
        
        // 按流程实例分组事件(让日志结构更清晰)
        Map<Object, List<HashMap<String, Object>>> traceMap = new HashMap<>();
        for (HashMap<String, Object> event : eventLog) {
            Object caseId = event.get("case:concept:name");
            traceMap.computeIfAbsent(caseId, k -> new ArrayList<>()).add(event);
        }
        
        // 写入每个流程实例的轨迹
        for (Map.Entry<Object, List<HashMap<String, Object>>> entry : traceMap.entrySet()) {
            writer.write("  <trace>\n");
            writer.write("    <string key=\"concept:name\" value=\"" + entry.getKey() + "\"/>\n");
            // 写入轨迹下的所有事件
            for (HashMap<String, Object> event : entry.getValue()) {
                writer.write("    <event>\n");
                for (Map.Entry<String, Object> attr : event.entrySet()) {
                    if (attr.getKey().equals("time:timestamp")) {
                        // 把时间转成XES要求的ISO 8601格式
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
                        writer.write("      <date key=\"" + attr.getKey() + "\" value=\"" + sdf.format(attr.getValue()) + "\"/>\n");
                    } else {
                        writer.write("      <string key=\"" + attr.getKey() + "\" value=\"" + attr.getValue() + "\"/>\n");
                    }
                }
                writer.write("    </event>\n");
            }
            writer.write("  </trace>\n");
        }
        
        writer.write("</log>");
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    运行模型后,会在模型所在文件夹生成process_log.xes,直接就能导入ProM、Disco这类流程挖掘工具。

  • 验证日志格式合规性
    生成后可以用XES官方验证工具检查一下,避免因为XML语法错误导致工具无法识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:40:34