現在、BPMNを拡張する方法を調査しています。タスクよりもプロパティが少なく、非BPMNプロパティと新しいタイプのプールを含む新しいタスクタイプを作成したいと思います。
これまで、拡張ポイントの使用と外部スキーマの使用という2つの方法について人々が言及しているのを見ました。残念ながら、インターネットでは、これらの方法を広く理解するための多くのリソースを見つけることができませんでした。
これらの方法から私が理解したこと:
拡張ポイント: 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または私に指摘できるリソースを拡張するための他の方法はありますか?
よろしくお願いします。