During the initialization of the toolkit, the externalizers resolved tag linking references. This modifies the tag structure in memory so that all the reference tags pointing to the same entity point to the same tag definition instance. To dynamically update the tag structure in memory, the reset process does the following:
For example, the definitions for an entity called B have been updated in the definition file. In the following table, the "Before the update" column shows the file and tag structure in memory before the update was made. The "After the update" column shows the changes in the file and the tag structure in the temporary externalizer. The numbers in parentheses are the instance numbers of the tags.
Before the update | After the update | |
---|---|---|
Definition file | <kColl id="A"> <refData refId="B"/> </kColl> <field id="B"/> |
<kColl id="A"> <refData refId="B"/> </kColl> <kColl id="B"> <refData refId="C"/> <refData refId="D"/> </kColl> <field id="C" /> <field id="D" /> |
Tag structure | Tag A(1) subtag of A(2) Tag B(2) |
Tag A(3) subtag of A(4) Tag B(4) subtag of B(5) subtag of B(6) Tag C(5) Tag D(6) |
The tag structure in the original externalizer after performing the reset process on the B definition is:
Tag A(1) subtag of A(2) Tag B(2) subtag of B(5) subtag of B(6)
There is a limitation to the reset process as the following example demonstrates:
Before the update | After the update | |
---|---|---|
Definition file | <kColl id="A"> <refData refId="C"/> </kColl> <kColl id="B"> <refData refId="C"/> <refData refId="D"/> </kColl> <field id="C"/> <field id="D"/> |
<kColl id="A"> <refData refId="C"/> </kColl> <kColl id="B"> <refData refId="C"/> <refData refId="D"/> <refData refId="E"/> </kColl> <field id="C"/> <field id="D"/> <field id="E"/> |
Tag structure | Tag A(1) subtag of A(3) Tag B(2) subtag of B(3) subtag of B(4) Tag C(3) Tag D(4) |
Tag A(5) subtag of A(7) Tag B(6) subtag of B(7) subtag of B(8) subtag of B(9) Tag C(7) Tag D(8) Tag E(9) |
The tag structure in the externalizer after performing the reset process on the B definition followed by doing the reset process on the C definition.
Tag A(1) subtag of A(3) Tag B(2) subtag of B(7) subtag of B(8) subtag of B(9) Tag C(3) Tag D(4)
The reset process updates tag instance 3 but only propagates the change in entity A. The reset process does not propagate the change in entity B because the reset process has changed the instance number back to 3 and the entity B still points to tag instance number 7.