目前,我正在研究扩展BPMN的方法。我想创建一个新任务类型,其属性少于任务,还有一些非BPMN属性和一种新类型的池。
到目前为止,我看到人们提到了两种方式,使用扩展点和使用外部模式。不幸的是,在互联网上,我找不到很多资源来广泛理解这些方法。
我从这些方法中理解了什么:
唯一不明确的是这个方法不直接扩展任务定义,所以这些属性可以被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或您可以指向我的任何资源,以便我可以更好地了解此主题?
任何帮助将不胜感激,提前感谢!
这是巴西研究人员开发的工具:http://code.google.com/p/bpmnx/
就我记忆而言,它适用于扩展点。
Here是关于Activiti论坛和MDT Eclipse插件forum的这个主题的一些讨论。
不幸的是,通过一些简单的测试,我无法实现新的命名空间
(例如,xmlns:newns="http://www.mynewns.com/newns
in
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:activiti="http://activiti.org/bpmn"
xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
typeLanguage="http://www.w3.org/2001/XMLSchema"
xmlns:newns="http://www.mynewns.com/newns"
expressionLanguage="http://www.w3.org/1999/XPath"
targetNamespace="http://www.activiti.org/bpmn2.0">
和像<userTask newns:ownerID="owner1">
这样的元素。
我的Activiti
图中的自定义元素也不起作用 - Eclipse插件似乎丢弃了我的自定义命名空间并忽略了我的元素。不知道为什么;还在研究。
由于您没有讨论任何具体的BPMN实现(activiti,jbpm),并且您在谈论自己的流程引擎,我假设您要做的是根据BPMN规则扩展XML。
也就是说,您可以查看BPMN 2.0规范(我认为它很长,可能很无聊),或者您可以尝试查看一些bpmn书。 BPMN method & style book有关于实施BPMN的一部分,所以也许这对你有用。
注意:如果有像BPMN这样的标准,它有很多支持,有时如果你真的需要扩展它会很有用。是否值得扩展一些尚未考虑的标准? (不是说你不能这样做,但是你应该考虑它带给你什么,如果不能用普通的东西做到这一点)。
你可以看看Eclipse BPMN2 Modeler。
有一些tutorials可用(例如扩展runtime和创建custom task)。