Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support BPMN Inclusive Gateways #6018

Closed
ningdr opened this issue Dec 16, 2020 · 7 comments · Fixed by #9747
Closed

Support BPMN Inclusive Gateways #6018

ningdr opened this issue Dec 16, 2020 · 7 comments · Fixed by #9747
Assignees
Labels
area/bpmn-support Marks an issue as related to supporting BPMN symbols blocker/stakeholder Marks an issue as blocked, waiting for stakeholder input kind/feature Categorizes an issue or PR as a feature, i.e. new behavior version:8.1.0-alpha5 Marks an issue as being completely or in parts released in 8.1.0-alpha5 version:8.1.0 Marks an issue as being completely or in parts released in 8.1.0

Comments

@ningdr
Copy link

ningdr commented Dec 16, 2020

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

@ningdr ningdr added the kind/feature Categorizes an issue or PR as a feature, i.e. new behavior label Dec 16, 2020
@npepinpe npepinpe added blocker/info Marks an issue as blocked, awaiting more information from the author Type: Question kind/feature Categorizes an issue or PR as a feature, i.e. new behavior and removed kind/feature Categorizes an issue or PR as a feature, i.e. new behavior Type: Question labels Dec 16, 2020
@npepinpe
Copy link
Member

Hi @ningdr. Could you describe your use case in more detail? Maybe we can help you find a different approach.

In the meantime, I can already tell you the core team has no short or mid term plan to support the inclusive gateway symbol, though I'm sure it will eventually make its way into Zeebe.

Hope this helps!

@npepinpe npepinpe added blocker/stakeholder Marks an issue as blocked, waiting for stakeholder input and removed blocker/info Marks an issue as blocked, awaiting more information from the author Status: Needs Triage labels Dec 16, 2020
@ningdr
Copy link
Author

ningdr commented Jan 12, 2021

For example, the node of flow_1111 will produce a variable which key is 'distStr', and the value of it is 'abd'. Then, after the inclusive gateway, this times, we need the engine to execute a and b branches. In the other process instance, if the value of the key has changed to 'abc', we need the engine to execute a, b, and c branches. For all of this, we just need to define a BPMN model. Because the ZEEBE engine didn't have an inclusive gateway, we can't use ZEEBE for our project!
image

@saig0 saig0 changed the title A project is badly needs of the inclusive gateway! This type gateway is in the core position of our project, but zeebe hasn't support. Support BPMN Inclusive Gateways Jan 13, 2021
@saig0
Copy link
Member

saig0 commented Jan 13, 2021

@ningdr thank you for providing the input 👍

I see that the inclusive gateway would be handy in this situation. It allows modeling the flow in a compact way.

But the inclusive gateway can also be tricky in more complex situations. Depending on the model, it can be hard to determine if an active path (i.e. a token) will merge with the inclusive gateway or not. This is important to know to decide if the gateway can be left or not.

In many situations, like in your case, you can model the workflow differently without inclusive gateways. For example, using a combination of parallel and exclusive gateways. It is not so compact and looks more complex but it would work for now 😉

@ningdr
Copy link
Author

ningdr commented Jan 13, 2021

I have thought of using the exclusive and parallel gateway, but, we need to load a BPMN model given by the other system, in this situation, we couldn't give a common function to process all the relationship which in the BPMN model.
Though there is the function, the model's elements relations which after the processing of the function must be very complex so that humans couldn't understand.

@felix-mueller felix-mueller added the area/bpmn-support Marks an issue as related to supporting BPMN symbols label May 11, 2022
@skayliu
Copy link
Contributor

skayliu commented Jul 7, 2022

Hi,i'm trying the inclusive gateway ,it can be activted in the fullfield sequences
20220707-160556

but stuck with the merge,the outgoing have been trigged twices

20220707-160549

@skayliu
Copy link
Contributor

skayliu commented Jul 8, 2022

@saig0 I think I have fix it,task a look those images。

20220708174529

20220708174803

20220708174825

zeebe-bors-camunda bot added a commit that referenced this issue Aug 8, 2022
9747: Support diverging inclusive gateway r=korthout a=skayliu

## Description

<!-- Please explain the changes you made here. -->
This PR adds support for the diverging (i.e. splitting, forking) inclusive gateway.
<img width="50%" alt="Screen Shot 2022-08-05 at 19 59 33" src="https://user-images.githubusercontent.com/3511026/183134257-7b62393c-eb51-4b06-9651-de834ebc2741.png">

When the inclusive gateway is entered:
- The condition of each outgoing sequence flow (of the inclusive gateway) is evaluated, and
  - if `true` that sequence flow will be taken. 
  - if none of the conditions evaluates to `true`, the _default_ flow is taken.
  - if none of the conditions evaluates to `true`, and no flow is set as _default_, then an incident is raised.
- Depending on the conditions, any combination of the flows can be taken.
- If the inclusive gateway only has one outgoing sequence flow, then it does not need to have a condition.

For example, when the conditions of flows `a` and `b` evaluate to `true`, then flows `a` and `b` are taken and their targets activated.

<img width="50%" alt="Screen Shot 2022-08-05 at 20 14 55" src="https://user-images.githubusercontent.com/3511026/183137053-a02a6694-3217-465a-8b87-41fb048cb2f2.png">

If none of the conditions evaluates to `true`, then the _default_ flow is taken.

<img width="50%" alt="Screen Shot 2022-08-05 at 20 17 20" src="https://user-images.githubusercontent.com/3511026/183137419-3ea72405-59bf-4c2f-beb3-ef1e26369e0c.png">


Related docs:
- [conditions](https://docs.camunda.io/docs/components/modeler/bpmn/exclusive-gateways/#conditions) (for exclusive gateway)
- [incidents](https://docs.camunda.io/docs/components/concepts/incidents/)

## Out of scope

This PR does not add support for the converging (i.e. merging, joining) inclusive gateway.
- The diverging inclusive gateway adds a lot of value, even without the converging behavior. 
- In addition, a combination of parallel and exclusive gateways can be used to merge the flows again.

## Related issues

<!-- Which issues are closed by this PR or are related -->
 
closes #6018 



10023: Add note about community channels to general issue template r=oleschoenburg a=menski

## Description

Try to guide people for general questions to the community channel, to reduce the amount of questions in github issues.


Co-authored-by: skayliu <skay463@163.com>
Co-authored-by: Sebastian Menski <sebastian.menski@camunda.com>
@korthout
Copy link
Member

korthout commented Aug 8, 2022

#9747 added support for the diverging (forking) behavior.

@Zelldon Zelldon added the version:8.1.0 Marks an issue as being completely or in parts released in 8.1.0 label Oct 4, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/bpmn-support Marks an issue as related to supporting BPMN symbols blocker/stakeholder Marks an issue as blocked, waiting for stakeholder input kind/feature Categorizes an issue or PR as a feature, i.e. new behavior version:8.1.0-alpha5 Marks an issue as being completely or in parts released in 8.1.0-alpha5 version:8.1.0 Marks an issue as being completely or in parts released in 8.1.0
Projects
None yet
Development

Successfully merging a pull request may close this issue.

10 participants