BPMN editor goes to the next level!

One month ago, we released the first version of our BPMN2 editor. As promised in my last post, it was just the beginning to bring you the best tool for modeling your BPMN process on the web. After several days in total darkness, only armed with the BPMN2 specification and our keyboards, we’d like to show you what we’ve been working on.

Boundary event

The first thing that we have added is the boundary events. Now catch events can be attached to activities. That way, you can easily model what happens when an activity triggers some events. The activity will then be interrupted or not.

Boundary event example

Note that some events must not be attached to an activity, and conversely, some events can only be created as boundary. Thankfully, GenMyModel will help you create your events the way you want.


The most important addon is the support of subprocesses. A subprocess is an activity which can be “opened up” to show a lower-level process. It can be collapsed or expanded. Note that if you drag an element to a subprocess, it will be automatically expanded in order to accept the dragged element.

Subprocesses example

A subprocess can be specialized in three different types and each of them can be created from the toolbar:

  • Event subprocess
  • Ad-hoc subprocess
  • Transaction

I will describe them in the following sections.

Event subprocess

An event subprocess is not part of the normal flow of its parent process and no incoming or outgoing sequence flows can be attached to it. An event subprocess must have a start event with a trigger. And each time the start event is triggered while the parent process is active, the event subprocess will start.

To define a subprocess as an event subprocess, you need to set the flag triggeredByEvent to true in the property panel:

"Event subprocess properties"

After that, your subprocess has a dotted border and you won’t be able to attach sequence flows to it.

Event subprocess example

Ad-hoc subprocess

Another type of subprocess that has been added to our BPMN2 tool is the ad-hoc subprocess. Activities in an ad-hoc subprocess have no required sequence relationships. This means that activities can be executed in any order. We generally use it when activities within a subprocess are disconnected from each other. The performers determine when activities will start, what the next activity will be, and so on.

An ad-hoc subprocess is visualized by a marker with a “tilde” symbol placed at the bottom center as shown in the diagram below:

Ad-hoc subprocess example


According to OMG specification A transaction is a specialized type of subprocess that will have a special behavior that is controlled through a transaction protocol. Furthermore, all activities in a transaction logically belong together.

Generally, a transaction can have three outcomes:

  • Successful completion: represented by the sequence flow that leaves the transaction.
  • Failed completion (cancel): activities inside the transaction can be subjected to be canceled. This can be done by adding a cancel boundary event to the transaction. When the transaction will be canceled, the flow will be redirected to the cancel boundary event.
  • Hazard (error): this means that something went terribly wrong and a normal success or cancel is not possible. In order to show hazard outcome, you need to add an error boundary event to the transaction.

The following illustration shows a transaction created in GenMyModel with this three basic outcomes:

Transaction subprocess example

Call activity

GenMyModel also supports caldeliveredl activities. As the name suggests, call activities can be used to call a global process or a global task in a process. A call activity acts like a “wrapper” for the called element within the execution. Once your call activity is created, the called element can be set in the properties of this one (in the property panel).

Call activity example


The BPMN “group” is also a new addon. Groups are often used to highlight certain sections of a diagram without adding additional constraints as a subprocess would. Groups do not affect the flow of the process. This means that neither sequence flows nor message flows can be connected to groups. A group can stretch across the boundaries of a pool to surround diagram elements, often to identify activities that exist within a distributed business-to-business transaction.

Group example

Task, event and gateway conversion

We’ve delivered a little (but really useful) capability in the editor: the ability to convert some elements to another. All activities, events and gateways can be converted. If you missed it, you can do that by using the context menu (right click) on the element you want to convert. For example, it’s now possible to create a throw event with no definition and then, by using the context menu, set its definition.

BPMN activity conversion


This can save you a lot of time in addition to the shortcuts. For example, you can create a task with the t shortcut and then convert it to user task. Same thing for events (s for start event, e for end event, w for throw event and c for catch event).

BPMN2 import

The import functionality has also been vastly improved to be more compatible with most common BPMN tools. All the new added elements (boundary events, subprocess, call activity and group) should now be imported correctly.

You can find more information about it in this post, Vince (our beer lover) explains how this works and how you can import your BPMN2 files to GenMyModel.

What’s next?

Like you can see, many features have been added to our BPMN editor and…this is not over! Indeed we will continue to enhance it and we can already tell you what we’re working on:

  • Documentation export in PDF format.
  • More “links” between diagrams, like the possibility to create a process diagram from a subprocess.
  • BPMN process simulation (flow animation).

We hope you enjoy the new features and, as usual, your feedback is welcome.
Thanks for reading.

Tweet about this on TwitterShare on FacebookShare on Google+Share on LinkedIn

About the author

Justin Trentesaux Team

GenMyModel Evangelist and crazy developer.

I love everything about programing languages, web design and software architecture. I like to spend my time in the wild.