How to extend BPMN 2.0

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!

+6
source share
4 answers

This tool was developed by a Brazilian researcher: http://code.google.com/p/bpmnx/

It works with extension points, as far as I remember.

+1
source

This topic is discussed here on Activiti forums and on the MDT Eclipse forum plugin.

Unfortunately, with some simple testing, I was unable to implement the new namespace

(e.g. 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"> 

and an element such as <userTask newns:ownerID="owner1"> ).

The custom elements in my Activiti diagram aren't working either - the Eclipse plugin seems to drop my own namespace and ignore my elements. I do not know why; still exploring.

0
source

Since you are not talking about any specific BPMN implementation (activiti, jbpm), and you are talking about your own process processor, I assume that you want to extend the XML in accordance with the BPMN rules.

However, you can look at the BPMN 2.0 specification (I think it is very long and probably boring), or you can try looking at some bpmn book. The BPMN method and style book contains information on implementing BPMN, so this may be useful to you.

Note. When there is a standard such as BPMN that has a lot of support, it is sometimes useful if you really need to. Is it worth expanding something standard that has not been considered? (Not to say that you cannot do this, but you must think that it brings you, and if you could not do it with ordinary things).

0
source

You can watch the Eclipse BPMN2 Modeler .

Tutorials are available (for example, the runtime extension and creating a custom task ).

0
source

Source: https://habr.com/ru/post/920212/


All Articles