Projection - Operation Add Attribute Group
Overview
AddAttributeGroup is a projection operation that groups all the attributes from the source into an attribute group. This operation will work as follows:
- All the resolved attributes from the source that are provided as input to the operation.
- An attribute group is created with the name supplied by the property "attributeGroupName".
- The attributes received as input are added to the newly created attribute group.
Note: you can access the API reference for this operation on this link.
Examples
The examples below refer to the Person
entity as defined here.
{
"entityName": "Person",
"hasAttributes": [
{
"name": "name",
"dataType": "string"
},
{
"name": "age",
"dataType": "integer"
},
{
"name": "address",
"dataType": "string"
},
{
"name": "phoneNumber",
"dataType": "string"
},
{
"name": "email",
"dataType": "string"
}
]
}
Using an AddAttributeGroup operation on an entity attribute
We can use the AddAttributeGroup operation to place all the attributes referenced by the source entity attribute into an attribute group.
{
"name": "PersonInfo",
"entity": {
"source": "Person",
"operations": [
{
"$type": "addAttributeGroup",
"attributeGroupName": "PersonInfoGroup"
}
]
}
}
The resulting resolved PersonInfo entity typed attribute is:
PersonInfoGroup | Attribute |
---|---|
name | |
age | |
address | |
phoneNumber | |
Using an AddAttributeGroup operation when extending an entity
If we have an entity that extends another entity, we can use AddAttributeGroup to add the attributes of the base entity into an attribute group in the extended entity. Given an entity, Child, that extends the Person entity:
{
"entityName": "Child",
"extendsEntity": {
"source": "Person",
"operations": [
{
"$type": "addAttributeGroup",
"attributeGroupName": "ChildGroup"
}
]
},
"hasAttributes": []
}
The resulting resolved Child entity is:
ChildGroup | Attribute |
---|---|
name | |
age | |
address | |
phoneNumber | |
I can use multiple AddAttributeGroup operations
Using multiple addAttributeGroup operations will result in an attribute group being created inside another attribute group.
{
"name": "PersonInfo",
"entity": {
"operations": [
{
"$type": " AddAttributeGroup",
"attributeGroupName": "OuterGroup"
}
],
"source": {
"operations": [
{
"$type": " AddAttributeGroup",
"attributeGroupName": "InnerGroup"
}
],
"source": "Person"
}
}
}
The resulting resolved Child entity is:
OuterGroup | Attribute |
---|---|
InnerGroup | |
name | |
age | |
address | |
phoneNumber | |