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
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 (Figure 8).
- Click the Next button. Set the genmodel name, click the Next button. Select Ecore model as Model Importer (Figure 9), click the Next button.
- Select the ecore file defined in the previous section (Figure 10), then click the Next button. Select which package to generate (Figure 11) and the referenced generator models (sca, sca.policy and sca.instance). Click the Finish button.
- That's all, you can generate the code.