Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AVEVA™ Information Standards Manager

Classes

  • Last UpdatedJan 28, 2025
  • 12 minute read

The Classes section defines what classes to be included in the report, and for each class, what columns to render. This section is a generalization of the deprecated section Functionals from previous version of Permissible Grid. Functionals is supported for backward compatibility though.

The syntax for Classes definition is:

<Classes concept="Functional" autoFilter="true" classHierarchy="Expanded" where="./@name.isNotNull()"

suppressTopLevelAbstractClasses="false">

...

</Classes>

Element

Property

Description

Classes

The containing element for OrderBys and Columns

Except for where, expressions supplied for property values on this element will be resolved in the context of the ClassLibrary node (see Context nodes and expression syntax).

concept

An expression resolving to a class concept specifier:

  • Functional

  • Physical

  • Document

  • General

When omitted, Functional will be the default value

classHierarchy

An optional expression controlling how the class hierarchy should be rendered.

  • Flattened (Default): Classes will be rendered as a flat list

  • Preserved: Classes will be ordered according to Class@hierarchyLevel, and for each level the first column will be indented by one cell

  • Expanded: Same as Preserved, but in addition there will be one outlining level for each level in the hierarchy. Outlining will be expanded by default

  • Collapsed: Same as Expanded, but all outlining levels will be collapsed by default

autoFilter

An optional Boolean expression specifying whether an Excel auto filter (filter buttons for column values) should be defined for the row containing the class headers.

where

An optional Boolean expression defining the criteria for what Classes to include in the report (see Value expressions). The context of this expression will be the individual Classes (see Context nodes and expression syntax).

If not specified, all qualifying Classes (see suppressTopLevelAbstractClasses below) will be included in the report.

IMPORTANT:
The property @hierarchyLevel is not resolved until after the applicable classes has been determined, hence this property cannot be a part of the where expression.

suppressTopLevelAbstractClasses

An optional Boolean expression specifying whether to automatically suppress classes matching:

  • Being a single root class in the hierarchy (such as e.g. the ISM_ROOT_FUNCTIONAL class, auto generated by the Excel reader)

  • Being an abstract class that is the immediate child of the single root class

This property defaults to true, i.e. classes as specified above are by default suppressed from the report.

suppressAbstractSingleRootClass

An optional Boolean expression specifying whether to automatically suppress a single abstract root class (such as e.g. the ISM_ROOT_FUNCTIONAL class, auto generated by the Excel reader)

This property defaults to true, i.e. any abstract single root class in the Class Library are by default suppressed from the report.

OrderBys

The Classes/OrderBys section controls in what order the classes will be rendered, and how to separate groups of similar classes.

Example of Classes/OrderBys syntax:

<Classes ...>

<OrderBys>

<OrderBy geicl:id="Extends" condition="./@extendsId ?? ZZZ" direction="Ascending" break="Row"

value="concat(./@extendsId, ' - ', ./@extends)" header="' '">

<Style>

<Borders>

<Bottom style="Dashed"/>

<Top style="None"/>

</Borders>

<Font size="11" bold="true" color="rgb(0,0,0)"/>

</Style>

<HeaderStyle>

<Borders>

<Bottom style="None"/>

<Top style="Double"/>

</Borders>

<Fill pattern="None"/>

</HeaderStyle>

</OrderBy>

<OrderBy geicl:id="Name" condition="./@name" direction="Ascending"/>

</OrderBys>

...

Element

Property

Description

Classes

The containing element for OrderBys and Columns

OrderBys

An optional element holding a collection of OrderBy definitions

style

An optional reference to a Named Style definition from the section above. The content of OrderBy@value will be formatted according to the referenced style definition.

If not specified, the default value will be taken from PermissibleGrid@style

headerStyle

An optional reference to a Named Style definition from the section above. The content of OrderBy@header will be formatted according to the referenced style definition.

If not specified, the default value will be taken from PermissibleGrid@headerStyle

OrderBy

geicl:id

Assigns an identifier to the OrderBy.

All items inside a collection element, such as OrderBys must have an identifier which is unique within the containing collection

condition

An expression resolving to the order by value for each individual class.

