Releases: process-analytics/bpmn-visualization-addons
0.8.0
⚡ This new version renames the npm package. ⚡
List of issues: milestone 0.8.0
Breaking changes
Usage
The GitHub repository and npm package have been renamed from bv-experimental-add-ons
to bpmn-visualization-addons
to better reflect the library's purpose.
ℹ️ For more details on this choice, see #310.
If your application was using the package under its old name (version 0.7.1 or earlier), proceed as follows 👇 :
# first uninstall the old package
npm uninstall @process-analytics/bv-experimental-add-ons
# then install the new package
npm install @process-analytics/bpmn-visualization-addons
Then, update the imports in your application code to use the new package name as follows 👇:
- import {BpmnVisualization} from "@process-analytics/bv-experimental-add-ons";
+ import {BpmnVisualization} from "@process-analytics/bpmn-visualization-addons";
For developers of bpmn-visualization-addons
As the GitHub repository URL has changed, we strongly recommend updating any existing local clones to point to the new repository URL. You can do this by using git remote on the command line:
# using ssh
git remote set-url origin [email protected]:process-analytics/bpmn-visualization-addons.git
# using https
git remote set-url origin https://github.com/process-analytics/bpmn-visualization-addons.git
For more details, see the related GitHub documentation.
What's Changed
📝 Documentation
- docs: use the new
bpmn-visualization-addons
repository name by @tbouffard in #311 - docs: update SonarCloud badge in README by @tbouffard in #313
- docs(StyleByNamePlugin): mention the match of several elements by @tbouffard in #314
⚙️ Other Changes
- refactor: improve internal types based on SonarCloud feedback by @tbouffard in #315
- refactor!: rename the package to
bpmn-visualization-addons
by @tbouffard in #316
Full Changelog: v0.7.1...v0.8.0
0.7.1
⚡ This new version makes the usage of bv-experimental-add-ons
easier in applications built with webpack. ⚡
List of issues: milestone 0.7.1
🚀 Highlight - application built with webpack
In the past, when integrating bv-experimental-add-ons
into an application built by webpack, webpack complained that certain modules could not be found, as in the following example 👇🏿 :
ERROR in ./node_modules/@process-analytics/bv-experimental-add-ons/dist/index.js 16:0-32
Module not found: Error: Can't resolve './bpmn-elements' in '/user/app/node_modules/@process-analytics/bv-experimental-add-ons/dist'
Did you mean 'bpmn-elements.js'?
This was only happening with webpack, not with other bundlers. Webpack expects imports and exports to use the js file extension, which was not the case in older versions of bv-experimental-add-ons
.
In version 0.7.1, imports and exports have been updated to make webpack hapyy, so you can too 🎁.
ℹ️ For more details and a workaround for older version, see #301.
What's Changed
🐛 Bug Fixes
- fix(demo): add CSS rules removed by mistake by @tbouffard in #290
- fix: add missing file extension in imports of the npm package by @tbouffard in #301
📦 Dependency updates
- chore(deps): bump bpmn-visualization from 0.43.0 to 0.44.0 by @dependabot in #296
⚙️ Other Changes
- refactor(demo): fetch the BPMN diagrams by @tbouffard in #287
- chore(dependabot): ignore
@types/node
by @tbouffard in #297 - chore(package): store application resources in the
lib
folder by @tbouffard in #300 - chore: correctly include the
lib
folder in the npm package by @tbouffard in #303 - chore(test): switch from ts-jest to @swc/jest by @tbouffard in #302
Full Changelog: v0.7.0...v0.7.1
0.7.0
⚡ Exciting New Features in this Release! ⚡
Check out the full list of issues here: Milestone 0.7.0
🚀 Highlights
🎨 New Plugin: StyleByNamePlugin
In bpmn-visualization
, BPMN elements are identified by their unique IDs. However, in some cases (like "Process Discovery"), only the element names are available to applications.
Previously, the BpmnElementsSearcher
was introduced to retrieve an element's ID by name, allowing the use of existing bpmn-visualization
APIs. With this release, the new StyleByNamePlugin
simplifies things! Now, you can directly style elements using their names, mirroring the functionality of StyleRegistry
.
Before:
const bpmnVisualization = new BpmnVisualization({
container: 'bpmn-container',
});
const bpmnElementsRegistry = bpmnVisualization.bpmnElementsRegistry;
const searcher = new BpmnElementsSearcher(bpmnElementsRegistry);
// Update the style of a given element
const bpmnElementId = searcher.getElementIdByName('element-name');
bpmnElementsRegistry.updateStyle(bpmnElementId, styleUpdate);
// Updating the style of multiple elements was even more complex
const bpmnElementIds = searcher.searcher.getElementsByNames(['element-name-1', 'element-name-2'])
.map(bpmnElement => bpmnElement.id);
bpmnElementsRegistry.updateStyle(bpmnElementIds, styleUpdate);
Now:
const bpmnVisualization = new BpmnVisualization({
container: 'bpmn-container',
plugins: [StyleByNamePlugin], // register the plugin
});
const styleByNamePlugin = bpmnVisualization.getPlugin<StyleByNamePlugin>('style');
// Update the style of a given element
styleByNamePlugin.updateStyle('element-name', styleUpdate);
// Update the style of multiple elements
styleByNamePlugin.updateStyle(['element-name-1', 'element-name-2'], styleUpdate);
✨ This streamlined approach significantly reduces complexity when working with element names!
📣 More name-based plugins are coming soon: 🎉
🛠️ Introducing Specialized Plugins
This version also introduces several new plugins, breaking down the BpmnElementsRegistry
API into focused, interface-specific components:
CssClassesPlugin
mirrorsCssClassesRegistry
OverlaysPlugin
mirrorsOverlaysRegistry
StylePlugin
mirrorsStyleRegistry
These plugins hint at the future direction of bpmn-visualization
, where the BpmnElementsRegistry
will be split into more specialized APIs.
ℹ️ For further details, visit Issue #77
What's Changed
🎉 New Features
- feat: introduce
StyleByNamePlugin
by @tbouffard in #281 - feat(demo): demonstrate the style update plugin using BPMN names by @tbouffard in #285
- feat: introduce the
StylePlugin
by @tbouffard in #286 - feat: introduce
CssClassesPlugin
by @tbouffard in #288 - feat(type): add guidance to retrieve core plugins by @tbouffard in #289
🐛 Bug Fixes
- fix: add missing
ElementsPlugin
export by @tbouffard in #280
📝 Documentation
- docs: improve
BpmnElementsSearcher
documentation by @tbouffard in #221
⚙️ Other Changes
- chore(dev): build with Node 20 by @tbouffard in #271
- refactor(demo): reorganize CSS by @tbouffard in #284
Full Changelog: v0.6.1...v0.7.0
0.6.1
⚡ This new version includes internal changes, in particular improvements that apply to the demo. ⚡
List of issues: milestone 0.6.1
What's Changed
🎉 New Features
- feat(demo): improve zoom control buttons by @tbouffard in #186
⚙️ Other Changes
- chore: update the script to develop the demo by @tbouffard in #166
- ci: add "actions" permissions to fix GH Pages deploy by @tbouffard in #194
- ci: automate the initialization of GitHub release by @tbouffard in #198
- refactor: simplify listener declaration in OverlayPlugin demo by @tbouffard in #201
Full Changelog: v0.6.0...v0.6.1
0.6.0
⚡ This new version improves the plugins
and BpmnElementsSearcher
. ⚡
List of issues: milestone 0.6.0
Highlights
Minimal version of bpmn-visualization
You must now use bpmn-visualization
0.42.0 or higher with bv-experimental-add-ons
. The previous version required bpmn-visualization
0.40.0 or higher.
ℹ️ For more details, see #155.
Plugin are now configurable
The plugins can now be configured by passing options at BpmnVisualization
initialization.
Previously, the plugins must be configured by calling a method. This is now easier and consistent with the rest of the library.
New ElementsPlugin
plugin
This new version introduces the ElementsPlugin
, which exposes the bpmn-visualization
API methods that retrieve elements from the model.
This is the first step of an initiative that will provide all methods of BpmnElementsRegistry
via plugins.
ℹ️ For more details, see #77
New CasePathResolver
This new class is dedicated to path resolution of a single instance/case of a process, while the existing PathResolver
is for general resolution.
Given a set of elements considered as completed, it is currently able to compute the edges between the provided shapes and the shapes around the provided edges.
It is also able to consider completed and pending elements both in the input parameter and in the inferred path.
This is the first step towards the implementation of more intelligent computing in the future.
ℹ️ For more details, see #142
More options for BpmnElementsSearcher
BpmnElementsSearcher
allows you to retrieve elements by providing their name.
Previously, it provided only one method, which returned the identifier of the element concerned. In many cases, the need is to retrieve the complete model object, not just its identifier. An additional call to the API was then necessary to obtain the complete object.
BpmnElementsSearcher
now provides a new method that retrieves the complete element from the model. In addition, it allows you to choose how deduplication is performed if 2 or more elements match the name provided.
What's Changed
🎉 New Features
- feat: enable diagram navigation in the "Overlays" demo by @tbouffard in #135
- feat: introduce
ElementsPlugin
by @tbouffard in #139 - feat(BpmnElementsSearcher): provide options to deduplicate elements by @tbouffard in #131
- feat(BpmnElementsSearcher): add a new method to get all elements by name by @tbouffard in #134
- feat: introduce
CasePathResolver
by @tbouffard in #142 - feat: add a way to configure plugins by @tbouffard in #159
📝 Documentation
- docs: present the library as less "experimental" than before by @tbouffard in #160
⚙️ Other Changes
- style: apply
unicorn/recommended
rules by @tbouffard in #127 - chore(eslint): lint imports with
eslint-plugin-import
by @tbouffard in #140 - refactor(plugin): remove wrong comment by @tbouffard in #141
- refactor(path): let
bpmn-visualization
filters duplicates by @tbouffard in #155
Full Changelog: v0.5.0...v0.6.0
0.5.0
⚡ This new version improves BpmnElementsSearcher
and PathResolver
. ⚡
List of issues: milestone 0.5.0
Minimal version of bpmn-visualization
You must now use bpmn-visualization
0.40.0 or higher with bv-experimental-add-ons
. The previous versions required bpmn-visualization
0.39.0 or higher.
What's Changed
🎉 New Features
- feat: allow to find flows when searching by name by @tbouffard in #118
- feat: improve the robustness of
PathResolver
by @tbouffard in #119 - feat: detect message flows with
PathResolver
by @tbouffard in #120 - feat: expose bpmn-visualization methods in OverlaysPlugin by @tbouffard in #123
📝 Documentation
- docs: add emoji in "other changes" paragraph of the release notes by @tbouffard in #116
📦 Dependency updates
- chore(deps): bump bpmn-visualization from 0.39.0 to 0.40.0 by @dependabot in #125
⚙️ Other Changes
Full Changelog: v0.4.0...v0.5.0
0.4.0
⚡ This new version improves the plugin mechanism and the robustness of BPMN element utilities. ⚡
List of issues: milestone 0.4.0
Breaking changes
Minimal version of bpmn-visualization
You must now use bpmn-visualization
0.39.0 or higher with bv-experimental-add-ons
. Previous versions required bpmn-visualization
0.37.0 or higher.
TypeScript usage of BpmnVisualization.getPlugin
The method now returns an instance of Plugin
. In previous versions, it returned unknown
.
Highlights
Simplified plugin usage for TypeScript users
Previously, you had to cast the returned value with the as
keyword or with <>
:
const myPlugin1 = bpmnVisualization.getPlugin('my-plugin-1') as MyCustomPlugin1;
const myPlugin2 = <MyCustomPlugin2>bpmnVisualization.getPlugin('my-plugin-2');
In the new version, you can still use the previous way, but we suggest you use the new features which provide better guidance:
const myPlugin = bpmnVisualization.getPlugin<MyPlugin>('my-plugin');
ℹ️ If you want more details, please see #106
What's Changed
🎉 New Features
- feat: prevent multiple plugins with the same ID from loading by @tbouffard in #103
- feat!: use generic type when getting a plugin by @csouchet in #106
- feat: improve the robustness of BPMN elements utilities by @tbouffard in #115
📝 Documentation
- docs: improve the release how-to by @tbouffard in #83
- docs: improve how-to create the GH releases content by @tbouffard in #94
- docs: describe the security policy by @tbouffard in #93
- docs(release): mention requirement changes for
bpmn-visualization
by @tbouffard in #105
📦 Dependency updates
⚙️ Other Changes
- chore: configure eslint and fix lint errors by @tbouffard in #84
- chore: order npm scripts alphabetically in package.json by @tbouffard in #85
- refactor: fix Code Smells detected by SonarCloud by @tbouffard in #86
- chore: add dependabot configuration by @tbouffard in #87
- chore(dev-deps): restore usage of typescript 4.5.2 in check-ts-support by @tbouffard in #90
- chore(dependabot): do not update typescript by @tbouffard in #98
- chore: move project to ESM by @tbouffard in #99
- chore: add infrastructure to write JavaScript tests with jest by @tbouffard in #100
- refactor(demo): add rel="noopener" to external links by @tbouffard in #101
- test: add more tests for the plugins support by @tbouffard in #102
- chore: use bpmn-visualization 0.39.0 as the minimum version required by @tbouffard in #109
- refactor(demo): move assets to a dedicated sub-folder by @tbouffard in #110
- test: add tests to OverlaysPlugin by @tbouffard in #107
- test: move test files to a dedicated sub-folder by @tbouffard in #112
New Contributors
- @dependabot made their first contribution in #88
- @csouchet made their first contribution in #104
Full Changelog: v0.3.0...v0.4.0
0.3.0
⚡ Let's extend bpmn-visualization
with a new plugin mechanism ⚡.
This version provides the OverlaysPlugin
plugin to show you how to develop and register plugins. OverlaysPlugin
lets you hide and show overlays without removing them from the view.
Have a look at the live demo ⏩ https://process-analytics.github.io/bv-experimental-add-ons/
List of issues: milestone 0.3.0
What's Changed
🎉 New Features
- feat(demo): introduce a Home page for all demos by @tbouffard in #60
- feat(demo): better explain how to use the
PathResolver
demo by @tbouffard in #61 - feat: introduce plugins infrastructure and add
OverlaysPlugin
by @tbouffard in #62
📝 Documentation
- docs: add badges in README by @tbouffard in #57
- docs: improve package installation steps by @tbouffard in #56
- docs: add SonarCloud badge in README by @tbouffard in #69
⚙️ Other Changes
- build: develop the lib and demo with a single command by @tbouffard in #58
- refactor(demo): remove hack for
resetStyle
by @tbouffard in #70
Full Changelog: v0.2.0...v0.3.0
0.2.0
A demo is now available to show PathResolver
in action. You can see it live ⏩ https://process-analytics.github.io/bv-experimental-add-ons/
bv-experimental-add-ons_0.2.0_demo_PathResolver.mp4
List of issues: milestone 0.2.0
What's Changed
🎉 New Features
- feat: initialize demo for
PathResolver
by @tbouffard in #50 - feat: add
ShapeUtil.isBpmnArtifact
by @tbouffard in #52 - feat(demo): provide guidance in the page by @tbouffard in #54
📝 Documentation
- docs: add link to the
bpmn-visualization
repository by @tbouffard in #49
⚙️ Other Changes
- ci: fix paths in the build workflow by @tbouffard in #51
- ci: deploy demo to GitHub Pages by @tbouffard in #53
Full Changelog: v0.1.1...v0.2.0
0.1.1
📣 This is the first version available as npm package: https://www.npmjs.com/package/@process-analytics/bv-experimental-add-ons
What's Changed
📝 Documentation
- docs: mention "milestone" management in the release how-to by @tbouffard in #46
⚙️ Other Changes
- chore: fix workflows used to release and publish npm package by @tbouffard in #45
- chore(release): correctly tag when bumping the version of the package by @tbouffard in #47
- ci: fix permissions of versions.bash by @tbouffard in #48
Full Changelog: v0.1.0...v0.1.1