bpmn-io / bpmn-js

A BPMN 2.0 rendering toolkit and web modeler.
https://bpmn.io/toolkit/bpmn-js/
Other
8.51k stars 1.31k forks source link

Handle collapsed sub-processes #1443

Closed MaxTru closed 2 years ago

MaxTru commented 3 years ago

This is an epic issue that may be broken down into multiple tasks if needed

What should we do?

In Q2/2021 we want to have an initial implementation allowing collapsable sub-processes in bpmn-js.

Various design and technical solution approaches exists. Hence we need to:

Disclaimer: this is not completed and will be adjusted while working on this epic

Why should we do it?

Several requests to have this from customer side exist and we commited to deliver a solution. Also see a variety of existing related issues (list not complete):

Requirements

Resources

Tracking the Rollout through this issue: https://github.com/bpmn-io/internal-docs/issues/340

marstamm commented 3 years ago

List of Problems we need to solve: https://github.com/marstamm/embedded-sub-process-prototype/

Prototypes can be tried out here: https://marstamm.github.io/embedded-sub-process-prototype/

marstamm commented 3 years ago

I shared the current prototypes with @andreasgeier and @volkergersabeck. The key results of the discussion are:

We need to clear up some fundamental questions:

Next Steps:

marstamm commented 3 years ago

Create concepts as described above

Overview of all Prototypes and the outcome so far: https://docs.google.com/spreadsheets/d/1tbMYnNGHUFw42-aXuF_u8nge5hetUd8auaPKdYvGG8c/edit?usp=sharing

Check spec for limitations/allowed elements

A sub-process can contain all elements a root-process can, namely Activities, Events, Gateways, Sequenz Flows and common elements such as Messages. This includes event-based sub-processes in the sub-process.

Pools and Participants can not be part of a Process.

marstamm commented 3 years ago

User Tests

We are using the prototypes for user tests. Part one covers navigating the Diagrams, the second part covers borders/display of child processes.

Notes are shared in this miro board (WIP) https://miro.com/app/board/o9J_lABH5i8=/

marstamm commented 3 years ago

Technical Prototype preparations

Outcomes:

Miro Board: https://miro.com/app/board/o9J_l-lFgjQ=/

marstamm commented 3 years ago

Breakdown from the first Prototype

The Prototype is on the branch sub-process-prototype on bpmn-js and diagram-js To achieve the minimal scope (Must-Have on Miro), we need to adjust the following:

BPMN Structure

Diagram-JS

BPMN-JS

Import

Modeling

Saving

Navigation Features

marstamm commented 3 years ago

Team alignment

Synced with the designers of Product Teams to understand where Problems could pop up

Optimize

In general, the integration with Optimize seems to be straight-forward

Features:

Operate

The main issue is the overlap with badges in the lower-right corner. This is a problem when a Sub-Process has incidents. Possible solutions:

Cockpit

Similar issue as Operate.

marstamm commented 3 years ago

Miro Link for Kickoff: https://miro.com/app/board/o9J_l7NuUV4=/

andreasgeier commented 3 years ago

UX review (intermediate state)

Attendees: @marstamm @andreasgeier

Action points

andreasgeier commented 3 years ago

@marstamm We did not talk about the scalability of the breadcrumb. Do you already have a solution for long breadcrumbs that would exceed the viewport width? (this also includes long labels of subprocesses)

marstamm commented 3 years ago

No, I have not thought about long breadcrumbs yet. One possibility is to use ellipsis and only show the first and last x Layers in those cases. E.g. Root > ... > Layer 35 > Layer 36 > Layer 37

We could also think of a maximum width and text-overflow: ellipsis; for individual Label Names (and especially IDs if no name is set).

nikku commented 3 years ago

The position is in conflict with the token simulation. If compatibility is a requirement, it needs to be solved. Idea: top centered position for bread crumb.

Should be fixed in token simulation. We should not account for extensions and how they do things in the core.

marstamm commented 3 years ago

In addition to this, we plan to move the breadcrumbs to the expanded sub-process once we display it, so the conflict might only exist on a specific version or not at all

andreasgeier commented 3 years ago

@marstamm Let's add your proposals for scalability to the list of todos.

andreasgeier commented 3 years ago

Quick sync @marstamm and @andreasgeier

New challenges because of the "ghost" borders:

nikku commented 2 years ago

Sync results with @marstamm:

In addition to unsolved UX issues Ghost elements cause a number of technical issues, both implementation wise and when integrating with the new feature in other applications.

:arrow_right: We'll make a conscious decision whether to support them. My proposal is to drop them for the time being.

nikku commented 2 years ago

Results of a minor modeling without ghost elements spike:

We are able to support basic modeling operations using the abstractions we got. What we need to implement is nothing out of the ordinary, which is a good sign. Still, a long walk to go :handbag:.

capture cjz21V_optimized


Basic findings:

nikku commented 2 years ago

Results of my spike available on the subprocess-modeling branch.

marstamm commented 2 years ago

Result of Today's meeting:

kurtsys-howest commented 2 years ago

Just wondering, is there any target for support modeling of collapsed subprocesses. Issue #1553 seems to be merged, but in the demo environment ( https://demo.bpmn.io/ ), I can't seem to find it. (btw, great job! It would be such an amazing thing to have, the subprocess collapse/expand support)

marstamm commented 2 years ago

Hi @kurtsys-howest ,

Thanks for your interest in this feature :smile: Please see the main Comment for the current Progress. Some things are still work in Progress, such as Copy/Pasting.

Once everything is done (and this issue is closed), we will release a new major version of bpmn-js, which we will then also be available on the demo Site.

marstamm commented 2 years ago

Released as v9.0.0

diggy128 commented 2 years ago

Any clue when to expect a new stable release of camunda-modeler to support this?

MaxTru commented 2 years ago

Any clue when to expect a new stable release of camunda-modeler to support this?

12.April 2022 is the plan. You can already use it in the nightly

diggy128 commented 2 years ago

We only use stable but April's 12th is just a week away. Thank you so much so the prompt response!