BPEL2oWFN is a compiler translating a business processes expressed in BPEL (Business Process Execution Language for Web Services) [ACD^+03] to an oWFN (open Workflow Net) [MRS05]. This oWFN can be used to:
BPEL2oWFN uses static analysis to make the generated oWFN as compact as possible to analyze a chosen property. This is called flexible model generation (see Future Work).
BPEL2oWFN is the successor from BPEL2PN [SHS05], a Java-based compiler generating low-level Petri nets. BPEL2oWFN can be understood as a re-implementation for extensibility and performance issues. Its functionality is a superset of the functionality of BPEL2PN. 1
BPEL2oWFN was written by Niels Lohmann, Christian Gierds and Dennis Reinert. It is part of the Tools4BPEL project funded by the German Bundesministerium für Bildung und Forschung. See http://www.informatik.hu-berlin.de/top/tools4bpel for details.
The translation process of the BPEL business process is performed in six steps which we describe briefly in this section:
In this section we describe the main concepts of BPEL2oWFN used to realize the translation. Reading this section is not necessary for using BPEL2oWFN, yet knowing the underlying algorithms and data structures not only helps to locate bugs, but also helps you to customize BPEL2oWFN or request a feature.
The AST (abstract syntax tree) is an abstraction of the syntax tree generated while parsing the BPEL process: any unnecessary information (e.g. indention, brackets or other “syntax-supporting” elements) is omitted. It is the central data structure of BPEL2oWFN. The nodes of the AST are annotated during the analysis steps. These annotations are used to select the most compact Petri net pattern from the pattern database to check a given property.
The idea of flexible model generation is to find the most compact model to check a given property. The patterns of the Petri net semantics of [Sta05] are designed to fit in any given context. However when the context is known some behavior modeled in the patterns (i.e. some of the nodes) can be safely removed without changing its semantics. BPEL2oWFN is designed to hold several sets of Petri net patterns each suitable in certain contexts. These patterns are collected in a pattern database.
BPEL2oWFN provides many algorithms and data structures to build, represent, modify and simplify Petri nets and open workflow nets, resp. They are the interface between the pattern database and the file output for the model checking tool. The functions are collected in an extensible class allowing to add more output file formats, structural simplification rules (optimized to preserve certain properties such as deadlock freedom or liveness) or abstractions (e.g. abstraction from variables, abstraction from external behavior).
[1] In fact, BPEL2oWFN can simulate the behavior of BPEL2PN with a command-line parameter (see Invoking BPEL2oWFN).