XES格式(过程挖掘)详解
1 概述
XES是一种基于XML的事件日志标准。它旨在定义一种不同工具和应用领域下交换日志文件的格式。XES主要用于过程挖掘,但同时也可以用于广义数据挖掘、文本挖掘和静态分析。
2 元模型
XES格式的元模型如图2-1所示。
图2-1 XES的元模型
XES使用Log、Trace和Event三级结构来表示日志。其中Log为*节点,表示日志,包含多个Trace,即某些具体路径的集合。Trace是二级节点,表示一个具体的路径,包含多个Event,即具体事件的集合。Event为三级节点,表示一个具体的事件。例如,在一个访问网站的日志中,Log表示访问网站,Trace表示某个具体的用户的某次访问网站的过程,Event可以表示诸如“浏览器下载一张图片”的事件。
XES本身不具有对任何特定工具和应用领域的预定义。它们需要通过定义扩展,即Extension以及属性Attribute来进行表达。XES支持的属性类型包括字符串、日期、整型、浮点型、布尔、ID(即唯一值)等,同时它支持属性的嵌套。
XES使用Classifier标签对事件分类。
3 格式说明
本节主要对XES Version1.4格式进行分类说明。
3.1 基础结构
XES基础结构标签如表3-1所示,基础结构属性如表3-2所示。
表3-1 XES基础结构标签表
标签名 | 含义 | 父标签 | 举例 |
log | 日志,包含多个具体路径 | 无 | <log xes.version=”1.1” xes. features=”nested-attributes”> |
trace | 路径,包含多个具体的事件 | log | <trace> |
event | 事件,原子类型,对应时间点而不是时间段 | trace | <event> |
表3-2 XES基础结构属性表
属性名 | 含义 | 所属标签 | 属性类型 | 必须 |
xes.version | XES版本 | log | xs:decimal | 是 |
xes.features | 当前文档中使用的XES可选功能列表,各功能用空格分开。 | log | xs:token | 是 |
3.2 属性
XES的全部信息都存储在属性标签里。属性标签描述了它们的父元素。所有的属性标签都有一个基于字符串的关键字(key)。属性标签如表3-3所示。
表3-3 XES属性标签表
标签名 | 含义 | 类型 | 举例 |
string | 字符串 | xs:string | <string key=”name” value=”Tom” / > |
date | 日期类型 | xs:dateTime | <date key=”name” value=”2009-11-25T19:45:32.345+02:00” /> |
int | 整型 | xs:long | <int key=”counter” value=”236366” /> |
float | 浮点型 | xs:double | <float key=”percentage” value=”75.68” /> |
boolean | 布尔型 | xs:boolean | <boolean key=”success” value=”true” /> |
ID | UUID | xs:string | <id key=”customer” value=”f81d4fae-7dec-11d0-a765-00a0c91e6bf6” /> |
3.3 嵌套属性
嵌套属性通过给属性标签添加子标签的方式实现。如果要使用嵌套属性,必须给标签的xes.features属性添加值nested-attributes。嵌套属性的一个示例如下:
<string key="city" value="Bearlin">
<boolean key="spell checked" value="false" />
</ string>
- 1
- 2
- 3
- 4
3.4 全局属性
log对象维护两个全局属性列表,一个用于它所包含的全部trace元素,一个用于它所包含的全部event元素。全局属性对其下所有的trace和event都有效,但是其值只在具体的trace或event没有赋值时才有效。换句话说,全局属性值其实是个缺省值。
全局属性在标签的子标签中定义,属性scope的值表示属性的应用范围。该属性的取值可以是“event”或“trace”。示例如下:
<global scope="event">
<string key="name" value="" />
</ global>
- 1
- 2
- 3
- 4
3.5 事件分类器
分类器通过属性集定义。每个分类指定一个或多个属性。当两个事件所包含的分类器中指定的属性的值均相同时,这两个事件在这个分类器下就是相等的。注意,定义分类器时所用到的属性集必须是全局属性集的子集。
事件分类器用标签定义,它是元素的子元素。例如:
<classifier name="Activity classifier" keys="name status" />
- 1
在上面这个例子中,定义了名为Activity classifier的分类器。任何name和status属性值相等的两个事件,在Activity classifier分类器中都视为相等。
注意标签用空格来分隔keys属性中的多个属性名,但是属性名本身可能也包含空格。对于这种情况,会采取以下两种方式处理。首先,使用单引号来区分不同的属性值。比如keys的值可以写成“simple’not simple’”,这表示包含两个key,分别是“simple”和“not simole”。其次,一个不包含在全局属性集里的key值将自动与后面的值组合。比如,如果log中不存在名为“simple”的全局事件属性,那么在前面的例子中将在全局事件属性中检查key值“simple not simple”是否存在。如果存在,分类器将只包含一个key(“simple not simple”)。否则,分类器将包含两个key值(“simple”和“not simple”),即使某个key的值不是全局事件属性。
3.6 扩展
扩展定义了XES日志任何层次(日志、路径、事件或者嵌套属性的元)的属性集,主要是为每个元素上定义的一组属性提供语义,以弥补XES格式对具体语义描述含糊的缺点。
在XML中,用标签来声明扩展,它是标签的子标签。例如:
<extension name="Concept" prefix="concept" uri="http://www.xes-standard.org/concept.xesext" / >
- 1
上面的语句将声明日志包含由名为“Concept”的扩展定义的属性。“prefix”属性声明日志中使用的这个扩展定义的全部属性的前缀。这样,属性就可以返回它们对应的扩展了。例如:
<string key="concept:name" value="Initialization" />
- 1
“uri”属性指向使用XESEXT格式定义的扩展的URI地址。XESEXT的格式定义可以参见《xesstandarddefinition-1.4》的附录A和附录C。
4 标准扩展
在1.3节中介绍了XES的基本格式,本节将介绍XES的7个标准扩展。
XES元模型平等的承认和对待所有的扩展源。它允许用户根据应用环境对基本格式进行扩展。目前很多扩展已经标准化,当为一个具体的应用领域创建日志或设计日志分析技术时应该考虑使用这些标准扩展。
4.1 概念扩展
概念扩展为XES类型各层次的元素的属性定义易于理解的别名。
扩展前缀:concept
扩展URI:http://www.xes-standard.org/concept.xesext
属性表如表4-1所示。
表4-1 概念扩展属性表
属性层级 | key | 类型 | 描述 |
log,trace,event | name | string | 存储易读的别名。对于日志,name属性可能存储执行的过程名;对于路径,name属性通常存储实例ID(case ID);对于事件,name属性存储事件名。 |
event | instance | string | 存储产生事件的活动实例的标识符。 |
4.2 生命周期扩展
生命周期扩展为XES的event提供了标准的用于数据交换的转换模型。
扩展前缀:lifecycle
扩展URI:http://www.xes-standard.org/lifecycle.xesext
属性表如表4-2所示。
表4-2 生命周期扩展属性表
属性层级 | key | 类型 | 描述 |
log | model | string | 这个属性的值表示log中的所有event使用的转换模型。如果属性值为“standard”则使用标准生命周期转换模型。 |
event | transition | string | 假如使用了标准转换模型,那么属性的取值如下: schedule-活动被安排执行 assign-活动被分配到的资源来执行; withdraw-分配被撤销,结束分配; reassign-分配被撤销,重新分配; start-活动开始执行; suspend-活动暂停; resume-活动重新开始; pi_abort-整个流程的执行因该事件异常退出; ate_abort-活动异常退出; complete-活动完成; autoskip-活动被系统跳转完成; manualskip-活动被人为跳转完成; unknown-未知事务 |
标准转换模型状态机如图4-1所示。
图4-1 标准转换模型状态机
4.3 组织扩展
组织扩展对于那些由组织中的某个人引发某个事件的应用领域非常有用。
扩展前缀:org
扩展URI:http://www.xes-standard.org/org.xesext
属性表如表4-3所示。
表4-3 组织扩展属性表
属性层级 | key | 类型 | 描述 |
event | resource | string | 触发事件的名字或者标识 |
event | role | string | 触发事件的角色 |
event | group | string | 组织结构中的分组,触发事件的resource是其中的一员 |
4.4 时间扩展
添加时间类型的扩展,在标准格式里只有日期类型,没有时间类型。
扩展前缀:time
扩展URI:http://www.xes-standard.org/time.xesext
属性表如表4-4所示。
表4-4 时间扩展属性表
属性层级 | key | 类型 | 描述 |
event | timestamp | date | 事件发生的日期和时间 |
4.5 语义扩展
同一个对象(log,trace,event,meta)可能关联不同的概念(在概念扩展中定义),此时可以使用语义扩展。它通过存储概念扩展的URI来表明对象所表示的各种概念。这些URI用逗号分隔。
扩展前缀:semantic
扩展URI:http://www.xes-standard.org/semantic.xesext
属性表如表4-5所示。
表4-5 语义扩展属性表
属性层级 | key | 类型 | 描述 |
log,trace,event,meta | modelReference | string | 存储对象所对应的各概念所在的概念扩展的URI,各URI用逗号分隔。 |
4.6 扩展
ID扩展为元素提供唯一的ID。
扩展前缀:identity
扩展URI:http://www.xes-standard.org/identity.xesext
表4-6 ID扩展属性表
属性层级 | key | 类型 | 描述 |
log,trace,event,meta | id | id | 元素的唯一标识 |
4.7 开销扩展
开销扩展定义了一个嵌套的元素来存储日志中与活动相关的开销信息。主要定义了三个要素:开销数值,开销项目,开销类型,另外还定义了总额和货币单位两个要素。
扩展前缀:cost
扩展URI:http://www.xes-standard.org/cost.xesext
属性表如表4-7所示。
表4-7 开销扩展属性表
属性层级 | key | 类型 | 描述 |
trace,event | total | float | 元素的开销总额 |
trace,event | currency | string | 元素使用的货币单位 |
meta | amount | float | 开销 |
meta | driver | string | 开销者 |
meta | type | string | 开销类型 |
注意,因为 XES标准中不允许一个元素中包含多个key值相同的不同属性,当一个元素需要添加多个开销时,需要为其他的开销添加一个父元素。例如:
<event>
<string key="cost:currency" value="AUD" />
<float key="cost:total" value="123.50" />
<string key="d2f4ee27" value="">
<float key="cost:amount" value="21.40" />
<string key="cost:driver" value="d2f4ee27" />
<string key="cost:type" value="Labour" />
</string>
<string key="abc124" value="">
<float key="cost:amount" value="102.10" />
<string key="cost:driver" value="abc124" />
<string key="cost:type" value="Variable Overhead" />
</string>
</event>
本文转载自https://blog.csdn.net/free1985/article/details/75735797
上一篇: Kotlin SharedPreferences最佳实现
下一篇: Android数据存储