If the expression resolves to an empty value for some of the classes, you can specify a default value to control how these instances are ordered.

If you want to order by the @sortOrder property of the classes, you should use the expression ./@sortKey. The synthetic property @sortKey holds the value of integer property @sortOrder, but formatted as a sortable string value

direction

Specifies in what direction the ordering should be organised:

  • Ascending (default)

  • Descending

break

Specifies how to separate groups of classes. All classes having the same value for @condition is said to belong to the same group:

  • None (default): There will be no separation of the groups

  • Row: Each group will be separated by one (or two) group rows. When used, this value can be specified for one instance only in the collection of OrderBy

  • Page: Each group will be rendered in a separate sheet in the workbook. When used, this value must be specified for the first instance in the collection of OrderBy, and it can only be specified once

collapsed

This setting is applicable only when @break="Row".

An optional Boolean expression specifying how to outline rows in a break group. The options are:

  • Unspecified (default): There will be no outlining for rows of a break group

  • true: All rows in a break group will be outlined, and the groups will be collapsed by default

  • false: All rows in a break group will be outlined, but the groups will not be collapsed by default

    IMPORTANT:

    When Classes@classHierarchy has a value different from Flattened, outlining will be according to class hierarchy, hence this property will have no effect

value

An optional expression resolving to a value that will be rendered as the group title. How the value is rendered depends on @break:

  • None (default): The value will not be rendered

  • Row: The value will be rendered as a single row, spanning the entire sheet

  • Page: The value will be rendered as the sheet name

header

An optional expression resolving to a value that will be rendered as an extra group title. How the header is rendered depends on @break:

  • None (default): The header will not be rendered

  • Row: The header will be rendered as a single row before @value, spanning the entire sheet

  • Page: The header will not be rendered

style

This setting is applicable only when @break="Row".

An optional reference to a Named Style definition from the section above. The content of OrderBy@value will be formatted according to the referenced style definition.

If not specified, the default value will be taken from OrderBys@style

headerStyle

This setting is applicable only when @break="Row".

An optional reference to a Named Style definition from the section above. The content of OrderBy@header will be formatted according to the referenced style definition.

If not specified, the default value will be taken from OrderBys@headerStyle

suppress

When the value of this property resolves to true the OrderBy definition will be excluded from the report definition. This feature can e.g. be used select applicable OrderBy definitions, based on conditions derived from context or user input

geicl:sortOrder

An integer value that controls the order of siblings in the containing collection. To fully understand the impact of using this property.

OrderBy/

Style

This setting is applicable only when @break="Row".

An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the OrderBy@style property

OrderBy/

HeaderStyle

This setting is applicable only when @break="Row".

An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the OrderBy@headerStyle property

OrderBy/

Conditions

This setting is applicable only when @break="Row".

The containing element for optional Condition definitions.

Condition definitions can be used to override @style and @headerStyle settings and optionally @value and @header of the group title row(s), based on a condition.

Condition

geicl:id

Assigns an identifier to the Condition.

All items inside a collection element, such as Conditions must have an identifier which is unique within the containing collection

where

A Boolean expression used to control whether the condition is fulfilled (see Context nodes and expression syntax)

Style

An optional reference to a Named Style definition from the section above. When the condition is fulfilled the effective style for the group title row will be an aggregate of the @style definitions on Condition and OrderBy, with definitions on Condition taking precedence

headerStyle

An optional reference to a Named Style definition from the section above. When the condition is fulfilled the effective style for the extra group title row will be an aggregate of the @headerStyle definitions on Condition and OrderBy, with definitions on Condition taking precedence

value

An optional expression defining the content of the group title row (see Value expressions). When the condition is fulfilled, the Condition@value will take precedence over the OrderBy@value. The presence of @value has an impact on how Condition statements are applied:

  • When there are more than one Condition having @value, the first fulfilled Condition (in the order of appearance) will be applied.

  • When there are one or more Condition not having @value, all fulfilled Condition will be applied. I.e. the style definitions from all fulfilled Condition without @value will be aggregated together with any style definitions on the OrderBy

header

An optional expression defining the content of the extra group title row (see Value expressions). When the condition is fulfilled, Condition@header will take precedence over OrderBy@header.

