Select Expressions
You can use select expressions in several operations within the ENOVIA Studio Modeling Platform:
- In ENOVIA Matrix Navigator, you can use select expressions in queries, tables, and
visuals.
- In Business Modeler, you can use select expressions in reports and
forms.
- In MQL, you can use select expressions in print and expand statements,
as well as queries.
The purpose of select expressions is to obtain or use information related
to a business object. The system attempts to produce output for each
select clause input, even if the object does not have a value for it.
If this is the case, an empty field is output.
- In a query or a visual, the select expression value is used to qualify
the search criteria (in a where clause) by comparing it with another
(given) value.
- In a table, report, or form, the expression defines the information
to present in a column or field.
- In a print or expand statement,
the expression defines the information to output about the object(s).
You can obtain information which includes not only attribute values and
other business object data, but also administrative object information,
such as the governing policy, vault, and so on. The key property of a
select expression is that it can access information related to an object.
In all cases, the expression is processed from the context of a starting
object.
- In a query, the starting point is the business objects that meet other
selection criteria (vault, type, and so on).
- In a table, the starting point is the business object in each row.
The phrase starting point is used because the select mechanism actually
uses the same concept of navigation from one object to another that makes
the rest of the system so flexible. Most information is actually represented
internally by a small object and not by a text string or numeric value
as it appears to the user.
These internal objects are all linked in the same way business
objects are connected by relationships. The links can be navigated from
one object to another. A period (.) indicates a link in the select expression.
The entire list of selectable fields can be obtained via MQL.
If you type this MQL command:
print businessobject selectable;
|
The result is similar to:
name
description
revision
originated
modified
lattice.*
owner.*
grantor.*
grantee.*
granteeaccess
granteesignature
policy.*
type.*
attribute[].*
default.*
format[].*
current.*
state[].*
revisions[].*
previous.*
next.*
first.*
last.*
history
relationship[].*
to[].*
from[].*
exists
islockingenforced
vault.*
locked
locker.*
reserved
reservedby
reservedstart
reservedcomment
id
method
search*
workflow[].*
|
The .* notation indicates the item is an
object and you can navigate to other information from that object. Items
without this notation are simple data types (locked,
id, method, and so on) and cannot be
used for further navigation.
The square bracket notation (for example, attribute[].*)
indicates that there can be many linked attribute objects and that a
specific name can be entered if it is known. By contrast, object notations
without the square brackets (for example, owner.*),
means there is only one Owner object linked to the starting object.
If you expand the information available from the Owner object by typing:
print businessobject selectable owner;
|
these options are listed:
owner.name
owner.description
owner.property[].*
owner.hidden
owner.id
owner.mask.*
owner.admin.*
owner.email
owner.isaperson
owner.isagroup
owner.isarole
|
owner.name indicates that you can find the name of
the owner by navigating to the Owner object and then to the name data
(string, in this case) in that object. Each successive expansion may
reveal other objects that can yield more information.
Refer to the "Working with Workspace Objects" chapter of the MQL Guide for more information on second level selectables that may
help improve expand and query performance.
A business object can only have a single governing policy, so the
square bracket notation does not appear. If you expand the information
available from the policy.* option by typing:
print businessobject selectable policy;
|
These options are listed:
policy.name
policy.description
policy.property[].*
policy.hidden
policy.id
policy.type[].*
policy.format[].*
policy.defaultformat.*
policy.state[].*
policy.revision
policy.store.*
policy.islockingenforced
|
If you expand the information further for the policy.state
option by typing:
print businessobject selectable policy.state;
|
These options are listed:
policy.state.name
policy.state.publicaccess.*
policy.state.owneraccess.*
policy.state.notify
policy.state.route
policy.state.action
policy.state.check
policy.state.access[].*
policy.state.signature[].*
policy.state.revisionable
policy.state.versionable
policy.state.autopromote
policy.state.checkouthistory
|
You use the same process for expanding selectable fields as the process
of expanding connected business objects in the Navigator browser. It
involves following links from one item to another.
Programs should be explicit about the selectables desired and their
output order. ENOVIA does not guarantee output will remain in the same
order from version to version.

Scenario for Selectables
This example shows a business object, Assembly 90000 A, with
the following properties:
Assembly 900000 A
policy = Production
current = Released
description = Bed Frame
cost = 1000
weight = 100
|
Example
Suppose you want to use the information about the policy. The table
below shows how this information is obtained with the MQL print command
and also how it could be used in finds, tables, and so on.
|
MQL print Command |
Find or Visuals Where Clause |
Table, Report, Form Field |
Select Expression |
print bus Assembly 90000 A select policy; |
policy = production |
policy |
Result |
MQL returns: policy = Production |
Assembly 90000 A is found or the visuals are
applied to it. |
If Assembly 90000 A is in the table/report/form,
Production is output in that column/field. |
In the where clause, a space must be included before and after all
operators.
Example:
This example shows how to use the attribute "Cost" in Assembly 90000
A. The table below shows how this information is obtained with the MQL
print command and also how it could be used in finds, tables, and so
on.
|
MQL print Command |
Find or Visuals Where Clause |
Table, Report, Form Field |
Select Expression |
print bus Assembly 90000 A select attribute[cost]; |
type == Assembly && attribute[cost]
== 1000 (or perhaps, attribute[cost] < 2500, and
so on.) |
attribute[cost] |
Result |
MQL returns: attribute[cost] =
1000 |
Assembly 90000 A is found or the visuals are
applied. |
If Assembly 90000 A is in the table, report,
or form, 1000 is output in that column/field. |