The ‘Business Process Model And Notation’ standard is a well designed notation for describing business workflows. BPMN 2.0 becomes the standard for modeling business logic and fits very well the model driven software design in agile software projects.
The BPMN language, which is based on XML, was intended for users at all levels, from the business analysts who create the initial design, to the developers who implement the technical details, and finally, to the business users responsible for managing and monitoring the processes. BPMN 2.0 has evolved to become a complete specification trying to fit the needs to all people involved in the design of a business process. But writing BPMN in XML and visualizing business processes becomes nearly impossible without the use of a graphical tool.
The Eclipse BPMN2 Modeler
The Eclipse project BPMN2 Modeler fills this need perfectly by providing an intuitive user interface for BPMN 2.0. It interprets the complexities of the BPMN language in the form of drawing canvases, tool palettes, property sheets and other familiar UI elements.
The Eclipse BPMN2 Plugin is the perfect tool to design a business process on different levels in different complexity. With the integration in the Eclipse Platform it fits perfect into the developers tool stack. Models can be shared with team members by a code repository like Git. You can validate and test your models and of course you can write jUnit Tests to prove the business logic reflected by your model.
The BPMN Extensibility
In the year 2011 the Object Management Group (OMG), introduced an extension mechanism for BPMN which becomes the foundation for many workflow engines to close the gap between modeling and executing a business process model.
The BPMN 2.0 extension mechanism allows software projects to extend the standard BPMN elements with additional attributes and tags based on a simple XML grammar. This mechansim can be used by modeling tools to add non-standard elements or artifacts to satisfy a specific need, such as the unique requirements of a vertical domain, and still have valid BPMN Core. The following example shows how the bpmn2 standard can be extended with custom attributes and tags:
.... <bpmn2:task id="Task_100" custom:category="marketing" name="Approve the Request"> <bpmn2:extensionElements> <custom:item name="e_mail" type="xs:string"> <custom:value>email@example.com</imixs:value> </custom:item> </bpmn2:extensionElements> <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing> </bpmn2:task> ...
Using the Eclipse BPMN2 Modeler you can benefit from this form of extensibility. The goal of the Eclipse BPMN2 Modeler is to not only provide a graphical modeling tool, but also to allow plug-in developers to easily customize the behavior and appearance of the editor for specific BPM workflow engines that use this BPMN 2.0 extensibility mechanism. In this way, the expansion mechanism of the Eclipse platform complements the expansion mechanism of BPMN in a perfect way.
And, of course, the expansion of mechanism is not limited to the BPMN data, but also covers the visual appearance of a model.
The BPMN2 Modeler is built on the Eclipse Plug-in Architecture and provides the typical Eclipse extension points. Extension points in Eclipse are used for customizing existing behavior and functionality. In the BPMN2 Modeler project for example the editor’s appearance and behavior can be easily extended. The foundation of the BPMN2 Modeler is the Eclipse BPMN 2.0 EMF meta model which is part of the Model Development Tools (MDT) project. The model was originally developed by contributing members of the OMG BPMN 2.0 working group and is fully compliant with the spec.
Join the Community
The BPMN2 Modeler provides a lot of Developer Tutorials including examples and guidelines for extending the capabilities of Eclipse BPMN2 Modeler. This includes:
- Extending the model
- Creating a CustomTask
- Extending the property tabs
- Creating a Custom Shape
- Model Validation
The Imixs BPMN project is one example of how an extension provides new functions. But you will also find an example project which can help you to get started. You can join the community in the Eclipse Community Forum.