Skip to content

Commit

Permalink
Merge branch 'ft-1379-streaming-xes-reader-trace-attributes' into 'in…
Browse files Browse the repository at this point in the history
…tegration'

FT 1379 Changes to streaming XES reader - Including attributes at the case level

See merge request pm4py/pm4py-core!526
  • Loading branch information
fit-sebastiaan-van-zelst committed Nov 12, 2021
2 parents 43a076c + fb37db3 commit d65f807
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions pm4py/streaming/importer/xes/variants/xes_event_stream.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import logging
from enum import Enum

from pm4py.objects.log.obj import Event
from pm4py.util import xes_constants, exec_utils
from pm4py.objects.log.obj import Event, Trace
from pm4py.util import xes_constants, exec_utils, constants
from pm4py.util.dt_parsing import parser as dt_parser


Expand Down Expand Up @@ -94,6 +94,7 @@ def reset(self):
self.event = None
self.reading_log = True
self.reading_event = False
self.reading_trace = False
self.tree = {}

def read_event(self):
Expand All @@ -112,13 +113,19 @@ def read_event(self):
if tree_event == _EVENT_START:
parent = tree[elem.getparent()] if elem.getparent() in tree else None

if elem.tag.endswith(xes_constants.TAG_TRACE):
self.trace = Trace()
tree[elem] = self.trace.attributes
self.reading_trace = True
continue

if elem.tag.endswith(xes_constants.TAG_EVENT):
self.event = Event()
tree[elem] = self.event
self.reading_event = True
continue

if self.reading_event:
if self.reading_event or self.reading_trace:
if elem.tag.endswith(xes_constants.TAG_STRING):
if parent is not None:
tree = parse_attribute(elem, parent, elem.get(xes_constants.KEY_KEY),
Expand Down Expand Up @@ -190,9 +197,15 @@ def read_event(self):
if elem.tag.endswith(xes_constants.TAG_EVENT):
self.reading_event = False
if self.acceptance_condition(self.event):
for attr in self.trace.attributes:
self.event[constants.CASE_ATTRIBUTE_PREFIX + attr] = self.trace.attributes[attr]
return self.event
continue

elif elem.tag.endswith(xes_constants.TAG_TRACE):
self.reading_trace = False
continue

elif elem.tag.endswith(xes_constants.TAG_LOG):
self.reading_log = False
break
Expand Down

0 comments on commit d65f807

Please sign in to comment.