The public API for BPMN2 Modeler plug-in extensions is constantly evolving as we try to figure out what features are needed and how they can best be implemented. API changes when and if they are required, will only happen on minor releases of the modeler (e.g. version 1.2.0 => major = 1, minor = 2 service update=0.) We also try to keep API changes aligned with Eclipse releases, so that version 1.0.x of the modeler is targeted for Kepler, 1.1.x for Luna and 1.2.x for Mars. These tutorials will describe specific changes for each of the Eclipse target platforms.
Prerequisites & Conventions
These tutorials assumes that you are comfortable with XML and XML Schema and have at least a working knowledge of the BPMN2 language. You should also be somewhat familiar with EMF and its terminology, as this will be used frequently. At a minimum, you should understand:
- EClass = an object type, also known as a "class"
- EObject = an instance of an EClass, i.e. a concrete object
- EAttribute = a simple-valued attribute of an EClass
- EReference = a reference to an object or list of objects. References may also act as containers for the object, or may simply point to objects contained elsewhere in the same document, or an external document.
- EStructuralFeature = a feature of an EClass, i.e. the attributes (EAttribute) and references (EReference) defined by the object type
In this tutorial, all EMF model types (EClasses) attributes (EAttributes) and references (EReferences) are displayed in bold, for example UserTask or name. In discussions of Java or XML code fragments contained in the tutorial, references to these appear in italics, for example createBindings() or modelExtension.
You can find a example code on GitHub showing some of the concepts explained in the following tutorials.
- Extending the BPMN2 Runtime - Understanding the basics of BPMN2 Runtime extensions
- Extending the model - Different ways of extending the BPMN2 model
- Bring your own model! - Extending the BPMN2 model with an external EMF model
- Creating a CustomTask - Creating a CustomTask Extension
- Extending property tabs - Building Property Sheets for model extension data
- Creating a Custom Shape - Creating custom shapes for model extensions
- Special Adapters - All the myriad adapters and how to use them
- Adding a CDATA element - Adding an extension element with a CDATA section
- Tool Palette - Customizing the Tool Palette
- Model Validation - Overriding/augmenting the BPMN2 Model Validation framework
- Setup a Plugin Project with Maven - Example how to setup a plugin, feature and updatesite with maven 3.0
- Tool Palette Fragments - Adding workflow snippets and other compound elements to the Tool Palette
- How to Start Contributing - Find information how to checkout the source code and start contributing.