基于OpenXES的XES反序列化源码示例

本文来自李明子csdn博客(http://blog.csdn.net/free1985),商业转载请联系博主获得授权,非商业转载请注明出处!

本文中的示例代码编写于2013年5月,为笔者预研OpenXES所写。代码中包含了XES的主要元素,展示了使用OpenXes对XES文件反序列化的方法。鉴于当时的产品开发环境环境,本文代码由C#编写。因OpenXES是基于java的开发库,故笔者使用IKVM对其进行了转换包装。
以下是示例代码。

 /// <summary>
        /// 反序列化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <returns></returns>
        private void DeserializationButton_Click(object sender, EventArgs e)
        {
            XesXmlParser xesParser = new XesXmlParser();
            //java.net.URI xesUri = new java.net.URI("file:///D:/lmz测试采购流程.xes");
            java.net.URI xesUri = new java.net.URI("file:///D:/1460680A86E9C54EA52BB804F0C28CDC-公司内工作联系单审签流程.xes");
            java.io.File xesFile = new java.io.File(xesUri);
            bool canParse = xesParser.canParse(xesFile);
            if (canParse)
            {
                java.util.List xlogs = xesParser.parse(xesFile);
                string debugString = "共包含" + xlogs.size().ToString() + "个log";
                Debug.WriteLine(debugString);
                // 遍历所有的log
                for (int i = 0; i < xlogs.size(); i++)
                {
                    debugString = "第" + i.ToString() + "个log:";
                    Debug.WriteLine(debugString);
                    XLog xLog = (XLog)xlogs.get(i);
                    XAttributeMap logAttributeMap = xLog.getAttributes();
                    Set logAttributeKeySet = logAttributeMap.keySet();
                    Iterator logAttributeIterator = logAttributeKeySet.iterator();
                    while (logAttributeIterator.hasNext())
                    {
                        // 实际是string
                        object logAttributeKey = logAttributeIterator.next();
                        // 实际是XAttribute
                        object logAttributeValue = logAttributeMap.get(logAttributeKey);
                        debugString = logAttributeKey.ToString() + ":" + logAttributeValue.ToString();
                        Debug.WriteLine(debugString);
                    }
                    java.util.List xTraces = xLog;
                    debugString = "共包含" + xTraces.size().ToString() + "个trace:";
                    Debug.WriteLine(debugString);
                    // 遍历所有的trace
                    for (int j = 0; j < xTraces.size(); j++)
                    {
                        debugString = "  第" + j.ToString() + "个trace:";
                        Debug.WriteLine(debugString);
                        XTrace xTrace = (XTrace)xTraces.get(j);
                        XAttributeMap traceAttributeMap = xTrace.getAttributes();
                        Set traceAttributeKeySet = traceAttributeMap.keySet();
                        Iterator traceAttributeIterator = traceAttributeKeySet.iterator();
                        while (traceAttributeIterator.hasNext())
                        {
                            object traceAttributeKey = traceAttributeIterator.next();
                            object traceAttributeValue = traceAttributeMap.get(traceAttributeKey);
                            debugString = "  " + traceAttributeKey.ToString() + ":" + traceAttributeValue.ToString();
                            Debug.WriteLine(debugString);
                        }
                        java.util.List xEvents = xTrace;
                        debugString = "  共包含" + xEvents.size().ToString() + "个event:";
                        Debug.WriteLine(debugString);
                        // 遍历所有的event
                        for (int k = 0; k < xEvents.size(); k++)
                        {
                            XEvent xEvent = (XEvent)xEvents.get(k);
                            debugString = "    第" + k.ToString() + "个event,ID:" + xEvent.getID().toString() + ":";
                            Debug.WriteLine(debugString);
                            XAttributeMap eventAttributeMap = xEvent.getAttributes();
                            Set eventAttributeKeySet = eventAttributeMap.keySet();
                            Iterator eventAttributeIterator = eventAttributeKeySet.iterator();
                            while (eventAttributeIterator.hasNext())
                            {
                                object eventAttributeKey = eventAttributeIterator.next();
                                object eventAttributeValue = eventAttributeMap.get(eventAttributeKey);
                                debugString = "    " + eventAttributeKey.ToString() + ":" + eventAttributeValue.ToString();
                                Debug.WriteLine(debugString);
                            }
                        }
                    }
                }
            }
        }

从上面代码可以看出,按照log、trace、event的顺序逐层对XES文件进行解析即可对对其反序列化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值