Attribute groups

Attribute groups are a type of field on an Object which consist of multiple attributes describing a single concept. For example, a file and what level of access is required within the system to access it.

Each of these different parts may need to be mapped or transformed, so a two step process is used to convert these types from the input data.

1. Copy values to pseudo-destination

Each of the attribute group data types has an associated pseudo-destination, which has Names for each of the fields. These pseudo-destinations show up in the Model, and are named with a prefix of destination e.g. destination:attribute-group:descriptor.

Use the normal field and set-value Instructions to set the fields in this pseudo-destination. This allows all the value conversion features to be used on the input data.

Use the admin UI to see the Names in these pseudo-destinations.

Each Name in the pseudo-destination is copied individually. If the input data includes these values as properties of a nested JSON structure, use the within Instruction to move within the structure.

2. Set value from the pseudo-destination

Once all the values have been set in the value type’s pseudo-destination, use the set-attribute-group Instruction to combine the values into a group and set it in the final Destination.

This Instruction clears the pseudo-destination ready for the next value to be assembled.

Example

These Instructions copy values from the input Record into the “file” attribute group pseudo-destination then appends it to the correct attribute within the object represented by the example Destination.

{ "action":"new", "destination":"example:attribute-group:file" },
{ "source":"File", "destination":"example:attribute-group:file", "name":"std:attribute:file"  },
{ "source":"Access", "destination":"example:attribute-group:file", "name":"example:attribute:access-level"  }
{
    "action": "set-attribute-group",
    "source": "example:attribute-group:file",
    "destination": "example",
    "name": "example:attribute:file-with-access-level"
}

The file and access level are combined into an attribute group and appended to the example destination.