Migrate Action - modelint/shlaer-mellor-metamodel GitHub Wiki
In the simplest terms, an instance of a Subclass can be migrated so that it becomes an instance of a different Subclass in the same Generalization.
This is referred to as a reclassify operation in [MB].
We choose to use the term 'migrate' synonymous with 'reclassify' as we think it stands up slightly better when considering multiple adjacent Generalizations.
Here is a simple example where an instance of B
migrates to the C
Subclass in R1
. The Migrate Action must delete the B
Facet and create a C
Facet retaining the reference to the A Superclass instances in the process.
In Scrall, we could write the action like this:
a1 >> C(x, y) // migrate the instance in variable a1 initializing attributes x and y
Any newly created Facet requires the appropriate attribute initializations. Here the attributes X and Y are initialized with supplied values x and y.
In fact, multiple instances can be migrated as well, so let's say we would like to migrate all instances of B
to C
. We could do this:
A(*) >> C(x, y) // migrate all instances of A using the same values for x and y
Now consider multiple adjacent Generalizations. In the example below we add in Generalizations R2
and R3
.
images/create-delete-subsystem/migrate-action-10.png
Both the G
and B
Facets must be deleted with both the C
and E
Facets created.
a1 >> { C(x, y), E( z ) &R4 q1 }
Here the modeler specifies migration combined with the initialization of multiple new instances.
Identifiers
- Action + Activity + Domain
Attributes
No non-referential attributes