Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
SCA/Components/SCA MMExtension
< SCA
This page explains, step by step, how to extend the SCA meta model.
Contents
Create a new plugin
Create an SCA meta model extension
- Create a new Ecore model.
- Open the ecore model.
- Load the SCA meta model (right click > Load Resource...). Click Browse Registered Package, select the SCA/OSOA meta model.
- Select the EPackage of your meta model. Set the Name, NSPrefix and the NSURI.
- Add a new EClass named DocumentRoot. This EClass must extend the DocumentRoot of the SCA meta model.
- Add a new EAnnotation (source = http:///org/eclipse/emf/ecore/util/ExtendedMetaData).
- Add two DetailEntry:
- name → empty Value.
- kind → mixed.
- Then, under the DocumentRoot add a new EReference. Set the name, the cardinality (min:0, max: -2), and the containment (true).
- Add a new EAnnotation with the following DetailEntry:
- kind → element
- name → scaType.name (for instance implementation.fractal or binding.jbi)
- namespace → ##targetNamespace
- affiliation → http://www.osoa.org/xmlns/sca/1.0#scaType (scaType = binding, interface or implementation).
Create a new SCA Element
- Select the EPackage and create a new EClass. Set the name (for instance FractalImplementation) and the ESuper Type (Implementation, Interface or Binding).
- Create a new EAnnotation, with the following DetailEntry:
- name → SCA Type name
- kind → elementOnly
- Then, add the attributes and references for the new SCA element.
Generate the meta model code
- Create a new genmodel: File>New>Other>EMF Model.
- Click the Next button. Set the genmodel name, click the Next button. Select Ecore model as Model Importer, click the Next button.
- Select the ecore file defined in the previous section, then click the Next button.
- Select which package to generate and the referenced generator models (sca, sca.policy and sca.instance). Click the Finish button.
- That's all, you can generate the code.