Skip to content

Provide support for componentization of consistency - #560

Open
jeanpmathes wants to merge 16 commits into
vitruv-tools:mainfrom
jeanpmathes:main
Open

jeanpmathes wants to merge 16 commits into
vitruv-tools:mainfrom
jeanpmathes:main

Conversation

@jeanpmathes

@jeanpmathes jeanpmathes commented Sep 13, 2026

Copy link
Copy Markdown

This PR provides required changes for the "Componentization of Model Consistency" thesis. It aims to allow creating Vitruvius viewtypes using NeoJoin and use this viewtypes in a change propagation specification. This required two major parts:

  1. Change propagation specifications can be assigned a level. By default, all change propagation specifications have level zero. Before a change propagation specification of a level N greater than zero is executed, all relevant change propagations of lower levels are executed first. This allows to ensure that one component/part of a VSUM is fully consistent internally before a change propagation from or to that component to other components is executed.
  2. Before change propagations are executed, a snapshot/copy of the VSUM state is created. These snapshots are then provided to the change propagation specification so that it can use both the current state and the state before the changes it propagates were applied.

This two major changes are accompanied by smaller changes, especially to change propagation. This includes a new method to the ChangePropagationSpecification interface which allows to receive all changes at once instead of a method call per individual change. These could lead to changes in behavior for existing code, but generally the additions were written in a way to minimize that.

The changed interfaces require implementers to implement new methods, this specifically impacts the types ResourceAccess, ChangeRecordingModelRepository, PersistableCorrespondenceModel and ChangePropagationSpecificationProvider. For Vitruv, the PR vitruv-tools/Vitruv#893 implements the necessary methods.

This fork of the methodologist template shows how to use new systems for viewtypes, it requires the thesis implementation.

…ons to access the state of the model repository before the currently to-propagate changes where applied to the source side of change propagation
…pagation, ensuring a level is settled before propagating on a higher level
…l (therefore, overlap) are needed:

1. in the case of changes to multiple models of metamodel A and B, a reaction A needs to run
2. in the case of changes just to metamodel A, a reaction [A, B] needs to run
# Conflicts:
#	correspondence/src/main/java/tools/vitruv/change/correspondence/model/PersistableCorrespondenceModelImpl.java
@jeanpmathes
jeanpmathes marked this pull request as ready for review September 13, 2026 17:18
@jeanpmathes
jeanpmathes requested a review from a team as a code owner September 13, 2026 17:18
@arlange
arlange requested a review from larsk21 September 14, 2026 11:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants