Command line parameters

To build and run BPMNspector from checked out sources simply run the start script:

$ BPMNspector fileToValidate.bpmn

Or alternatively: Run a precompiled jar file:

$ java -jar BPMNspector.jar 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  [-c <[opt1[,opt2]...>] [-d] [-h]
       [-o] [-r ]
 -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
                                 XSD - performs an XML schema validation
 -d,--debug                      run BPMNspector in debug mode
 -h,--help                       prints this usage information
 -o,--open                       open the report file upon completion
 -r     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

Desription of checked constraints

BPMNspector is able to perfom various checks on BPMN models stored in the XSD-based serialization format of BPMN. Thus, an important prerequisite to use BPMNspector is that the models to be checked are stored in the correct format.

The following aspects can be checked using BPMNspector

  • XML schema validation: It is checked whether the BPMN process model is schema valid regarding the normative XSD schema (available here).
  • Referential integrity: The BPMN serialization format heavily relies on referencing between BPMN elements (e.g., each SequenceFlow has to reference a source and a target element). Technically xs:id attributes are references either using xs:IDREF or xs:QName attributes/elements. Using this technique potential problems may arise:
    • The references points to an ID which does not exist.
    • The ID exists, but a wrong BPMN element type is referenced. E.g., the messageRef attribute of a SendTask element does not reference a message (as stated in the spec) but another type of a BPMN element.
    BPMNspector detects both of these error types.
  • Advanced constraints: The specification defines more than 100 constraints on the correct usage of BPMN elements, their configuration and combination - both explicit and implicit. Examples are:
    • If a StartEvent is used to start a process, EndEvents must be used, too.
    • An Error Event (defined by an errorEventDefinition) is only allowed as an EndEvent, interrupting BoundaryEvent, or an interrupting StartEvent for EventSubProcesses.
    • A SubProcess must be started with a 'none' StartEvent - other types are not allowed.
  • A full list of all checked constraints, based on an academic publication, can be found here:
    Detailed Desription of all checked advanced constraints.