/uml-image-annotator

This fork aims to extend the bpmn-image-annotator in order to provide a toolkit to annotate uml diagrams

Primary LanguageJavaScriptApache License 2.0Apache-2.0

UML Image Annotator

This fork aims to extend the bpmn-image-annotator in order to provide a toolkit to annotate hand-sketched UML class diagrams.

Installation

Check out installation instructions of original repository.

Workflow

  1. Upload image of hand-sketched UML class diagram
  2. Model UML-class diagram over the image
  3. Download BPMN XML with custom UML elements
  4. Optional: To convert BPMN XML files and corresponding images into a COCO dataset, check out pybpmn-uml

Custom UML modeler for bpmn-js

This UML extension provides a custom UML modeler that allows the creation of UML class diagram elements in bpmn-js. It replaces the custom modeler from the bpmn-image-annotator. By changing MODE from Mode.UML_CLASS to Mode.BPMN in Settings, it is still possible to use the original custom modeler in order to annotate BPMN images the same way as before.

The UML modeler consists of the following modules:

README of original repository - BPMN Image Annotator

BPMN Image Annotator Pizza Example

Annotation tool based on bpmn-js to annotate hand-drawn BPMN images with their ground-truth BPMN models.

Workflow:

  1. Upload image
  2. Model BPMN process over the image
  3. Download BPMN XML

The XML will have an additional backgroundSize to track the width the image was rescaled to during modeling. This way, the BPMN shapes and edges can be linked back to the position within the image.

bpmn-js enforces several correctness rules. To allow the annotation of images that contain modeling errors, most of these rules have been disabled. More details can be found in later sections.

Installation

npm install
npm run dev

Modeling Changes

  • allow resizing elements
  • allow elements outside of lane/pool (this can be achieved by shrinking lane after the element has been modeled)

Rule Changes

Sequence Flow:

  • (Message/Timer) End Event: allow outgoing sequence flow
  • (Message/Timer) Start Event: allow incoming sequence flow
  • Event-based Gateway: allow outgoing sequence flow to task

Message Flow:

  • Event (all types): allow incoming+outgoing message flow
  • Gateway (all types): allow incoming+outgoing message flow
  • CallActivity: allow incoming/outgoing message flow

DataInputAssociation/DataOutputAssociation

  • allow DataInputAssociation/DataOutputAssociation to catch/throwEvent
  • allow DataInputAssociation/DataOutputAssociation to Gateway

TODO

License

Apache 2.0

Also see the bpmn-js license.