BPMN 2.0 - ProcessMaker Nayra 核心 BpmnDocument 类解析
BpmnDocument 类
ProcessMaker\Nayra\Storage\BpmnDocument
类在 ProcessMaker Nayra 扩展包中扮演着关键的角色。它主要用于加载和解析 BPMN
文件,并将 BPMN 元素转换为 processmaker\nayra\src\ProcessMaker\Nayra\Bpmn\Models
中对应的类实例。以下是 BpmnDocument
类的主要作用和部分代码解析
class BpmnDocument extends DOMDocument implements BpmnDocumentInterface
BpmnDocument
基础 DOMDocument
类是 PHP 的内置类,属于 PHP DOM 扩展。它用于表示 XML 文档的对象模型。DOMDocument
类使得我们可以方便地操作 XML 文档,例如加载、解析、创建、修改、删除和遍历 XML 文档中的节点DOMDocument
类提供了以下方法:
__construct(string $version = "", string $encoding = "")
:构造函数,创建一个新的 DOMDocument 对象。可选参数 $version 用于指定 XML 版本,默认为 “1.0”。$encoding 参数用于指定 XML 文档的字符编码,默认为空。load(string $filename, int $options = 0)
:从指定的文件加载一个 XML 文档。参数 $filename 为要加载的 XML 文件的路径。参数 $options 为可选的位掩码,用于配置解析选项。成功时返回 true,失败时返回 false。loadXML(string $source, int $options = 0)
:从给定的字符串加载一个 XML 文档。参数 $source 为包含 XML 文档内容的字符串。参数 $options 为可选的位掩码,用于配置解析选项。成功时返回 true,失败时返回 false。save(string $filename, int $options = 0)
:将当前 DOMDocument 对象的内容保存到指定的文件。参数 $filename 为要保存的文件路径。参数 $options 为可选的位掩码,用于配置输出选项。成功时返回写入的字节数,失败时返回 false。saveXML(DOMNode $node = null, int $options = 0)
:将当前 DOMDocument 对象或指定的 DOMNode 对象序列化为一个 XML 字符串。参数 $node 为要序列化的节点,默认为 null,表示序列化整个 DOMDocument。参数 $options 为可选的位掩码,用于配置输出选项。返回生成的 XML 字符串。createElement(string $name, string $value = null)
:创建一个新的 DOMElement 对象。参数 $name 为新元素的标签名。参数 $value 为新元素的文本内容,如果设置为 null,则元素没有文本内容。返回创建的 DOMElement 对象。getElementById(string $elementId)
:根据 ID 获取一个 DOMElement 对象。参数 $elementId 为要查找的元素的 ID 属性值。返回找到的 DOMElement 对象,如果没有找到则返回 null。getElementsByTagName(string $name)
:根据标签名获取一个 DOMNodeList 对象。参数 $name 为要查找的元素的标签名。返回包含所有匹配的元素的 DOMNodeList 对象。
这只是 DOMDocument
类的部分方法,实际上它还包含很多其他方法,用于处理 XML 文档中的节点、属性、命名空间等。更多关于 DOMDocument
类的信息,可以查阅 PHP 官方文档
BpmnDocument
实现了 BpmnDocumentInterface
类 ProcessMaker Nayra 扩展包中的一个接口,主要负责定义 BPMN 文档对象的基本行为。这个接口定义了一组方法,用于实现 BPMN 文档的加载、解析以及访问其中的 BPMN 元素。以下是 BpmnDocumentInterface 中的一些主要方法:
setEngine(EngineInterface $engine)
:设置用于执行 BPMN 元素的引擎。参数$engine
是一个实现了EngineInterface
的引擎对象。getEngine()
:获取当前设置的引擎对象。返回实现了EngineInterface
的引擎对象。setFactory(RepositoryInterface $factory)
:设置用于创建 BPMN 元素实例的工厂对象。参数$factory
是一个实现了RepositoryInterface
的工厂对象。getFactory()
:获取当前设置的工厂对象。返回实现了RepositoryInterface
的工厂对象。loadXML(string $source)
:从给定的字符串加载 BPMN 文档。参数$source
是包含 BPMN 文档内容的字符串。成功时返回true
,失败时返回false
。getElementsByType(string $type)
:根据给定的类型获取 BPMN 文档中的元素。参数$type
是要查找的元素的类型。返回一个包含匹配元素的数组。getElementInstanceById(string $id)
:根据给定的 ID 获取 BPMN 文档中的元素实例。参数$id
是要查找的元素的 ID。返回找到的元素实例,如果没有找到则返回null
。getProcesses()
:获取 BPMN 文档中的所有流程。返回一个包含所有流程对象的数组。
这个接口定义了 BPMN 文档对象的基本行为。具体实现这个接口的类可能会有不同的方式来加载、解析和访问 BPMN 文档中的元素。在 ProcessMaker Nayra 扩展包中,BpmnDocument
类是实现了 BpmnDocumentInterface
接口的一个具体类。
下面是 BpmnDocument
类的 UML 图
本作品采用《CC 协议》,转载必须注明作者和本文链接