The add-in is a Schema composer add-in.
The main purpose is to cherry pick part of a class model using he Schema Composer, and then do something with it.
That something could be
- Generate an XSD schema (build in)
- Generate a JSON schema (build in)
- Generate a subset model (what my add-in does)
Clients use this add-in for mainly two purposes:
- create a "message" model from a canonical model (some use the XSD UML profile so they can generate the XSD's directly, other have their own XSD/JSON/... transformation tool to generate specifiations from these message models)
- create a "subset data model" from a canonical model.
But in any way, it all start with selecting which classes and attributes need to go in the subset model, using the Schema Composer.
Now in some cases I've written script to actually create a schema composer profile based on certain criteria (e.g. copy of a whole data model)
Main advantages of my Add-in
- create a fully traced subset model
- supports all the redefines/overwrites supported by the Message Composer
- depending on the settings can do things like collapse inheritance, use a common set of classes or datatypes,
- supports all kinds of mechanisms to allow for differences in the subset model to be marked as exception so they are kept when re-generating
I think your use case could be done with the Message Composer add-in, but that is not necessarily the only tool.
For another client I did something similar to what you are asking.
The script I wrote for them does something like this:
- Create a copy of a package branch
- In the created copy
- change stereotypes according to some set rules
- do some stuff with names according to the the set rules
- add traceability for each class, attribute and association
- delete classes, attributes, and associations that fit certain criteria
Because there was not much cherry picking to do (and all the cherry picking could be automated according to some rules) we decided not to the the Schema Composer, but instead start with a complete copy of the package tree.
Major difference with the Message Composer approach is that this script is not repeatable. It always creates a full transformed copy, whereas the Message Composer can update an existing subset model.
Geert