Exemplo n.º 1
0
def log():
    log = XFactory.create_log()
    # add log classifier
    clf = XEventNameClassifier()
    log.get_classifiers().append(clf)
    # add global trace attributes
    glb_t_attr = XFactory.create_attribute_discrete('glb_t_attr', 0)
    log.get_global_trace_attributes().append(glb_t_attr)
    # add global event attributes
    glb_e_attr = XFactory.create_attribute_discrete('glb_e_attr', 0)
    log.get_global_event_attributes().append(glb_e_attr)
    # add log attributes
    str_attr = XFactory.create_attribute_literal('l_attr', 'UNKNOWN')
    log.get_attributes()['l_attr'] = str_attr
    # add extension
    meta_concept = XExtensionParser().parse(
        "http://www.xes-standard.org/meta_concept.xesext")
    log.get_extensions().add(meta_concept)
    # add a trace
    tracelen = 2
    trace0 = XFactory.create_trace()
    # add some trace attributes
    bool_attr = XFactory.create_attribute_boolean('t_attr', True)
    # add some trace features
    trace0.get_attributes()['t_attr'] = bool_attr
    for i in range(tracelen):
        event = XFactory.create_event()
        # add an attribute
        int_attr = XFactory.create_attribute_discrete('e_attr', 0)
        event.get_attributes()['e_attr0'] = int_attr
        trace0.append(event)
    log.append(trace0)
    return log
Exemplo n.º 2
0
 def test_parsed_log_has_extensions(self):
     export_log(self.log, 'log.xes')
     # register new extension
     meta_concept = XExtensionParser().parse(
         "http://www.xes-standard.org/meta_concept.xesext")
     XExtensionManager().register(meta_concept)
     log = self.read_log('log.xes')
     exts = log.get_extensions()
     assert len(exts) == 1
     ext = exts.pop()
     assert ext.get_name() == 'MetaData_Concept'
Exemplo n.º 3
0
    def load_extension_cache(self):
        """Loads all extensions stored in the local cache. Cached extensions
        which exceed the maximum caching age are discarded, and downloaded
        freshly.

        """
        min_modified = (lambda: int(round(time.time() * 1000)))() - 2592000000
        ext_folder = XRuntimeUtils().get_extension_cache_folder()
        ext_files = list(filter(os.path.isfile, os.listdir(ext_folder)))
        if len(ext_files) == 0:
            XLogging().log(
                "Extension caching disabled (Could not access cache"
                " directory)!", XLogging.Importance.WARNING)
            return

        for i in range(len(ext_files)):
            ext_file = ext_files[i]
            if ext_file.lower().endswith(".xesext"):
                file_name = ext_folder + os.path.sep + ext_file
                if os.path.getmtime(file_name) * 1000 < min_modified:
                    if os.path.exists(file_name):
                        os.remove(file_name)
                else:
                    try:
                        extension = XExtensionParser.parse(file_name)
                        if extension.get_uri() not in self.__extension_map:
                            self.__extension_map[
                                extension.get_uri()] = extension
                            self.__extension_list.append(extension)
                            XLogging().log(
                                "Loaded XES extension \'" +
                                extension.get_uri().geturl() + "\' from cache",
                                XLogging.Importance.DEBUG)
                        else:
                            XLogging().log(
                                "Skipping cached XES extension \'" +
                                extension.get_uri().geturl() +
                                "\' (already defined)",
                                XLogging.Importance.DEBUG)
                    except Exception as e:
                        print("Exception error: {}".format(e))
Exemplo n.º 4
0
# reference: https://github.com/opyenxes/OpyenXes/tree/2018-bpm-demo/example
# outputs: case information
#   (1) case_id
#   (2) case_execution_time
#   (3) case_execution_time_seconds
#   (4) num_of_events

import pandas as pd

from opyenxes.extension.XExtensionParser import XExtensionParser
from opyenxes.extension.XExtensionManager import XExtensionManager
from opyenxes.data_in.XUniversalParser import XUniversalParser

# We must parse the new extension, can be the link or the xml file
print("[info] XExtensionParser starts the extension parsing")
meta_general = XExtensionParser().parse("http://www.xes-standard.org/meta_general.xesext")
meta_concept = XExtensionParser().parse("http://www.xes-standard.org/meta_concept.xesext")
meta_time = XExtensionParser().parse("http://www.xes-standard.org/meta_time.xesext")
ext_concept = XExtensionParser().parse("http://www.xes-standard.org/concept.xesext")
ext_time = XExtensionParser().parse("http://www.xes-standard.org/time.xesext")
ext_lifecycle = XExtensionParser().parse("http://www.xes-standard.org/lifecycle.xesext")
print("[info] XExtensionParser completed the extension parsing")

# Then we register the new extension
print("[info] XExtensionManager starts the registration of extensions")
XExtensionManager().register(meta_general)
XExtensionManager().register(meta_concept)
XExtensionManager().register(meta_time)
XExtensionManager().register(ext_concept)
XExtensionManager().register(ext_time)
XExtensionManager().register(ext_lifecycle)
Exemplo n.º 5
0
from opyenxes.data_in.XUniversalParser import XUniversalParser
from opyenxes.extension.XExtensionParser import XExtensionParser
from opyenxes.extension.XExtensionManager import XExtensionManager

with open("xes_file/example_with_new_extension.xes") as file:
    logs = XUniversalParser().parse(file)

# The console will print:
"""
    > Unknown extension: http://www.xes-standard.org/meta_concept.xesext
    > Unknown extension: http://www.xes-standard.org/meta_general.xesext
"""

# We must parse the new extension, can be the link or the xml file
meta_concept = XExtensionParser().parse(
    "http://www.xes-standard.org/meta_concept.xesext")
meta_general = XExtensionParser().parse("xes_file/meta_general.xesext.xml")

# Then we register the new extension
XExtensionManager().register(meta_concept)
XExtensionManager().register(meta_general)

# Now we can parse again
with open("xes_file/example_with_new_extension.xes") as file:
    logs = XUniversalParser().parse(file)