CustomQueryInstanceNodes

Returns nodes for instances which are returned by an ECSQL query.

Attributes

Name Required? Type Default Meaning Performance Notes
Filtering
queries No QuerySpecification[] [] Specifications of queries used to create the content.
hideNodesInHierarchy No boolean false Hide nodes provided by this specification and directly show their children. Expensive
hideIfNoChildren No boolean false Hide nodes if they don't have children. Expensive
Ordering
priority No number 1000 Changes the order of specifications used to create nodes for specific branch.
doNotSort No boolean false Suppress default sorting of nodes returned by this specification. Improves
Grouping
groupByClass No boolean true Group instances by ECClass
groupByLabel No boolean true Group instances by label Expensive
Misc.
hasChildren No `"Always" \ "Never" \ "Unknown"` "Unknown" Tells the rules engine that nodes produced using this specification always or never have children. Improves
relatedInstances No RelatedInstanceSpecification[] [] Specifications of related instances that can be used in nodes' creation.
nestedRules No ChildNodeRule[] [] Specifications of nested child node rules.

Query Specifications

Query specifications define the actual results of the CustomQueryInstanceNodes specification. There are 2 types of supported query specifications: string and ECProperty value.

The queries used in the specifications must return ECClassId and ECInstanceId columns, e.g.:

SELECT ECClassId, ECInstanceId
  FROM [bis].[Element] e
 WHERE e.ParentId = 10

Note: sorting and grouping happens after results of multiple query specifications are aggregated.

String

The specification contains an ECSQL query which is used to query for instances.

Attributes

Name Required? Type Meaning
class Yes SingleSchemaClassSpecification Specification of ECClass whose instances the query returns.
query Yes string Specifies the search ECSQL query.

ECPropertyValue

The specification specifies the name of the parent node instance property whose value is the ECSQL used to query for instances.

Precondition: can be used only if parent node is ECInstance node. If there is no immediate parent instance node, the rules engine walks up the hierarchy until it finds one. If that fails, this specification has no effect.

Attributes

Name Required? Type Meaning
class Yes SingleSchemaClassSpecification Specification of ECClass whose instances the query returns.
parentPropertyName Yes string Specifies name of the parent instance property whose value contains the ECSQL query. Warning: the property whose name is specified must be of string type.

Example

{
  "specType": "CustomQueryInstanceNodes",
  "groupByClass": false,
  "groupByLabel": false,
  "queries": [{
    "specType": "String",
    "class": {"schemaName": "BisCore", "className": "Element"},
    "query": "SELECT ECClassId, ECInstanceId FROM [bis].[Element] e WHERE e.ParentId = 10"
  }, {
    "specType": "ECPropertyValue",
    "class": {"schemaName": "BisCore", "className": "GeometricElement3d"},
    "parentPropertyName": "ChildrenQuery"
  }]
}

Last Updated: 08 January, 2020