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

  1. Action + Activity + Domain

Attributes

No non-referential attributes