Calculator of Understandability Metrics for BPMN

Calculate several understandability metrics of BPMN models. BPMN stands for business process modelling notation and is a language for expressing business processes into business process diagrams. Examples of these understandability metrics are: average connector degree, maximum connector degree, sequentiality, cyclicity, diameter, depth, token split, control flow complexity, connector mismatch, connector heterogeneity, separability, structuredness and cross connectivity. See R documentation and paper on metric implementation included in this package for more information concerning the metrics.

This package is written to calculate several understandability metrics of a BPMN model using R and to test whether a relationship is possible in a BPMN model

See R documentation and paper on metric implementation for more information concerning this package.

Metrics which can be calculated:

  • Size (function size_bpmn())
  • Number of empty sequence flows (function empty_sequence_flows(doc))
  • Number of duplicate tasks (function duplicate_tasks())
  • Number of pools (function pools())
  • Number of data objects (function data_objects())
  • Number of swimlanes (function swimlanes())
  • Number of message flows (function message_flows())
  • Density (function density_bpmn())
  • Coefficient of network connectivity (function coefficient_network_connectivity())
  • Average connector degree (function avg_connector_degree())
  • Maximum connector degree (function max_connector_degree())
  • Sequentiality (function sequentiality())
  • Cyclicity (function cyclicity())
  • Diameter (function diameter())
  • Depth (function depth())
  • Token split (function token_split())
  • Control flow complexity (function control_flow_complexity())
  • Connector mismatch (function connector_mismatch())
  • Connector heterogeneity (function connector_heterogeneity())
  • Separability (function separability())
  • Structuredness (function structuredness())
  • Cross Connectivity (function cross_connectivity())
  • Extended cyclomatic metric of McCabe(function cyclomatic_metric())


The following new features and bug fixes are applied:

  • one metric is added: the cyclomatic metric of McCabe (see paper for more information)
  • the way path logs are calculated is improved in order that the function will not get stuck in an infinite loop
  • time limits are added to the creation and generation of path logs
  • the function parameters are made more user-friendly
  • functions are added to check whether relations are present in the model such as a directly follows relationship

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


1.1.1 by Gert Janssenswillen, 2 years ago

Browse source code at

Authors: Jonas Lieben [aut] , Gert Janssenswillen [cre]

Documentation:   PDF Manual  

MIT + file LICENSE license

Imports XML, dplyr, purrr, tidyr, tibble, Rcpp, devtools, usethis, R.utils

Suggests knitr, rmarkdown, testthat

Linking to Rcpp

See at CRAN