def build_dictionaries(self, parameters): """ Builds the dictionaries needed to store the information during the replay Parameters --------------- parameters Parameters: - Parameters.DICT_VARIANT: type of dictionary to use - Parameters.CASE_DICT_ID: identifier of the dictionary hosting the markings (0) - Parameters.MISSING_DICT_ID: identifier of the dictionary hosting the missing tokens (1) - Parameters.REMAINING_DICT_ID: identifier of the dictionary hosting the remaining tokens (2) """ dict_variant = exec_utils.get_param_value(Parameters.DICT_VARIANT, parameters, generator.Variants.THREAD_SAFE) case_dict_id = exec_utils.get_param_value(Parameters.CASE_DICT_ID, parameters, 0) missing_dict_id = exec_utils.get_param_value(Parameters.MISSING_DICT_ID, parameters, 1) remaining_dict_id = exec_utils.get_param_value(Parameters.REMAINING_DICT_ID, parameters, 2) parameters_case_dict = copy(parameters) parameters_case_dict[Parameters.DICT_ID] = case_dict_id parameters_missing = copy(parameters) parameters_case_dict[Parameters.DICT_ID] = missing_dict_id parameters_remaining = copy(parameters) parameters_remaining[Parameters.DICT_ID] = remaining_dict_id self.case_dict = generator.apply(variant=dict_variant, parameters=parameters_case_dict) self.missing = generator.apply(variant=dict_variant, parameters=parameters_missing) self.remaining = generator.apply(variant=dict_variant, parameters=parameters_remaining)
def build_dictionaries(self, parameters): """ Builds the dictionaries needed to store the information during the replay Parameters --------------- parameters Parameters: - Parameters.DICT_VARIANT: type of dictionary to use - Parameters.CASE_DICT_ID: identifier of the dictionary hosting the last activity of a case (1) - Parameters.DEV_DICT_ID: identifier of the dictionary hosting the deviations (2) """ dict_variant = exec_utils.get_param_value(Parameters.DICT_VARIANT, parameters, generator.Variants.CLASSIC) case_dict_id = exec_utils.get_param_value(Parameters.CASE_DICT_ID, parameters, 0) dev_dict_id = exec_utils.get_param_value(Parameters.DEV_DICT_ID, parameters, 1) parameters_case_dict = copy(parameters) parameters_case_dict[Parameters.DICT_ID] = case_dict_id parameters_dev_dict = copy(parameters) parameters_dev_dict[Parameters.DICT_ID] = dev_dict_id self.case_dict = generator.apply(variant=dict_variant, parameters=parameters_case_dict) self.dev_dict = generator.apply(variant=dict_variant, parameters=parameters_dev_dict)
def __init__(self, temporal_profile: typing.TemporalProfile, parameters: Optional[Dict[Any, Any]] = None): """ Initialize the streaming conformance checking. Implements the approach described in: Stertz, Florian, Jürgen Mangler, and Stefanie Rinderle-Ma. "Temporal Conformance Checking at Runtime based on Time-infused Process Models." arXiv preprint arXiv:2008.07262 (2020). Parameters --------------- temporal_profile Temporal profile parameters Parameters of the algorithm, including: - Parameters.ACTIVITY_KEY => the attribute to use as activity - Parameters.START_TIMESTAMP_KEY => the attribute to use as start timestamp - Parameters.TIMESTAMP_KEY => the attribute to use as timestamp - Parameters.ZETA => multiplier for the standard deviation - Parameters.CASE_ID_KEY => column to use as case identifier - Parameters.DICT_VARIANT => the variant of dictionary to use - Parameters.CASE_DICT_ID => the identifier of the case dictionary - Parameters.DEV_DICT_ID => the identifier of the deviations dictionary """ if parameters is None: parameters = {} self.temporal_profile = temporal_profile self.activity_key = exec_utils.get_param_value( Parameters.ACTIVITY_KEY, parameters, xes_constants.DEFAULT_NAME_KEY) self.timestamp_key = exec_utils.get_param_value( Parameters.TIMESTAMP_KEY, parameters, xes_constants.DEFAULT_TIMESTAMP_KEY) self.start_timestamp_key = exec_utils.get_param_value( Parameters.START_TIMESTAMP_KEY, parameters, xes_constants.DEFAULT_TIMESTAMP_KEY) self.case_id_key = exec_utils.get_param_value( Parameters.CASE_ID_KEY, parameters, constants.CASE_CONCEPT_NAME) self.zeta = exec_utils.get_param_value(Parameters.ZETA, parameters, 6.0) parameters_gen = copy(parameters) dict_variant = exec_utils.get_param_value( Parameters.DICT_VARIANT, parameters, generator.Variants.THREAD_SAFE) case_dict_id = exec_utils.get_param_value(Parameters.CASE_DICT_ID, parameters, 0) parameters_gen[Parameters.DICT_ID] = case_dict_id self.case_dictionary = generator.apply(variant=dict_variant, parameters=parameters_gen) parameters_dev = copy(parameters) dev_dict_id = exec_utils.get_param_value(Parameters.DEV_DICT_ID, parameters, 1) parameters_dev[Parameters.DICT_ID] = dev_dict_id self.deviations_dict = generator.apply(variant=dict_variant, parameters=parameters_dev) StreamingAlgorithm.__init__(self)
def build_dictionaries(self, parameters): """ Builds the dictionaries that are needed by the discovery operation Parameters --------------- parameters Parameters: - Parameters.DICT_VARIANT: type of dictionary to use - Parameters.CASE_DICT_ID: identifier of the case dictionary (hosting the last activity of a case) (0) - Parameters.DFG_DICT_ID: identifier of the DFG dictionary (1) - Parameters.ACT_ID: identifier of the dictionary hosting the count of the activities (2) - Parameters.START_ACT_DICT_ID: identifier of the dictionary hosting the count of the start activities (3) """ dict_variant = exec_utils.get_param_value( Parameters.DICT_VARIANT, parameters, generator.Variants.THREAD_SAFE) case_dict_id = exec_utils.get_param_value(Parameters.CASE_DICT_ID, parameters, 0) dfg_dict_id = exec_utils.get_param_value(Parameters.DFG_DICT_ID, parameters, 1) act_dict_id = exec_utils.get_param_value(Parameters.ACT_DICT_ID, parameters, 2) start_act_dict_id = exec_utils.get_param_value( Parameters.START_ACT_DICT_ID, parameters, 3) parameters_case_dict = copy(parameters) parameters_case_dict[Parameters.DICT_ID] = case_dict_id parameters_dfg = copy(parameters) parameters_dfg[Parameters.DICT_ID] = dfg_dict_id parameters_activities = copy(parameters) parameters_activities[Parameters.DICT_ID] = act_dict_id parameters_start_activities = copy(parameters) parameters_start_activities[Parameters.DICT_ID] = start_act_dict_id self.case_dict = generator.apply(variant=dict_variant, parameters=parameters_case_dict) self.dfg = generator.apply(variant=dict_variant, parameters=parameters_dfg) self.activities = generator.apply(variant=dict_variant, parameters=parameters_activities) self.start_activities = generator.apply( variant=dict_variant, parameters=parameters_start_activities)