Skip to content

Releases: process-analytics/bpmn-visualization-js

0.43.0

29 Feb 16:21
Compare
Choose a tag to compare

📢 This new version brings improvements to the parser and the way users can retrieve the bpmn-visualization version.

Thanks to all the contributors of this release 🌈: @tbouffard

See milestone 0.43.0 to get the list of issues covered by this release.

Deprecated APIs

BpmnVisualization.getVersion is now deprecated and will be removed in v0.45.0, see #2966.
Use the getVersion function instead. For more details, see #2965.

What's Changed

Full Changelog: v0.42.0...v0.43.0

🐛 Bug Fixes

⤵️ Library Integration

📝 Documentation

🎮 Demo and Examples

📦 Dependency updates

👻 Maintenance

0.42.0

16 Oct 09:24
Compare
Choose a tag to compare

This new version brings improvements to the ShapeBpmnSemantic data returned by the API. There are now more details for Link Events.

Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard

See milestone 0.42.0 to get the list of issues covered by this release.

Highlights

When related to a Link Event, ShapeBpmnSemantic objects now return the source identifiers (linkEventSourceIds) of a catch event or the target identifier (linkEventTargetId) of a throw event.

This improves navigation between model elements.

ℹ️ For more details, see #2911.

What's Changed

Full Changelog: v0.41.0...v0.42.0

