Skip to content

uniba-dsg/BPMNspector

Repository files navigation

BPMNspector

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 http://www.uni-bamberg.de/pi/bpmn-constraints.

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 |
       NONE>]
Options:
 -c,--checks <[opt1[,opt2]...>    defines which checks should be
                                  performed.
                                  Allowed values:
                                  EXT - checks conformance to EXT rules
                                  ALL - performs all checks (default)
                                  REF - checks the correctness of
                                  references
                                  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
                                  (default)
                                  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
                                  generated.
                                  Allowed values:
                                  ALL - create all report types
                                  XML - create XML reports
                                  HTML - create HTML reports (default)
                                  NONE - No report files should be created

Examples:
		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

Run...

$ 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

Run...

$ gradlew javadoc

... to generate the Javadoc documentation.

Licensing

LGPL Version 3: http://www.gnu.org/licenses/lgpl-3.0.html

Authors

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!

Contribute?

Just Fork and send a Pull request.

Related Work