Static analysis for BPMN 2.0 process models.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Static analysis for BPMN 2.0 process models

Build Status Dependency Status Coverage Status Download

What is it? || Description

Creating valid, standard compliant BPMN 2.0 process models is not trivial. Even when state-of-art modeling tools are used, model often violate some of the constraints stated in the standard document.

BPMNspector checks single files - or complete directories - of BPMN files and reports violations of BPMN 2.0 constraints.

BPMNspector currently supports:

  • Schema validation: Ensures correctness regarding the official OMG XSD files
  • Reference Checking: Ensures that all used references exist and that only valid types are used
  • Check of Advanced Constraints:
    • 44 (of 50) constraints defined for the "descriptive conformance sub class" are checked
    • all additional "analytic conformance sub class" constraints are checked
    • 45 (of 49) constraints for the "common executable conformance sub class" are checked
    • 8 (of 12) further constraints for "full conformance sub class" are checked
  • Support of imports: (resolvable) imports of processes, WSDL and XSD files are also checked
  • Automated fixes of various violations: Fix found violations automatically

This software is licensed under the LGPL Version 3 Open Source License.

For further information visit

What do I need? || Requirements

As BPMNspector uses gradlew only a Java 8 installation is needed - download and configuration of needed libraries is performed on the fly.

  • JDK 1.8.0 (or higher)
    • JAVA_HOME should point to the jdk directory
    • PATH should include JAVA_HOME/bin

How do I use BPMNspector? || Usage

To use BPMNspector simply run the start script:

$ BPMNspector fileToValidate.bpmn

After completion a HTML report will be opened automatically - all reports are stored in {BPMNspector.home}/reports.

Available options are listed by calling:

$ BPMNspector -h

or here:

usage: BPMNspector <file or directory> [-c <[opt1[,opt2]...>] [-d] [-f
       <NONE | AUTO | INTERACTIVE>] [-h] [-o] [-r <ALL | XML | HTML |
 -c,--checks <[opt1[,opt2]...>    defines which checks should be
                                  Allowed values:
                                  EXT - checks conformance to EXT rules
                                  ALL - performs all checks (default)
                                  REF - checks the correctness of
                                  XSD - performs an XML schema validation
 -d,--debug                       run BPMNspector in debug mode
 -f <NONE | AUTO | INTERACTIVE>   configures automated fixing options.
                                  Allowed values:
                                  AUTO - all fixable violations will be
                                  fixed automatically
                                  NONE - No fixes should be performed
                                  INTERACTIVE - ask for each violation
 -h,--help                        prints this usage information
 -o,--open                        open the report file upon completion
 -r <ALL | XML | HTML | NONE>     defines which report type should be
                                  Allowed values:
                                  ALL - create all report types
                                  XML - create XML reports
                                  HTML - create HTML reports (default)
                                  NONE - No report files should be created

		BPMNspector myfile.bpmn
		BPMNspector c:\absolute\path\to\folder -c REF -d
		BPMNspector c:\absolute\path\to\file.bpmn -o -r HTML

How can I use BPMNspector as a developer? || Development


$ gradlew idea
# or
$ gradlew eclipse

... to create project files for your favorite IDE.

Structure of Software/Repository

The repository is structured in the following way:

|- gradle: contains the gradle wapper
|- lib: all libs required for the tool which aren't available via public repositories
|- src
|-- main
|--- java: contains all java classes
|---- api: contains the API files needed for integration in other tools
|---- de.uniba.dsg.bpmnspector: implementation of BPMNspector
|--- resources: contains all needed resource files (e.g., schema validation files)
|-- test
|--- java: contains the sources of all JUnit test classes
|--- resources: contains all needed test resource files

Technical Documentation / Javadoc


$ gradlew javadoc

... to generate the Javadoc documentation.


LGPL Version 3:


Matthias Geiger, Philipp Neugebauer and Andreas Vorndran

BPMNspector is partly based on the practical part of two Bachelor theses:

  • Andreas has developed the reference checking mechanism de.uniba.dsg.bpmnspector.refcheck - this part has already been published here
  • Philipp created the Schematron validation part of BPMNspector de.uniba.dsg.bpmnspector.schematron - the standalone version is SchematronBPMNValidator

Found a bug?

Report your issue here at GitHub!


Just Fork and send a Pull request.

Related Work