Bundt User's Manual · Bundt Toolset version 1.0.1.0

Sealing and Unsealing Models

Sealing and unsealing are mechanisms to help with model version management and change control. This is important in settings where many people use a shared model and compatibility between their work must be guaranteed.

Sealing a model means making it read-only so that no further changes may be made by anyone. Unsealing a model is the opposite process, and it implies making a sealed model changeable again.

Details

Usually, models can be changed at any time. In fact, when you create a new model from scratch, it is always unsealed. This is handy, but some situations require that you guarantee that no changes will be made to a model without other people knowing. For example, imagine that a model is created to be used across an organisation as a standard and shared framework. In this case, you probably want that the model stays unchanged unless a decision is explicitly made to incorporate some changes for everyone.

Sealing a model implies that the model becomes read-only. The system will not allow any changes to it. A sealed model can be distributed and used normally. If it is a type model, it can be extended or used to derive instance models as usual, with the additional guarantee that everybody is using exactly the same model. This can be crucial to guarantee cross-compatibility between the work of many people in a large team or organisation, for example.

However, at some point you will probably need to make changes to the model. In this situation, you would unseal the model. To do this, the system creates a new version of the model and removes the seal, making the resulting model changeable again. You would be left with the original sealed model, which stays sealed forever, plus a new version with identical contents that is changeable. Now you would be able to make changes to the new version, re-seal it when finished, and distribute it to your organisation as needed. In this manner, you control how changes are made and grouped, when they are distributed to users, and how model versions are managed in general.

You can verify if a model is sealed or not through the Type Model or Instance Model property page.

Sealing process

Sealing is a straightforward process. When you seal a model, the system:

  1. Validates the model. If the model doesn't validate, sealing is not possible.
  2. Calculates a cryptographic hash of the whole model contents, which works as a "freeze frame" picture of the model.
  3. Attaches a seal manifest to the model, containing this cryptographic hash as well as the date and time of the sealing.

The resulting sealed model is indistinguishable from the original one other than by having a seal manifest. Specifically, sealing does not alter the version number of the model. If you want the sealed model to have a different version number, change this manually before sealing.

Unsealing process

When you unseal a model, the system:

  1. Asks you to provide a new version number for the unsealed model. This version number must be greater than the one of the sealed model.
  2. Clones the sealed model, giving it the provided new version number, and skipping the seal manifest.

The resulting unsealed model is distinguishable from the original one by its version number, and because it lacks a seal manifest. After unsealing, you still have the original sealed model as well as the new unsealed version. In this manner, you can use the original sealed model as a comparison baseline once you start making changes to the unsealed version.

The new unsealed version can be changed as any other model. Once you have finished making changes, you can seal it again and distribute it to its users, restarting the cycle and keeping changes under control.

See Also


Contents distributed under a Creative Commons Attribution 4.0 International License · About · Terms of Use · Contact Us · last updated on 08 October 2020