Skip to content

Deploy multiple processes and related resources in one deployment #304

Description

@NikitaShchienko

Problem

Right now a deployment from Control can contain only one file: one BPMN or one DMN. Forms, HTML, scripts and images can't be deployed at all, although the deployment detail view can already display them.

This causes three problems:

  • A process with subprocesses, decisions and forms has to be deployed as several separate deployments.
  • References with deployment binding (to a subprocess, decision or form) can't work, because they need the target resource in the same deployment.
  • Resources that belong together can't be deleted or rolled back together.

Solution

Add a new "New deployment" screen, opened from the Deploy button in Deployments. It uploads any number of files and sends them to the engine as one deployment.

The Deploy buttons in Process definitions and Decision definitions open the same screen. The old single-file screens are removed.

Requirements

Upload

  • Several files at once, via drag & drop or the file picker.
  • Supported types: BPMN, DMN, Camunda Forms (.form), HTML forms, scripts, images.
  • Deploy is blocked for unsupported, duplicate or empty files, or when the size or number limit is exceeded.
  • Individual files can be removed before deploying.

Deployment options

  • Deployment name, by default taken from the first BPMN file.
  • "Skip unchanged resources", i.e. duplicate filtering.
  • Tenant and source are set automatically, as they are now.

File list and preview

  • The list shows name, type, keys (process / decision / form) and status (OK / Warning / Error).
  • Clicking a file opens its preview: diagram, decision table, form, or text.

Reference check

  • For each uploaded BPMN, the screen finds its called subprocesses, decisions, forms and scripts, and shows where each one is found: in this deployment, already in the engine, or missing.
  • A missing resource with deployment binding is an Error and blocks deploy. With other bindings it is a Warning only.
  • Duplicate process, decision or form keys within one deployment are an Error.

Confirmation and result

  • The confirmation dialog lists what will be created, split by type: new definition or new version.
  • If the engine rejects any file, nothing is deployed. Errors are shown per file, and the failing files are highlighted.
  • On success, the user is taken to the details of the created deployment, with a summary like "X processes, Y decisions, Z forms".

Permissions

  • The button is shown to users who can deploy processes or decisions.
  • BPMN files require the process deploy permission; DMN files require the decision deploy permission. No new roles or permissions are added.

Other

  • Implement in both Community and Enterprise.
  • Add translations (EN, DE, ES, RU) and update the documentation.

Acceptance criteria

  1. The Deployments list has a Deploy button. Users without deploy permissions don't see it.
  2. Uploading 2 BPMN files (one calls the other), 1 DMN and 1 form creates one deployment with 4 resources.
  3. A form referenced with deployment binding but not uploaded blocks deploy. After the form is added, the error disappears.
  4. A decision that already exists in the engine is shown as found, with no warning.
  5. Two BPMN files with the same process key block deploy.
  6. If one file is invalid, nothing is deployed and the errors are shown for that file.
  7. Re-deploying an unchanged set with "Skip unchanged resources" on creates no new versions.
  8. A user with only the decision deploy permission can deploy DMN + form, but not BPMN.
  9. Deploying a single file works as before.

Out of scope

  • ZIP upload.
  • Automatically adding related resources from the engine.

Open questions

  1. Remove the old deploy screens right away, or keep them for one release?
  2. Should a missing reference with latest binding block deploy, or only warn?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

CandidatePriority task for the product

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions