Writing Transformations - Cross References


Cross References are an important part of transformations. They are used for:

  • Finding the transformed class to synchronise with.
  • Creating connectors between transformed classes.
  • Determining where to transform to for future transformations.

Each cross reference is made up from three different parts. They are:

  • A Namespace, corresponding to the transformation that generated the element.
  • A Name, is a unique reference to something that can be generated in the above transformation.
  • A Source, is the GUID of the element that this element was created from.

When writing the templates for a transformation, it is easiest to create the cross references using the TRANSFORM_REFERENCE function macro which is defined for this purpose. It has three parameters, each of which is optional.

TRANSFORM_REFERENCE(<name>, <sourceGuid>, <namespace>)
Generates the a reference that can be used in the ways described above. It will look like the following.

XRef{namespace="<namespace>" name="<name>" source="<sourceGuid>"}

Where:

  • If <name> is not specified it gets the name of the current template.
  • If <sourceGUID> is not specified it gets the GUID of the current class.
  • If <namespace> is not specified it gets the name of the current transformation.

Note: The only time that this should be specified is when creating a connector to a class created in a different transformation.

A good example of the use of cross references is in the DDL templates provided with EA. In the Class template a cross reference is created with the name table. Then up to two different connectors can be created, each of which needs to identify the two classes it connects using cross references while needing its own unique cross reference.