I am currently studying ways to extend BPMN. I want to create a new task type with less properties than the task, as well as some properties other than BPMN, and a new pool type.
So far, I have seen people mention two paths using extension points and using an external circuit. Unfortunately, I could not find many resources on the Internet to understand these methods well.
What I understood from these methods:
Extension Points:. There are some standard extension points provided by BPMN engine suppliers (Aktiviti, jBPM, etc.). For example, in Activiti there is a User Service Task that can be expanded using the properties desired by the user, but I did not find any resources if this newly created extension task can be deployed on the Aktiviti workflow, and it would be nice to see a new BPMN scheme for this extensions.
Using an external schema: Define desired properties in an external schema and reference this schema from Semantic.xsd. In this case, we also need to adapt our Workflow Engine, but is it more flexible than the method I mentioned earlier, or am I missing something missing?
The only thing that is unclear is this method does not apply directly to the definition of the task, so can these properties be used by each element in BPMN?
External circuit example:
<?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>
Are there any other ways to extend BPMN or any resources you can point me so that I can better understand this topic?
Any help would be appreciated, thanks in advance!
source share