Working with fragmented models

DevOps Model RealTime enables a model to be split into model files (.emx) and fragment files (.efx). Fragment files are used when a containment hierarchy has to be split into multiple files. The model file contains the root element in the containment hierarchy, typically a package. Elements that are contained in the root element, for example classes, can be stored in separate fragment files. This applies recursively so that elements that are roots of fragment files can, in turn, contain other elements that are stored in separate fragment files.

When you open a model project, Model RealTime does not immediately load all the model and fragment files that are contained in that project. Instead a "lazy-load" approach is used where model and fragment files are loaded on demand. For example, when you first open a model project you see a node in the Project Explorer that shows that a model file is not yet loaded:

When you expand the node, the model file is loaded and the icon is replaced with the icon for the root model element that is stored in the model file (typically a package). If an element that is contained in the root model element is stored in a separate fragment file, that fragment file is not immediately loaded when loading the model file. An icon shows that an element is stored in a fragment file that has not yet been loaded:

When the fragment file gets loaded (for example because you expand its node in the Project Explorer), the node gets a different icon to denote that the fragment file is now loaded:

You can force all fragment files for a particular model file to be loaded by right-clicking the element that is stored as the root in the model file, and choose Open All Sub-Fragments in the context menu.

You can force all model and fragment files in the entire workspace to be loaded by using the command Load UML Models that is available in the global Modeling menu. It will load all model files and all their fragment files. The main benefit of loading all models is that you take the performance hit of loading all models once, instead of loading the models lazily on demand. Whether or not it is appropriate to load all the models in your workspace depends on how big your models are and how powerful your machine is.

There is a preference RealTime Development - Load models on startup that lets you invoke the Load UML Models command automatically when starting up Model RealTime.