目前,我正在研究扩展 BPMN 的方法。我想创建一个新的任务类型,它的属性比任务少,还具有一些非 BPMN 属性和一种新类型的池。
到目前为止,我看到人们提到了两种方法,使用扩展点和使用外部模式。不幸的是,在互联网上,我找不到那么多资源来广泛理解这些方法。
我从这些方法中了解到:
扩展点:有一些由 BPMN 引擎供应商(Aktiviti、jBPM 等)提供的标准扩展点。例如,在 Activiti 中有一个自定义服务任务,可以使用用户所需的属性进行扩展,但如果这个新创建的扩展任务可以部署在 Aktiviti 工作流引擎上,我没有找到任何资源,而且很高兴看到新的 BPMN此扩展的架构。
使用外部架构:在外部架构中定义所需的属性并从 Semantic.xsd 引用此架构。在这种情况下,我们还需要调整我们的工作流引擎,但它比我之前提到的方法更灵活,还是我遗漏了什么?
唯一不清楚的是这个方法没有直接扩展任务定义,所以这些属性可以被 BPMN 中的每个元素使用?
一个示例外部架构是:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns="http://myproject.org//bpmn/extensions/NEWTask"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:exvar="http://myproject.org/externalDefs"
targetNamespace="http://myproject.org//bpmn/extensions/NEWTask"
>
<xsd:import namespace="http://www.omg.org/spec/BPMN/20100524/MODEL" schemaLocation="BPMN20.xsd"/>
<xsd:import schemaLocation="externalDefs.xsd" namespace="http://myproject.org/externalDefs" />
<xsd:complexType name="tProperty1" abstract="false">
<xsd:sequence>
<xsd:any namespace="##any" processContents="lax" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
<xsd:group id="tNEWTask" name="tNEWTask">
<xsd:sequence>
<xsd:element name="Property2" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Property1" type="tProperty1" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Property2" type="exvar:Varaible1" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:group>
</xsd:schema>
是否有任何其他方法可以扩展 BPMN 或您可以指出我的任何资源,以便我可以更好地了解这个主题?
任何帮助将不胜感激,在此先感谢!