cancel
Showing results for 
Search instead for 
Did you mean: 

Support for the complex gateway

b_schnarr
Champ in-the-making
Champ in-the-making
Hello at all,

I would like to know if there are plans to support the complex gateway in engine, designer and modeler?
In addition, the same question is true for Compensation Boundary Events, Compensation Intermediate Throwing Events and Compensation Handlers.

Thanks for your answers

Best regards
Ben
14 REPLIES 14

b_schnarr
Champ in-the-making
Champ in-the-making

trademak
Star Contributor
Star Contributor
Hi Ben,

What kind of functionality would like to see in the complex gateway?
Have the logic implemented in a Java class or expression that you can define, or something else.
Do you use a lot of compensation events in your processes? If there's enough interest in the community we can definitely look into this.

Best regards,

b_schnarr
Champ in-the-making
Champ in-the-making
Hi Tijs, thanks for your feedback.

Concerning the complex gateway, I would like to refer to the following workflow patterns which imho only can be implemented using a complex gateway:

http://www.workflowpatterns.com/patterns/control/advanced_branching/wcp9.php
http://www.workflowpatterns.com/patterns/control/new/wcp28.php
http://www.workflowpatterns.com/patterns/control/new/wcp30.php
http://www.workflowpatterns.com/patterns/control/new/wcp31.php
http://www.workflowpatterns.com/patterns/control/new/wcp32.php

For those usecases, you need a complex gateway in this way: The modeler can add an expression to the Complex gateway that will determine
how many Tokens must arrive from its incoming Sequence Flow, before a Token will be sent down its outgoing Sequence Flow. Any additional Tokens that arrive later will be blocked at the Gateway (a complex gateway provides the the N out of M Join pattern)

Concerning the compensation events: I am of the opinion that business rollbacks are very important in a productive environment. Those BPMN constructs are not too exotic and should therefore be implemented to ensure a maximum of modelling possibilities.

Best regards
Ben

jbarrez
Star Contributor
Star Contributor
We haven't heard much demand for the complex gateway, hence why it hasn't been added before.
An n-out-of-m join is actually not that hard to do. The 'blocked' bit is a bit trickier.

The spec also mentions 'If tokens arrive later on the two remaining Sequence Flows, those tokens cause a reset of the Gateway and new token can be produced on the outgoing Sequence Flows. To determine whether it needs to wait for additional tokens before it can reset, the Gateway uses the synchronization semantics of the Inclusive Gateway.'

This is rather hard, as it implies keeping state somehow in the gateway.

I'm actually like the idea of Tijs (having a Java-based gateway), I think that would solve already a lot of use cases.

b_schnarr
Champ in-the-making
Champ in-the-making
does that mean that this will land on your roadmap?

jbarrez
Star Contributor
Star Contributor
Depends. I'm not sure about the complex gateway actually. It has some fuzzy semantics which aren't clear to me yet.

A java based gateway is something else. Although you can do it already today with an ActivityBehaviour (even the n-out-of-m), there is probably a simpler interface specifically targeted to  gateways and choosing sequence flow.

b_schnarr
Champ in-the-making
Champ in-the-making
Does a "java based gateway" mean that you cannot model this complex gateway with a symbol in the modeler and designer? Would be great so see a "complex gateway" in upcoming releases.

jbarrez
Star Contributor
Star Contributor
That doesn't really matter, we can add a complex gateway icon to anything and still make a java class mandatory 😉

b_schnarr
Champ in-the-making
Champ in-the-making
ok, would be great to see the complex gateway soon. For my thesis at university, I currently make an analysis how the Van der Aalst Patterns can be implemented using Activiti. If you would add support for the complex gateway, for Ad-hoc subprocesses and for conditional events, you could add the slogan to Activiti: "We support all Workflow-Patterns" 😉