suppress

When the value of this property resolves to true the Condition definition will be excluded from the report definition. This feature can e.g. be used to select applicable Condition definitions, based on conditions derived from context or user input

geicl:sortOrder

An integer value that controls the order of siblings in the containing collection. To fully understand the impact of using this property.

Condition/

Style

An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the @style property

Condition/

HeaderStyle

An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the @headerStyle property

Columns

The Classes/Columns section specifies the columns of Class information to be rendered.

Example of Classes/Columns syntax:

<Classes ...>

<OrderBys>

...

</OrderBys>

<Columns headerStyle="TagHeader" style="TagColumn">

<Column geicl:id="Sub Classes" header="Classes/Sub Classes'"

value="concat(./@id, ' - ', ./@name)" />

</Columns>

</Classes>

Element

Property

Description

Classes

The containing element for OrderBys and Columns

Columns

The containing element for a collection of Column definitions

style

An optional reference to a Named Style definition from the section above. The content of Column@value will be formatted according to the referenced style definition.

If not specified, the default value will be taken from PermissibleGrid@style

headerStyle

An optional reference to a Named Style definition from the section above. The content of Column@header will be formatted according to the referenced style definition.

If not specified, the default value will be taken from PermissibleGrid@headerStyle

freeze

An optional Boolean expression specifying whether all columns should be frozen in the resulting sheet. Frozen columns will not scroll horizontally.

Column

geicl:id

Assigns an identifier to the Column.

All items inside a collection element, such as Columns, must have an identifier which is unique within the containing collection

value

An expression resolving to a value that will be rendered for the column for each corresponding class.

header

An optional expression resolving to a value that will be rendered for the column in the class header row.

style

An optional reference to a Named Style definition from the section above. The content of Column@value will be formatted according to the referenced style definition.

If not specified, the default value will be taken from Columns@style

headerStyle

An optional reference to a Named Style definition from the section above. The content of Column@header will be formatted according to the referenced style definition.

If not specified, the default value will be taken from Columns@headerStyle

freeze

An optional Boolean expression specifying whether the column should be frozen in the resulting sheet. A frozen column will not scroll horizontally.

A frozen columns pane always starts from the left most column, hence the last column specified to freeze will dictate how many columns will be frozen.

suppress

When the value of this property resolves to true the Column definition will be excluded from the report definition. This feature can e.g. be used to select applicable Column definitions, based on conditions derived from context or user input

geicl:sortOrder

An integer value that controls the order of siblings in the containing collection. To fully understand the impact of using this property, please see the explanation in

Column/

Style

An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the Column@style property

Column /

HeaderStyle

An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the Column@headerStyle property

Column /Conditions

The containing element for optional Condition definitions.

Condition definitions can be used to override @style settings and optionally @value of the column, based on a condition.

Condition

geicl:id

Assigns an identifier to the Condition.

All items inside a collection element, such as Conditions must have an identifier which is unique within the containing collection

where

A Boolean expression used to control whether the condition is fulfilled (see Context nodes and expression syntax)

style

An optional reference to a Named Style definition from the section above. When the condition is fulfilled the effective style for the column cell will be an aggregate of the @style definitions on Condition and Column, with definitions on Condition taking precedence

value

An optional expression defining the content of the column cell (see Value expressions). When the condition is fulfilled, the Condition@value will take precedence over the Column@value. The presence of @value has an impact on how Condition statements are applied:

  • When there are more than one Condition having @value, the first fulfilled Condition (in the order of appearance) will be applied.

  • When there are one or more Condition not having @value, all fulfilled Condition will be applied. I.e. the style definitions from all fulfilled Condition without @value will be aggregated together with any style definitions on the Column

suppress

When the value of this property resolves to true the Condition definition will be excluded from the report definition. This feature can e.g. be used to select applicable Condition definitions, based on conditions derived from context or user input

geicl:sortOrder

An integer value that controls the order of siblings in the containing collection. To fully understand the impact of using this property.

Condition/

Style

An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the @style property

Joins

Tha Classes/Joins section enables joining of associated classes, potentially from different concepts.

