Closed jGleitz closed 3 years ago
Note also that ChangePropagatorImpl
has a method for filtering out correspondence changes. This might be another indication that we generally don’t want to have changes for correspondences.
I agree to all presented arguments and I am not sure why we started to record changes of correspondences. More important than whether the consistency mechanisms want to react to correspondence changes or not (and I absolutely agree that they should not do that) is, from my point of view, the question whether correspondence changes have to be monitored to reproduce a state of the models by just executing the monitored changes. And in that regard I would assume the original changes plus the given user interaction decisions to be sufficient for reproducing any state by applying changes and executing transformations again, which then creates the correspondences (as well as the consequential changes). Thus, also from that point of view, monitoring correspondence changes should not be necessary.
Just as a guess: The correspondence model stored EObjects
rather than (UU|TU)IDs some years ago. Therefore, it had to be placed in the same resource set as the EObjects
in the monitored resource linked by the correspondences. We could have started monitoring only for non-correspondence resources, but the monitor worked differently as well and that may have led us to the current solution.
Please note that I don't want to justify any aspect of the implemenation. I just try to recap how we came to the current implementation to, in the best case, conclude that the correspondence model was only monitored by accident or because of technical limitations but not by conceptual intent.
Your theory sounds quite plausible. It also supported by the fact that nothing broke when I moved the correspondence model to another ResourceSet
. There wasn’t even a small, dumb thing I had to change. Everything just continued working.
We currently register the
CorrespondenceModel
in the monitored resource set of the VSUM, meaning that all correspondences get UUIDs and are monitored for changes. This obviously was a conscious design decision, but I wonder why.In a quick test, I loaded the
CorrespondenceModel
in a separate resource set, so that no changes were monitored for it and no UUIDs were assigned. I did not notice anything breaking.So unless there is a strong conceptual argument for monitoring correspondences, I’d propose to stop doing it.