As a new step of our continuous delivery process, we’ve just introduced significant improvements related to our BPMN editor: you can now model the data handled by your designed processes and make the whole project executable into Java-based execution engines, customize a wider range of BPMN 2.0 attributes, and import BPMN 2.0 models with even more flexibility.
Model Business Process Data
One of the common characteristics of traditional modeling techniques is to allow the modeling of data to be created, read and updated during the execution of a process. Although BPMN is not primarily designed for data modeling, there is still a set of notations that lets you model the data involved in a business process. In addition to this set of notation, GenMyModel introduces a dedicated data modeling editor which enables you to describe the data of your processes, so that your BPMN models are directly executable in Java-based execution engines.
The following sections respectively describe the two levels for data modeling in BPMN processes: the data object and data store at the BPMN 2.0 diagram level, and the execution level with the Java JPA implementation that can now be modeled in GenMyModel.
Design level: BPMN 2.0 Data Store and Data Object
When executing a business process, there might be data produced, either during or after the end of the process. For example, an execution of a Place Order task will produce data like invoice, receipt, purchase order etc.
BPMN does not itself provide a built-in model for describing structure of data or an Expression language for querying that data. Instead it formalizes hooks that allow for externally defined data structures and Expression languages
Those limited hooks are modeled by several types of data objects such as data objects, data inputs, data outputs and data stores. They enable data modeling at a high abstraction level.
Usually Data Objects and Data Stores are used to specifiy that some data is required from/to a database or service. But those model elements are not meant to access the data when the processes are running.
Execution level: Java JPA Entities
The Java Persistence API, POJO persistence model for object-relational mapping, is commonly used in Java-based execution engines as the programmatic layer between business code, services and databases. Through annotation on Java classes, the Java Persistence API enables one to configure the access to the data stored in relational databases.
Any BPMN model created in GenMyModel is provided with an optionnal Data Model describing the JPA entities that can be created, read and updated by the processes at execution time. The corresponding diagram is available from the project explorer:
The data model editor provides a subset of the UML class model entirely dedicated to JPA entities. The toolbar and element properties have been restricted to only cover the useful Java types. All JPA properties can be set and modified in a dedicated panel, resulting in a very intuitive data modeler.
To illustrate the time that can be saved when modeling process data rather than coding it all, here’s a JPA class called Invoice.java:
and the corresponding entity Invoice modeled in the editor:
Notice the build jar feature that generates the Java classes, compiles and jars them. The generated JAR can directly be uploaded to any Java-based execution engine supporting JPA.
Feedback: There are various Java-based BPMN engines, I put a short list below. Your feedback on any issue found when running your processes with the generated jars would be valuable to us.
BPMN Diagram Interchange Improvements
All sequence flows, labels and sub processes are now correctly imported from other BPMN 2.0 tools to GenMyModel. The editor strictly handles the x and y position of the diagram elements. The hidden attributes, the advanced BPMN properties and the BPMN import have been developped and integrated in GenMyModel following the guidelines and good practices of the BPMN MIWG group, presented in the next section.
Better BPMN 2.0 Coverage
We’ve widened the coverage of the BPMN 2.0 elements in the editor. Here’s the list of the updated elements, that can now be fully edited, imported and exported:
- Data Object
- Data Store
- Error Event
- Escalation Event
- Implementation in ServiceTask, Send, Receive, BusinessRule and UserTask
- Abstract task: start/completion quantity, message, loop characteristics (loopMaximum, loopCondition), multiple loop characteristics (loopCardinality, loopCompletionCondition
- Sequence flow condition
- Signal Event
- Script task: body, language
As a member of the OMG Model Interchange Working Group (BPMN MIWG), GenMyModel aims at supporting a wide spectrum of the BPMN 2.0 specification while ensuring the interchange with other BPMN tools and execution engines. This release update enables us to sucessfully pass 10/11 tests of the BPMN 2.0 test cases designed by the group.
Denis Gagne, from Trisotech, published a SlideShare presentation of our latest demo at the OMG technical meeting in Berlin (June 17th). Read more about the OMG MIGW.