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 类提供了以下方法:

  1. __construct(string $version = "", string $encoding = ""):构造函数,创建一个新的 DOMDocument 对象。可选参数 $version 用于指定 XML 版本,默认为 “1.0”。$encoding 参数用于指定 XML 文档的字符编码,默认为空。

  2. load(string $filename, int $options = 0):从指定的文件加载一个 XML 文档。参数 $filename 为要加载的 XML 文件的路径。参数 $options 为可选的位掩码,用于配置解析选项。成功时返回 true,失败时返回 false。

  3. loadXML(string $source, int $options = 0):从给定的字符串加载一个 XML 文档。参数 $source 为包含 XML 文档内容的字符串。参数 $options 为可选的位掩码,用于配置解析选项。成功时返回 true,失败时返回 false。

  4. save(string $filename, int $options = 0):将当前 DOMDocument 对象的内容保存到指定的文件。参数 $filename 为要保存的文件路径。参数 $options 为可选的位掩码,用于配置输出选项。成功时返回写入的字节数,失败时返回 false。

  5. saveXML(DOMNode $node = null, int $options = 0):将当前 DOMDocument 对象或指定的 DOMNode 对象序列化为一个 XML 字符串。参数 $node 为要序列化的节点,默认为 null,表示序列化整个 DOMDocument。参数 $options 为可选的位掩码,用于配置输出选项。返回生成的 XML 字符串。

  6. createElement(string $name, string $value = null):创建一个新的 DOMElement 对象。参数 $name 为新元素的标签名。参数 $value 为新元素的文本内容,如果设置为 null,则元素没有文本内容。返回创建的 DOMElement 对象。

  7. getElementById(string $elementId):根据 ID 获取一个 DOMElement 对象。参数 $elementId 为要查找的元素的 ID 属性值。返回找到的 DOMElement 对象,如果没有找到则返回 null。

  8. getElementsByTagName(string $name):根据标签名获取一个 DOMNodeList 对象。参数 $name 为要查找的元素的标签名。返回包含所有匹配的元素的 DOMNodeList 对象。

这只是 DOMDocument 类的部分方法,实际上它还包含很多其他方法,用于处理 XML 文档中的节点、属性、命名空间等。更多关于 DOMDocument 类的信息,可以查阅 PHP 官方文档

BpmnDocument 实现了 BpmnDocumentInterface 类 ProcessMaker Nayra 扩展包中的一个接口,主要负责定义 BPMN 文档对象的基本行为。这个接口定义了一组方法,用于实现 BPMN 文档的加载、解析以及访问其中的 BPMN 元素。以下是 BpmnDocumentInterface 中的一些主要方法:

  1. setEngine(EngineInterface $engine):设置用于执行 BPMN 元素的引擎。参数 $engine 是一个实现了 EngineInterface 的引擎对象。

  2. getEngine():获取当前设置的引擎对象。返回实现了 EngineInterface 的引擎对象。

  3. setFactory(RepositoryInterface $factory):设置用于创建 BPMN 元素实例的工厂对象。参数 $factory 是一个实现了 RepositoryInterface 的工厂对象。

  4. getFactory():获取当前设置的工厂对象。返回实现了 RepositoryInterface 的工厂对象。

  5. loadXML(string $source):从给定的字符串加载 BPMN 文档。参数 $source 是包含 BPMN 文档内容的字符串。成功时返回 true,失败时返回 false

  6. getElementsByType(string $type):根据给定的类型获取 BPMN 文档中的元素。参数 $type 是要查找的元素的类型。返回一个包含匹配元素的数组。

  7. getElementInstanceById(string $id):根据给定的 ID 获取 BPMN 文档中的元素实例。参数 $id 是要查找的元素的 ID。返回找到的元素实例,如果没有找到则返回 null

  8. getProcesses():获取 BPMN 文档中的所有流程。返回一个包含所有流程对象的数组。

这个接口定义了 BPMN 文档对象的基本行为。具体实现这个接口的类可能会有不同的方式来加载、解析和访问 BPMN 文档中的元素。在 ProcessMaker Nayra 扩展包中,BpmnDocument 类是实现了 BpmnDocumentInterface 接口的一个具体类。

下面是 BpmnDocument类的 UML 图
ProcessMaker Nayra 扩展包

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!