Example of Join syntax:

<Classes concept="Functional" autoFilter="true">

<OrderBys>

<OrderBy geicl:id="Discipline" condition="./@discipline ?? ZZZ" direction="Ascending"/>

</OrderBys>

<Columns headerStyle="TagHeader">

<Column geicl:id="Discipline" header="'Discipline'" value="./@discipline ?? 'Misc'"/>

<Column geicl:id="ClassName" header="'Name'.concat(' ({0})').format($NumberOfClassesInSheet)" value="./@name" freeze="true"/>

<Column geicl:id="ClassId" header="'Class Id'" value="./@id" />

<Column geicl:id="AttributeCount" header="'#Attributes'" value="./@permissibleAttributesInSheetCount" />

</Columns>

<Joins>

<Join geicl:id="Physical" concept="Physical" constraint="Left">

<Attributes permissibleOnly="true" collapsed="false">

<OrderBys>

<OrderBy geicl:id="GroupId" condition="./@groupId ?? ZZZZ" direction="Ascending" />

<OrderBy geicl:id="Name" condition="./@name" direction="Ascending" />

</OrderBys>

<Headers style="PhysicalAttributeHeader" headerStyle="AttributeLegend">

<Header geicl:id="Physical" mergeCells="true" value="'Requirements for Physical Classes'" />

<Header geicl:id="Group" mergeCells="true" header="'Group'.concat(' &#x2192;')" value="./@group ?? 'Misc'" />

<Header geicl:id="Name" header="'Name'.concat(' ({0}) {1}').format($NumberOfAttributesInSheet, '&#x2192;')" value="./@name" />

</Headers>

<Columns styleWhenPresent="PermissiblePresent" styleWhenAbsent="PermissibleAbsent">

<Column geicl:id="PresenceMarker" valueWhenPresent="./@presenceForEdit" valueWhenAbsent="">

<Conditions>

<Condition geicl:id="IsDerived" where="IsDerived()" />

</Conditions>

</Column>

</Columns>

</Attributes>

<Classes>

<OrderBys>

<OrderBy geicl:id="SortKey" condition="./@sortKey" />

</OrderBys>

<Columns headerStyle="PhysicalTagHeader">

<Column geicl:id="ClassName" header="'Name'.concat(' ({0})').format($NumberOfClassesInSheet)" value="./@name"/>

<Column geicl:id="ClassId" header="'Class Id'" value="./@id" />

</Columns>

</Classes>

</Join>

</Joins>

</Classes>

Element

Property

Description

Joins

The containing element for Join definitions.

Join

geicl:id

Assigns an identifier to the Join.

All items inside a collection element, such as Joins, must have an identifier which is unique within the containing collection.

concept

An expression resolving to a class concept specifier for classes to join:

  • Functional

  • Physical

  • Document

  • General

When omitted, Physical will be the default value.

The classes to join will be resolved based on permissible attributes having Validation Type=Association and Target Classes matching the specified concept

constraint

An expression resolving to a constraint specifier:

  • Left: (Default): All classes in the primary Classes collection will be included in the result, even if they do not contain any joined classes

  • Right: The primary Classes collection will be constrained to only contain classes that have one or more joined classes

suppress

When the value of this property resolves to true the Join definition will be excluded from the report definition. This feature can e.g. be used to allow the user to choose whether to include the join section

geicl:sortOrder

An integer value that controls the order of siblings in the containing collection. To fully understand the impact of using this property

In this version (2.0), there are only support for one Join section in a report configuration

Attributes

This section defines what attributes to be included for the joind classes, how to render the attribute header rows and how to render the cells in the intersection between attributes and the joined classes.

The structure of this section is like the primary Attributes section

Classes

This section defines what joined classes to be included in the report, how to order them, and for each class, what columns to render

where

A Boolean expression that will resolve in the context of each joined class to determine whether to include the class in the result (see Context nodes and expression syntax)

Classes/OrderBys

This section defines how to order joined classes. This section is like Classes/OrderBys

Classes/Columns

This section defines what columns to include in the joined section, and how they should be rendered. This section is like

TitleResults for “How to create a CRG?”Also Available in