Book a Demo

Author Topic: Mirror Nodes - An alternative to External References  (Read 21786 times)

Paolo F Cantoni

  • EA Guru
  • *****
  • Posts: 8626
  • Karma: +259/-129
  • Inconsistently correct systems DON'T EXIST!
    • View Profile
Mirror Nodes - An alternative to External References
« on: December 27, 2025, 05:54:13 pm »
Following our adventures with External References (where we need to transport one or more specific packages between two or more repositories), we’ve considered the issue and decided we need a more robust solution for our purposes. (see https://sparxsystems.com/forums/smf/index.php/topic,49201.0.html)
So we came up with the concept of “Mirror Nodes”.  A Mirror Node is a clone of its “Master” Node, so that if the Master is updated, we (automation) will also update the “Mirror” to maintain the “Mirror” status.
A new edge metatype, mirroring, will connect the two nodes.
We can thus use the Mirror node in the package to be exported, and it will appear as a full participant in the other repository.  We can also use Mirror Nodes within the same repository.
Architecturally, we propose adding a property, MirrorStatus, to the node, with the following enum values: None, Master, and mirror.  Note that the absence of the property implies None.  The node will also have the property LastMirrorActionTimepoint, which specifies when the last Mirroring action occurred.  If the MirrorStatus is None (whether set or implied), then the LastMirrorActionTimepoint is set to Not Applicable.  If implied, then the LastMirrorActionTimepoint property may be absent.
Additionally, the mirroring edge will also have the LastMirrorActionTimepoint property.
While conceptually we could allow a two-way link (i.e., will enable the mirror to change and the change to be pushed back to the Master), we have opted to allow only forward mirroring.
We have also decided not to allow “Mirrors of Mirrors”!  That is, if the user attempts this, they will be guided to mirror the original Master.
As you can see, this is a mix of the existing Sparx functionality for Time-Aware Modelling (TAM) and Virtual Connector Ends (VCEs), with an extra one thrown in.
I will leave it to the reader to consider what would happen if the mirror were transported to another repository, while the Master is not.

Before we go ahead with implementation, can anyone see any issues with the proposal?

TIA,
Paolo
Inconsistently correct systems DON'T EXIST!
... Therefore, aim for consistency; in the expectation of achieving correctness....
-Semantica-
Helsinki Principle Rules!