About Selectables

The following topics are discussed:

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.

Selectable Fields

This section contains alphabetical listings of all the selectable fields currently supported. Each listing includes the data type, a description of its meaning, and the default output. Data types included are:


  • Simple data types (string, integer, real, timestamp, boolean)
  • Administrative objects (business definitions--policy, attribute, etc.)
  • Internal objects (objects that are not seen by the user)
  • Business objects
  • Relationship instances

Each select expression has a default behavior to minimize the amount of typing required for an answer. In the case of simple data types, the default is always to return the value. Objects have different behavior in each case.