...
- .xsd file in correct version: https://gerrit.onap.org/r/gitweb?p=aai/schema-service.git;a=tree;f=aai-schema/src/main/resources/onap/aai_schema;hb=d4f97e683cb971ceb7107beaaca628926156a4f6
- DB edge rules (.json) in correct version: https://gerrit.onap.org/r/gitweb?p=aai/schema-service.git;a=tree;f=aai-schema/src/main/resources/onap/dbedgerules;hb=3501e74711a2e91ce84d0b4cbc989738f96e0891
- Possibly also traversal information (.json): https://gerrit.onap.org/r/gitweb?p=aai/traversal.git;a=tree;f=aai-traversal/src/main/resources/schema/onap/query;hb=600abffda37ce3aba83024162dc7178d90b84c26
Next step is probably to combine these source files into a single schema file using an XSLT script. Probably also necessary to copy metadata in the .xsd file to XML tags that can be parsed by Ecore.
This step is still TODO – some possible input to this step:
...
Auto-generated documentation of the AAI schema is the most complete at the moment (created by an OpenAPI/Swagger-like process).
- Source HTML file: https://lf-onap.atlassian.net/wiki/download/attachments/16351755/aai_swagger_v16.html?api=v2
- Stored here: AAI REST API Documentation - Dublin
- Originals stored in NEXUS:
- https://nexus.onap.org/service/local/repositories/releases/archive/org/onap/aai/schema-service/aai-schema/1.0.6/aai-schema-1.0.6.jar/!/onap/aai_swagger_html/aai_swagger_v16.html
- https://nexus.onap.org/service/local/repositories/releases/archive/org/onap/aai/schema-service/aai-schema/1.5.0/aai-schema-1.5.0.jar/!/onap/aai_swagger_html/aai_swagger_v16.html
Problems encountered when working with the AAI model structure:
- AAI uses RelationshipList as a generic linking class everywhere in the model – needs to be collapsed into the actual links
- AAI uses collection classes (ex. Pnfs as a collection for Pnf) that add no information – need to be filtered out
Ideas regarding how to do the reverse-engineering with a minimum of manual rework of the model (NOTE: most of these are still TODO):
- Convert XSD directly to UML – see Step-by-step to generate Papyrus UML model from XSD file. This method is inspired by these discussion threads:
Step-by-step to generate Papyrus UML model from XSD file
A single XML schema file can then be imported into Eclipse/Papyrus using the Ecore modeling framework – steps for this are outlined below.
NOTE: These instructions assume that Eclipse has first been started in Modeling perspective and that Papyrus is installed.
1) From the File menu, create a new general Eclipse project using the project wizard. Only required input is a project name.
2) From the File menu, choose Import... in order to import the .xsd into the project using the import wizard.
2a) Choose import from file system.
2b) Select the From directory first and then the .xsd file. Import into the project folder.
3) In the Model Explorer, open the project. Right-click on the .xsd and create a new EMF Generator Model (select "New" and "Other..." to enter the wizard).
3a)
3b) Select the project folder as the parent folder and choose the XML Schema model importer. "Model URI" should already be filled in with the .xsd file URI.
4) Right-click on the generated model and export the model to UML (select "Export Model...").
4a)
4b) Choose to reference Ecore models rather than export them. (TBD: assumed this will create smaller files, however haven't checked this yet)
4c) Choose Process All (TBD: check whether this is really needed, what difference in output is there)
5) Right-click on the exported UML model and create a new Papyrus model (select "New" and "Other..." to enter the wizard).
6) Switch to Papyrus perspective. From Model Explorer, create a new class diagram and drag-and-drop the wanted model elements onto it.
Tips for creating Papyrus diagrams for AAI model
- Sort the model elements alphabetically before drag-and-drop
- Drag-and-drop relationships rather than classes
...
- Generate UML model from OpenAPI (a.k.a. Swagger) YAML file, see https://github.com/opendata-for-all/wapiml and https://modeling-languages.com/openapi-to-uml/
- Generate UML model from JSON schema documents, see https://github.com/SOM-Research/jsonSchema-to-uml
Copy metadata in the .xsd file to XML tags that can be parsed by Ecore
- Combine the source files into a single XSD (XML schema file) using an XSLT script?
- Generate UML from OXM file, e.g. by model-browser script