Group Types

Groups are containers for one or many resource types. Like resource types, group types are categories or schemas of groups: they specify which fields are common to all groups of that type, as well as the different resource types they can contain. A group type can be defined or modified on the Model > Group Types page.

Groups can be used for any logical grouping of resources and store information about the nature of that group. For example, a number of machines could be logically grouped together by the facility that houses them; so, a "Facility" group type could store resources of the "Machine" type, and could include fields such as the address of the facility, contact name of the facility manager, etc. For an application tracking a fleet of vehicles, a group could be a specific functional class such as "supervisor cars", or those cars serving a specific department or operating region. For a group of monitored assets, a group could be a contract number or financial entitlement of some sort; for example, certain monitored robots could fall under the "Service Contract 123456" group.

Abstracting these fields away from the individual resources and into a parent group enables the user to easily retrieve information specific to the group, or to fetch all resources belonging to a logical grouping, without the use of convoluted logic within the Query Builder or the Routine Builder. Furthermore, using a group ensures that the fields of the group are the same for all constituent resources. For example, in the first example above, say that the manager of a Facility was replaced. Without the use of a group, a user would have to update every single Machine individually to change its "Facility manager contact name" field, or possibly create a routine to do so. Either of these options is much more complicated and time-consuming than simply editing one field of one group.

Key and Label

A group type also contains a Group Key and Group Label, which serve as a unique identifier and common name for instances of that type, respectively. These can be defined by simply checking the "Group Key" or "Group Label" flag when editing a field of the group type, or by using Expression Language to create more complicated strings based on one or more fields. As is the case for resource types, the Key must either be a unique and required field, or a string based off such a field; the Label need only be a required field or derivative string.

Hierarchy

Groups, by definition, have a hierarchical relationship with one or more types of resources: a parent group contains one or many resources. However, a user can also create hierarchies between different group types by assigning Subgroup Types to a group type. For example, the "Port" group type could contain the "Fleet" group type as a subgroup, which itself would contain the "Ship" resource type; in this example, 20 different "Ship" resources could belong to Fleet A, which could be assigned to operate and report to Port 125.