The Business Process Model and Notation (BPMN) is a standardized language for modeling business processes and workflows. This project implements the Workflow DSL, a textual notation for process models based on the BPMN 2.0.2 language specification and developed with the MontiCore language workbench. The project also provides comprehensive tooling for working with the language.
A detailed documentation for language engineers using or extending the Workflow DSL is located here.
- Install Gradle 7.5
- Install Java 11
- Build with command
gradle build
After building the project, a CLI tool can be found here.
The tool provides quite a number of executable actions and configurable parameters. The possible options are:
| Option | Explanation |
|---|---|
-h,--help |
Prints this help dialog. |
-i,--input <file> |
Reads the source file (mandatory) and parses the contents. |
-path <dirlist> |
Sets the artifact path for imported symbols, space separated (default is: .). |
-pp,--prettyprint <file> |
Prints the AST to stdout or the specified file (optional). |
-s,--symboltable <file> |
Serializes the symbol table of the given artifact. |
-v,--version |
Prints version information. |
-ref,--reference <file> |
Parses the file as a reference process model and checks if the the input process model specified by -i is conform to it. |
-m,--map <string> |
Specify the names of stereotypes that are used as incarnation mappings in the concrete model. Default : 'incarnates' |
The following example model PaperAuthoring
illustrates the textual syntax of the Workflow DSL:
process PaperAuthoring {
start event Start;
end event Done;
task Introduction;
task Main;
task Conclusion;
task Draft;
task Research;
task Review;
merge xor StartIteration;
split xor EndIteration;
split and SplitWork;
merge and MergeWork;
Start -> Research -> Draft -> StartIteration -> SplitWork -> Introduction -> MergeWork;
SplitWork -> Main -> MergeWork;
SplitWork -> Conclusion -> MergeWork -> Review -> EndIteration -> Done;
EndIteration -> StartIteration;
}
This example model describes the process of writing a scientific paper:
- The process has one start event
Startand one end eventDone - It defines the tasks
Introduction,Main,Conclusion,Draft,Research, andReview - The Workflow begins with the task
Researchfollowed byDraft. - Then comes the
split andgateway after which the tasksIntroduction,Main, andConclusionare executed in parallel - These three tasks are followed up by the
merge andgateway. - Next up is the task
Review. - Finally, a
split xorgateway allows us to choose between redoing the tasksIntroduction,Main, andConclusionor end the process.
You can parse the example model PaperAuthoring
and then print it to the console using the following command:
java -jar WorkflowCLI/target/libs/BPMN.jar -i doc/PaperAuthoring.wfm -ppThe symbols defined in the example model
PaperAuthoring can be serialized and stored in a
.wfsym file using the following command:
java -jar WorkflowCLI/target/libs/BPMN.jar -i doc/PaperAuthoring.wfm -s doc/PaperAuthoring.wfsymThe example model PaperAuthoring can be viewed
as a reference model for writing scientific publications [KRS+24].
We can check whether a concrete process model conforms to it using the
option -r.
The process model Thesis is a conforming model.
The check can be executed as follows:
java -jar WorkflowCLI/target/libs/BPMN.jar -i doc/Thesis.wfm -ref doc/PaperAuthoring.wfmThe process model AntiPatternMerge is,
however, not conform, as it closes a parallel executed branches of tasks
with a merge xor gateway.
When executing the conformance check, the algorithm finds a sequence of
tasks via backtracking that are not permitted by
PaperAuthoring:
java -jar WorkflowCLI/target/libs/BPMN.jar -i doc/AntiPatternMerge.wfm -ref doc/PaperAuthoring.wfmMore complex Workflow models, such as the
OrderToDeliveryWorkflow
described
here.
may import symbols from class diagrams in order to utilize custom data types.
To load the serialized symbol table of the class diagram
OrderToDelivery,
the artifact path has to be set to doc/ using the option -path:
java -jar WorkflowCLI/target/libs/BPMN.jar -i doc/de/monticore/bpmn/examples/OrderToDeliveryWorkflow.wfm -path doc/ -pp