def test_bpmn_exporting(self): bpmn_graph = bpmn_importer.apply( os.path.join("input_data", "running-example.bpmn")) bpmn_exporter.apply( bpmn_graph, os.path.join("test_output_data", "running-example.bpmn")) os.remove(os.path.join("test_output_data", "running-example.bpmn"))
def execute_script(): log_path = os.path.join( os.path.join("..", "tests", "input_data", "running-example.xes")) log = xes_import.apply(log_path) ptree = inductive_miner.apply_tree(log) bpmn = pt_converter.apply(ptree, variant=pt_converter.Variants.TO_BPMN) #bpmn = bpmn_layouter.apply(bpmn) bpmn_exporter.apply(bpmn, "stru.bpmn") os.remove("stru.bpmn")
def write_bpmn(bpmn_graph, file_path, enable_layout=True): """ Writes a BPMN to a file Parameters --------------- bpmn_graph BPMN file_path Destination path enable_layout Enables the automatic layouting of the BPMN diagram (default: True) """ if enable_layout: from pm4py.objects.bpmn.layout import layouter bpmn_graph = layouter.apply(bpmn_graph) from pm4py.objects.bpmn.exporter import exporter exporter.apply(bpmn_graph, file_path)
bpmn_output_path = bpmn_output_path.name log_path = os.path.join(LOGS_FOLDER, log_name) print("") print(log_path) log = pm4py.read_xes(log_path) fp_log = pm4py.algo.discovery.footprints.log.variants.entire_event_log.apply( log) net, im, fm = pm4py.discover_petri_net_heuristics(log) fitness0 = pm4py.evaluate_fitness_alignments(log, net, im, fm) precision0 = pm4py.evaluate_precision_alignments(log, net, im, fm) print("fitness 0", fitness0) print("precision 0", precision0) bpmn_graph = pm4py.objects.conversion.wf_net.variants.to_bpmn.apply( net, im, fm) bpmn_graph = layouter.apply(bpmn_graph) exporter.apply(bpmn_graph, bpmn_output_path) bpmn_graph = importer.apply(bpmn_output_path) bpmn_graph = layouter.apply(bpmn_graph) # gets the net back net, im, fm = pm4py.objects.conversion.bpmn.variants.to_petri_net.apply( bpmn_graph) gviz = pn_visualizer.apply(net, im, fm) pn_visualizer.view(gviz) fitness1 = pm4py.evaluate_fitness_alignments(log, net, im, fm) precision1 = pm4py.evaluate_precision_alignments(log, net, im, fm) print("fitness 1", fitness1, fitness0 == fitness1) print("precision 1", precision1, precision0 == precision1) if not (fitness0 == fitness1 and precision0 == precision1): print("ALERT") input()