How to extend BPMN 2.0
Asked Answered
T

4

6

Currently, I'm investigating the ways to extend BPMN. I want to create a new task type with less properties than a task and also with some non-BPMN properties and a new type of pool.

Until now I saw that people mentioned of two ways, using Extension Points and using an external schema. Unfortunately in Internet, I could not find that many resources to understand these methods extensively.

What I understood from these methods:

  • Extension Points: There are some standard extension points provided by BPMN engine vendors (Aktiviti, jBPM, etc...). For instance in Activiti there is a Custom Service Task which can be extended with user desired properties but I did not find any resources if this newly created extension task can be deployed on the Aktiviti workflow engine and also it would be nice to see the new BPMN schema for this extension.

  • Using an external schema: Defining desired properties in an external schema and referencing this schema from Semantic.xsd. In this case we will also need to adapt our Workflow Engine but it's more flexible than the method I mentioned before or am I missing missing something?

The only thing that is not clear is this method does not extend directly task definition so these properties can be used by every element in BPMN?

An example external schema is:

    <?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 methods for extending BPMN or any resources that you can point me so that I can have a better insight about this topic?

Any help will be appreciated, thanks in advance!

Tylertylosis answered 11/7, 2012 at 11:18 Comment(0)
B
0

There's this tool developed by a brazilian researcher: http://code.google.com/p/bpmnx/

it works on extension points as far as i remember.

Bronze answered 25/2, 2013 at 10:20 Comment(0)
C
0

As you are not talking about any concrete BPMN implementation (activiti, jbpm), and you are talking about your own process engine I assume that what you want to do is extend the XML in accordance to BPMN rules.

That said, you can look at BPMN 2.0 specification (I think it's very long, and probably boring) or you can try to look at some bpmn book. BPMN method & style book has a part about implementing BPMN, so maybe that's useful to you.

Note: When there's a standard like BPMN, which has a lot of support, sometimes it's useful if you really need to extended. Is it worth extending something standard, which hasn't been considered? (Not saying you can't do it, but you should think what it brings to you and if couldn't you do it with the regular stuff).

Ceuta answered 6/3, 2013 at 17:19 Comment(0)
R
-1

Here is some discussion of this topic on the Activiti Forums and on the MDT Eclipse plugin forum.

Unfortunately, with some simple testing I have not been able to implement a 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 like <userTask newns:ownerID="owner1">).

Custom elements in my Activiti diagram don't work either -- the Eclipse plugin seems to discard my custom namespace and ignore my elements. Don't know why; still researching.

Rogers answered 20/9, 2012 at 16:53 Comment(0)
B
-1

You can take a look at the Eclipse BPMN2 Modeler.

There are some tutorials available (e.g. extending the runtime and creating a custom task).

Bedsore answered 8/7, 2015 at 9:29 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.