🧲 BPMN diagram usability

  • feat: add link event data in ShapeBpmnSemantic (#2911) @csouchet
  • feat: add more data in the internal model for the link events (#2924) @csouchet

🐛 Bug Fixes

📦 Dependency updates

👻 Maintenance

  • chore(eslint): use unicorn/recommended rules (#2824) @csouchet
  • chore(eslint): add some unicorn rules (#2925) @csouchet
  • refactor: internally store more data of event definitions (#2923) @csouchet
  • chore(eslint): add unicorn/prefer-string-slice rule (#2913) @csouchet
  • test: simplify the code of toBpmnStyle() (#2915) @csouchet
  • chore(eslint): add @typescript-eslint/dot-notation rule (#2914) @csouchet
  • chore(eslint): enable 3 rules of the unicorn plugin (#2912) @csouchet
  • test(JsonBuilder): use the id of event for the id of eventDefinition (#2910) @csouchet
  • test(JsonBuilder): add new properties for link events (#2895) @csouchet
  • test(JsonBuilder): have unique id for event definition (#2906) @csouchet
  • test(JsonBuilder): avoid duplicated code when adding EventDefinition (#2901) @csouchet

0.41.0

02 Oct 12:42
Compare
Choose a tag to compare

This new release provides more information in the ShapeBpmnSemantic objects returned by the APIs.
It also includes some improvements to the contributor documentation.

Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard

See milestone 0.41.0 to get the list of issues covered by this release.

Highlights

API Enhancement

This new release introduces, the following properties are available for ShapeBpmnSemantic objects returned by APIs:

  • parentId
  • eventDefinitionKind for the events
  • callActivityKind and globalTaskKind for the call activities
  • subProcessKind for the sub-processes

image

ℹ️ For more details, see the issue #2854.

What's Changed

Full Changelog: v0.40.0...v0.41.0

🧲 BPMN diagram usability

🐛 Bug Fixes

  • fix(API): prevent a reset/remove when passing an empty string (#2900) @tbouffard

📝 Documentation

📦 Dependency updates

👻 Maintenance

  • test(JsonBuilder): not possible to have NONE eventDefinitionOn and eventDefinitionKind in same time in BuildEventParameter (#2899) @csouchet
  • test(JsonBuilder): enforce the type of BuildEventDefinitionParameter eventDefinitionKind property in JsonBuilder (#2897) @csouchet
  • test: split the file containing the unit tests for all events (#2896) @csouchet
  • chore(eslint): add unicorn/prefer-spread rule (#2878) @csouchet
  • chore(eslint): add unicorn Switch rules (#2881) @csouchet
  • chore(eslint): add unicorn/numeric-separators-style and unicorn/no-zero-fractions rules (#2880) @csouchet
  • chore(eslint): add unicorn Array rules (#2877) @csouchet
  • chore(eslint): add unicorn/no-negated-condition rule (#2876) @csouchet
  • chore(eslint): add unicorn/prefer-dom-node-append and unicorn/prefer-dom-node-remove rules (#2875) @csouchet
  • chore(eslint): add unicorn/consistent-function-scoping rule (#2873) @csouchet
  • chore(eslint): add unicorn/prefer-logical-operator-over-ternary rule (#2871) @csouchet
  • chore(eslint): add unicorn/prefer-ternary rule (#2870) @csouchet
  • chore(eslint): add unicorn/prefer-dom-node-text-content rule (#2869) @csouchet
  • chore(eslint): add unicorn/no-array-for-each rule (#2868) @csouchet
  • chore(eslint): add unicorn/prefer-add-event-listener rule (#2867) @csouchet
  • chore(eslint): add unicorn/prefer-query-selector rule (#2866) @csouchet
  • chore(eslint): add unicorn/prevent abbreviations rule (#2865) @csouchet
  • ci(release): eliminate bypassing of branch protection (#2863) @tbouffard

0.40.0

18 Sep 13:10
Compare
Choose a tag to compare

This new version brings improvements to the incoming and outgoing properties of BpmnSemantic objects returned by APIs.
It also includes some improvements to API documentation.

Thanks to all the contributors of this release 🌈: @assynour, @csouchet and @tbouffard

See milestone 0.40.0 to get the list of issues covered by this release.

What's Changed

Full Changelog: v0.39.0...v0.40.0

🚀 BPMN support

📝 Documentation

  • docs: fix code example of getModelElementsByKinds (#2846) @assynour
  • docs: improve the JSDoc of NavigationConfiguration.enabled (#2847) @tbouffard

👻 Maintenance

  • chore: use the macOS 13 runner in GH Actions (#2809) @csouchet
  • refactor(demo): improve method signatures and async code (#2819) @csouchet
  • test: improvement management of asynchronous configuration (#2817) @csouchet
  • chore(eslint): add eslint-plugin-import dependency (#2842) @csouchet

0.39.0

04 Sep 13:27
Compare
Choose a tag to compare

This new version improves the usability of BPMN diagrams by providing a new API for obtaining model elements, and includes various bug fixes and maintenance tasks.

Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard

See milestone 0.39.0 to get the list of issues covered by this release.

Highlights

ESM Library

A notable improvement in this release is the resolution of an issue related to the exported ESM (ECMAScript Module) bundle. This fix now allows bpmn-visualization to be used as an ESM bundle in Node.js projects.
This may be of interest to applications that want to test code that relies on bpmn-visualization.

New APIs for retrieving BPMN Semantics

We've added APIs to retrieve the BPMN semantics of elements by kind or ID, reducing unnecessary data retrieval.

Retrieving by element Kind

We've introduced a new API that allows users to retrieve BPMN semantics based on the element kind. This API is specifically designed for users who only need to access BPMN semantic data.

Here's an example of how to use it:

const modelElements: BpmnSemantic[] = bpmnVisualization.bpmnElementsRegistry
  .getModelElementsByKinds(bpmnKinds);

for (const modelElement of modelElements) {
  const value = modelElement.isShape ? 'top-left' : 'bottom-center';
  ....
}

ℹ️ For more information, refer to #2841.

Retrieving by element ID

Another valuable addition is the API for retrieving BPMN semantics by element ID. This new API optimizes usage by reducing unnecessary data retrieval when the caller only needs semantic information.

Here's an example of how to use it:

const modelElements: BpmnSemantic[] = bpmnVisualization.bpmnElementsRegistry
  .getModelElementsByKinds(bpmnIds)
  .filter(semantic => semantic.isShape);

ℹ️ For more information, refer to #2837.

Examples: Referencing the bv-experimental-add-ons demo

In our examples, we've included a link to the bv-experimental-add-ons demo.

📣 Don't forget to check out the latest release notes for bv-experimental-add-ons!
This release introduces a new plugin mechanism for bpmn-visualization and shows a demo of a plugin that provides new features for overlays.
You can find all the details here: Release Notes.

image!

What's Changed

Full Changelog: v0.38.1...v0.39.0

🧲 BPMN diagram usability

  • feat: add a method to only get BPMN semantic of elements by kind (#2841) @tbouffard
  • feat: add a method to only get BPMN semantic of elements by id (#2837) @tbouffard

🐛 Bug Fixes

  • fix: remove extra parsing of lane elements which are not in the BPMN spec (#2805) @csouchet

📝 Documentation

👻 Maintenance

0.38.1

22 Aug 09:47
Compare
Choose a tag to compare

This new release focuses on maintenance.

Thanks to all the contributors of this release 🌈: @tbouffard

See milestone 0.38.1 to get the list of issues covered by this release.

What's Changed

Full Changelog: v0.38.0...v0.38.1

🐛 Bug Fixes

  • fix: reset the style of elements only when passing nullish param (#2798) @tbouffard

📦 Dependency updates

👻 Maintenance

  • refactor: move overlay management out of BpmnElementsRegistry (#2800) @tbouffard
  • chore(release): publish announce tweet manually (#2799) @tbouffard
  • chore: migrate the code of the demo/test pages to TypeScript (#2794) @tbouffard
  • chore: migrate the documentation generation script to ESM (#2792) @tbouffard

0.38.0

24 Jul 14:18
Compare
Choose a tag to compare

This new release brings improvements to the styling feature, updates to the documentation, and the addition of a new demo.
It also introduces a new experimental library with exciting new features.

Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard

See milestone 0.38.0 to get the list of issues covered by this release.

Highlights

New support for fill color in the updateStyle API: Gradient

We are pleased to introduce support for fill color gradients in the updateStyle API with this latest release. This enhancement allows users to apply fill color gradients, adding a new dimension of customization to shapes.

image

For more details, please see the related issue #2760.

Demos

New Prediction Demo

We are pleased to introduce the New Prediction Demo! This demo showcases the seamless integration of the New Prediction Demo from the bpmn-visualization-examples repository.

Enregistrement.de.l.ecran.2023-07-24.a.15.54.16.mov

ℹ️ For more information and to experience the demo first hand, visit the Prediction Demo Code.

Elements Identification Demo

The Elements Identification Demo has received improvements. It now uses the updateStyle API with the inherit and swimlane color options.

Experience the improved demo here: Elements Identification Demo (drag and drop your BPMN diagram into the container below the control buttons).

inherit

The styling of boundary events has been updated to use the inherit value for the fill color, font color, and stroke color. Additionally, the direct parent elements of the boundary events are now colored with 5% opacity to visualize the change at the same time.

swimlane

The child elements of a subProcess have been restyled to use the swimlane value for the fill color, font color, and stroke color. Additionally, the Pool and the Lane are now colored with 5% opacity to visualize the change at the same time.

If an element is not a child of a subProcess, it retains the default style.

ℹ️ For more information, see #2748.

New Experimental Library

As part of this release, we are introducing the New Experimental Library. You can explore and try out exciting new features in the bv-experimental-add-ons repository.

Enregistrement.de.l.ecran.2023-07-24.a.16.14.31.mov

What's Changed

Full Changelog: v0.37.0...v0.38.0

🌈 BPMN diagram styling

  • feat(style): add support for fill color gradient in the Update Style API (#2760) @csouchet

📝 Documentation

  • docs(style): explain usage of 'inherit' and 'swimlane' colors (#2748) @csouchet

📦 Dependency updates

👻 Maintenance

0.37.0

26 Jun 12:52
Compare
Choose a tag to compare

This new version provides a new API for resetting the entire style of BPMN elements.

Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard

See milestone 0.37.0 to get the list of issues covered by this release.

Highlights

New API for resetting the entire style of BPMN elements

In previous versions of bpmn-visualization, it was possible to reset the style of one or more properties of one or more elements.
This feature can be used when the style is first updated and then needs to be reset to its initial value.

In version 0.37.0, a new API is available for resetting all properties in a single call. It is also possible to reset the style of all BPMN diagram elements.

// Reset task and sequence flow styles
bpmnVisualization.bpmnElementsRegistry.resetStyle('task_1', 'sequenceFlow_1');

// reset the style of all elements of the diagram
bpmnVisualization.bpmnElementsRegistry.resetStyle();

Examples

A new example has been added to show how to integrate bpmn-visualization in a Web Component developed with lit.

In particular, it explains how to workaround an issue with Web Component due to mxGraph.

🤔 For more details, see

Dependencies

bpmn-visualization now depends on a new version of fast-xml-parser which addresses a security vulnerability (#2751). This is a follow-up to the correction described in https://github.com/process-analytics/bpmn-visualization-js/releases/tag/v0.36.0.
It's important to note that bpmn-visualization itself is not vulnerable to this CVE as it doesn't use the processEntities feature implicated in the vulnerability.
However, we recommend updating your application to the latest version of bpmn-visualization for optimal security.

ℹ️ Further information can be found in GHSA-gpv5-7x3g-ghjv.

What's Changed

Full Changelog: v0.36.0...v0.37.0

🌈 BPMN diagram styling

  • fix: apply style update to the message flow icon (#2744) @tbouffard
  • feat(style): add a new API to reset the modified style of given elements via APIs (#2732) @csouchet

🐛 Bug Fixes

📝 Documentation

📦 Dependency updates

👻 Maintenance

0.36.0

12 Jun 12:33
Compare
Choose a tag to compare

This new version brings several improvements, including enhancements to BPMN support (Ad-Hoc and Transition Sub-Processes), documentation updates, dependency updates, and maintenance. It also includes external contributions from community members.

Thanks to all the contributors of this release 🌈: @brendanlaschke, @csouchet and @tbouffard

See milestone 0.36.0 to get the list of issues covered by this release.

Highlights

🚀 BPMN support

Transition Sub-Process

We have introduced the support for the Transition Sub-Process.

See the image below for an example:

image

Ad-Hoc Sub-Process

We have also added the parsing functionality for the Ad-Hoc Sub-Process, although their visualization is not yet implemented.

⚠️ Please note that the rendering of the Ad-Hoc marker will be implemented in a future release.

See the image below for a representation:

image

External Contributions

We are excited to include the following external contributions in this release:

Vue Example

A new integration project for Vue has been contributed to the bpmn-visualization Examples repository.

vue-example

ℹ️ Check it out here.

Dependencies

We have addressed a security vulnerability related to fast-xml-parser (#2736).
It's important to note that bpmn-visualization itself is not vulnerable to this CVE as it doesn't use the processEntities feature implicated in the vulnerability.
However, we recommend updating your application to the latest version of bpmn-visualization for optimal security.

ℹ️ Further information can be found here.

Breaking changes

This release includes some breaking changes that affect applications extending or modifying the BPMN theme. These changes should be transparent, and no impact has been observed in the bpmn-visualization examples and demo.

  • In order to improve the implementation, the BpmnStyleIdentifier and MarkerIdentifier have been redefined as constant objects instead of classes.
    ℹ️ Refer to PR #2716 for more details.
  • The StyleDefaut enum has been replaced with a constant object.
    ℹ️ PR #2728 provides additional information about this modification.

⚠️ Review and update your codebase to accommodate these breaking changes if necessary.

Install Size for Development

The installation size of the library for development purposes has been decreased.
Comments and JSDoc have been removed from the ESM and IIFE (non-minified) bundles provided in the npm package.

image

ℹ️ For more information, you can refer to this pull request.

What's Changed

Full Changelog: v0.35.0...v0.36.0

🚀 BPMN support

📝 Documentation

📦 Dependency updates

  • chore(deps): bump @typed-mxgraph/typed-mxgraph from 1.0.7 to 1.0.8 (#2737) @csouchet
  • chore(deps): bump fast-xml-parser from 4.2.2 to 4.2.4 (#2736) @dependabot

👻 Maintenance

0.35.0

30 May 13:20
Compare
Choose a tag to compare

This new version introduces support for the "BPMN in color" specification and dependency changes.

Thanks to all the contributors of this release 🌈: @tbouffard

See milestone 0.35.0 to get the list of issues covered by this release.

Highlights

Support for the BPMN in Color specification

The "BPMN in Color" specification lets you define the colors of BPMN elements during modeling.
This specification is recommended for color exchange between BPMN modeling tools.

ℹ️ More details about the specification are available in the bpmn-miwg/bpmn-in-color GitHub repository.

In bpmn-visualization 0.35.0, "BPMN in Color" support is enabled with a fallback to bpmn.io-specific BPMN extensions for colors.
By default, rendering of colors defined in the BPMN source is disabled. To enable "BPMN in Color" support, use the following code snippet:

const bpmnVisualization = new BpmnVisualization({
            container: 'bpmn-container',
            renderer: { ignoreBpmnColors: false }
});

rendering of the C.1.0 diagram when the "BPMN in Color" support is enable
Rendering of the C.1.0 diagram when the "BPMN in Color" support is enable

⏩ Want to test it live? Give a try to the following example:

Dependency changes

Switched from lodash to lodash-es

Previously, bpmn-visualization depended on the lodash-throttle and lodash-debounce CommonJS dependencies.
They have been replaced by a single ESM dependency: lodash-es.

Using the ESM dependency allows for better tree shaking and improves interoperability with bundlers.

For example, this change eliminates the need to configure the removal of warnings issued by Angular 15 due to lodash dependencies.
In Angular 15, there is a warning about using CommonJS dependencies, specifically for the lodash dependencies. However, the step to remove these warnings is no longer necessary as demonstrated in process-analytics/bpmn-visualization-examples#495.

ℹ️ For more information, see #2678.

Removal of entities

bpmn-visualization no longer depends on the entities dependency to decode XML attribute entities.
Instead, it provides its own default entities decoder. Users can also use their own decoder when initializing the library.
The following code snippet demonstrates how to create a decoder using the entities library:

import { decodeXML } from 'entities';
const bpmnVisualization = new BpmnVisualization({
            container: 'bpmn-container',
            parser: {
              additionalXmlAttributeProcessor: (val: string) => { return decodeXML(val) }
            }
});

ℹ️ For more details, see #2704.

What's Changed

Full Changelog: v0.34.1...v0.35.0

🚀 BPMN support

🧲 BPMN diagram usability

  • fix: keep existing CSS classes when calling the "Update Style" API (#2709) @tbouffard

🐛 Bug Fixes

  • fix: keep existing CSS classes when calling the "Update Style" API (#2709) @tbouffard

⤵️ Library Integration

🎮 Demo and Examples

  • feat(demo): simplify logs displaying fit and load options (#2707) @tbouffard

📦 Dependency updates

👻 Maintenance

  • test: prepare support for transaction sub-processes (#2713) @tbouffard
  • test(e2e): only run the "Update Style" API when query parameters are set (#2693) @tbouffard
  • chore: fix a typo in the release-drafter template (#2685) @tbouffard