Resource Query Language (RQL) in declaration of navigation elements makes the UI structure more flexible.
In this document:
RQL statements operate properties of variables declared in navigation elements.
The following attributes of navigation elements can use RQL to calculate their values.
visible
in an item, view,
or view-plugin element accepts a boolean value. This hides
the respective visual component or makes it visible on the screen. In the following example,
the showNetworkTab property of the vpsmanagement variable defines if the control panel will
show the item.
<item id="network" label="Network" visible="vpsmanagement.showNetworkTab=eq=true()">
filter
in a var element defines resources to be added
to the declared variable. The following declaration of the vps variable adds a linked offer to the variable:
<view id="server-edit" label="Edit">
<var name="vps" type-id="http://aps-standard.org/samples/basic/vps/2.0"
filter="select(offer)"/>
<controls>
<cancel/>
<finish/>
</controls>
</view>
This allows the server-edit view to process not only the selected VPS but also the offer linked with it.
A label
or step-label of a navigation item,
wizard host, or view
can get its value dynamically. In the following example, the offer-edit view will display
the name of the offer opened for editing:
<view id="offer-edit" label="Edit Offer {offer.name}">
<var name="offer" type-id="http://aps-standard.org/samples/offer-mgmt/offer/1.0"/>
<controls>
<cancel/>
<submit/>
</controls>
</view>
The mentioned above RQL operations are performed before a visual element is processed. The navigation mechanism can read only navigation data and is not able to change any data.
To specify a property of a variable, use the dot notation. For example if the vps variable has the id property, RQL may use the property as vps.id.
The navigation mechanism does not generate any special queries to the APS controller and operates
only variables declared in navigation elements.
That is why, you cannot use such RQL functions as implementing()
, limit()
, or sort()
.
It is not allowed to change any properties in RQL statements, that is no assignment is supported.
The filter
property is processed by the APS controller. That is why, a filter must operate objects
and their properties that the APS controller can find in its database. For example, it should not use a variable name
defined in navigation metadata.
Access to an element of a variable collection, for example, myVar.servers[11], is not allowed.
In RQL statement, a string not recognized as a variable name is automatically recognized as a string or a number in dependence of its value. For example hello is processed as a string, and 123 or 3.14 is processed as a number, respectively integer or double. A string in the form of date/time, for example, 2015-09-04T00:00:00+04:00, is processed as the date type.
XML text must contain allowed characters as specified by W3C Recommendation, 2.2 .
You should escape markup elements using one of the escape constructions:
Entity name in the form of “&entity_name;” in accordance with W3C Recommendation, 2.4 , for example, “&” represents “&”, and “<” represents “<”.
Entity reference in the form of “&entity_reference;” in accordance with W3C Recommendation, 4.1 , for example, decimal code “&” or hexadecimal code “&” represents “&”.