BPMN支持
在pm4py,我们提供导入/导出/布局BPMN图表的支持。这些支持仅限于以下BPMN元素:
- Events:事件(开始/结束事件)
- Tasks:任务
- Gateways:网关(排他的,平行的,包容的)
而且,我们提供在PM4PY中实施的流程模型的相互转换(例如:Petri nets 和BPMN 图标)
导入
import pm4py
import os
bpmn_graph = pm4py.read_bpmn(os.path.join("tests", "input_data", "running-example.bpmn"))
导出
bpmn_graph应该就是pm4py里的bpmn对象;enable_layout设置为True,在导出之前启用 BPMN 模型的自动布局。
import pm4py
import os
pm4py.write_bpmn(bpmn_graph, "ru.bpmn", enable_layout=True)
布局
一个布局操作尝试给BPMN图标的节点和边缘一个好的位置。
from pm4py.objects.bpmn.layout import layouter
bpmn_graph = layouter.apply(bpmn_graph)
转换成Petri net
将 BPMN 模型转换为 Petri net模型可以实现不同的 PM4Py 算法(例如一致性检查和模拟算法)
from pm4py.objects.conversion.bpmn import converter as bpmn_converter
net, im, fm = bpmn_converter.apply(bpmn_graph)
从Process Tree(PT)转换成BPMN
示例代码中,首先我们导入XES事件日志,我们用inductive miner(感应矿工)挖掘一个模型。返回一个PT对象。
import pm4py
import os
log = pm4py.read_xes(os.path.join("tests", "input_data", "running-example.xes"))
tree = pm4py.discover_process_tree_inductive(log)
接下来,我们将其转换成BPMN图表
from pm4py.objects.conversion.process_tree import converter
bpmn_graph = converter.apply(tree, variant=converter.Variants.TO_BPMN)
*若对本文有疑问(例如:笔记中知识点或表达有误),欢迎指出,共同学习进步。