# Object Navigator

The Object Navigator, located by default to the right of the dqMan screen, provides easy, fast and comprehensive access to the properties and connections (such as ACLs, owner names, relations, subscriptions, lifecycles, workflows and so on) to any other object in the repository.

You can edit any properties directly in the Object Navigator and you can also follow connections to other objects similar to a web browser by simply clicking the link to open the dependent object in the Object Navigator. Moreover, all available actions like object functions, type scripts and plugins are also available making Object Navigator first choice of working with single objects.

You can open Object Navigator and load new objects in any of the following ways:

* Use any explicitly identifiable object anywhere within dqMan, such as `r_object_ids` in any text area such as lists, logs, tails and so on, \
  or \
  Any object in the Repository Navigator, \
  or \
  Distinct values in the DQL result list, such as `acl_name`, `owner_name`, `r_object_type` and so on. \
  After selecting an identifier, you can load the object into Object Navigator either by pressing F12, by selecting ***Extras** menu>**Navigate Object*** or by long-clicking the object and then releasing the click when the cursor changes.
* If the clipboard contains a valid `r_object_id`, you can load this object by pressing Alt+N or by clicking ***Extras** menu>**Navigate Object from Clipboard***.
* Follow a link to a dependent object, as described earlier in this publication.&#x20;
* Press Alt+O or click ***View** men&#x75;**>Object Navigator*** to open it without selecting any object. This is useful to display an already loaded object again or to use the Quick Pick function (see later) to directly search for an object.&#x20;
* Load an object within an object function using the script command `FetchObject`*.*&#x20;

![Example: Object Navigator](https://content.gitbook.com/content/G7etuf5dkAp1XKMUt0gu/blobs/4F2f82jacFGNGUF22xJU/Object%20Navigator.png)

After any of these procedures, the Object Navigator will open if it is not already visible.

For handling objects, the Navigation Bar has functions that you can identify by the tooltips displayed after hovering your cursor above the desired icons:

* ![](https://content.gitbook.com/content/G7etuf5dkAp1XKMUt0gu/blobs/wmEMkb29Yy9bkCAJEoJ0/Object%20Navigator%20History.png) History of loaded objects (navigate using the **Previous Object** and **Next Object** ![](https://content.gitbook.com/content/G7etuf5dkAp1XKMUt0gu/blobs/C6CT2l54otKSqYTRTv5w/Object%20Navigator%20Previous%20Object%20Next%20Object.png) functions)
* <img src="https://content.gitbook.com/content/G7etuf5dkAp1XKMUt0gu/blobs/GnmO1XH8UQFSP4UbKpSP/Object%20navigator%20refresh.png" alt="" data-size="line"> Reload button to refresh currently displayed object
* <img src="https://content.gitbook.com/content/G7etuf5dkAp1XKMUt0gu/blobs/4S37qGF6QpeZSTJrHLIG/Object%20navigator%20search.png" alt="" data-size="line"> Quick Pick, a fast search for objects

The **Quick Pick** search function provides fast access to objects in the repository. You need to enter two strings in the top edit field to start a search: &#x20;

* **The first string** is part of the object type to be searched in. You can either enter the complete type name, such as `dm_user`, or part of the type name, such as `user`. In the latter case, the search will be conducted in all types containing the keyword *user* in the type name (`dm_user, dm_message_user_data, dm_message_route_user_data, dmc_workqueue_user_profile` and `dmc_wq_user_skill`).
* **The second string** is a part of the object name. Valid searches include, for example, *user admin*, *acl preset*, *folder template* and so on.

Press return or click **Search** to start the search. Search results are displayed in a list and you can double-click or press Enter to open the selected object in the Object Navigator. Single objects  are loaded without showing the result list.

The result list remains available until the next search.

If only one search string is provided, the search is presumed to be run in the default  `dm_sysobject` type. In the title bar, the name of the currently selected object and its type are displayed.

The attribute area displays all the attributes of the object and their values, which you can modify within the navigator. The context menu of the attribute area provides additional functionalities, as follows:

<table><thead><tr><th>Function</th><th>What It Does</th><th data-hidden></th></tr></thead><tbody><tr><td><strong>Copy</strong></td><td>Copies the selected value to the clipboard.</td><td></td></tr><tr><td><strong>Copy value of</strong></td><td>(Shortcut) Copies the selected value of the object to the clipboard. For more information, see the <strong>Configuration</strong> section later in this document.</td><td></td></tr><tr><td><strong>Edit</strong></td><td>Opens an inline editor to modify the selected property value.</td><td></td></tr><tr><td><strong>Add to Compare List</strong> </td><td>Adds the current displayed object to the <strong>Object Compare List</strong><em>.</em></td><td></td></tr><tr><td><strong>Destroy Cabinet/Destroy Folder</strong>  </td><td>Recursively destroys all subfolders of the currently displayed folder and the displayed folder itself, including all the contained objects. If these objects are linked to more than one folder, you can only destroy the links.</td><td></td></tr><tr><td><strong>Open in foldertree</strong></td><td>Selects the folder in the folder tree of the Repository Navigator (it will open if not already visible).</td><td></td></tr><tr><td><strong>Create ticketed user session</strong></td><td>Creates a dqMan session for the displayed user by generating a login ticket.</td><td></td></tr><tr><td><strong>Object Functions</strong></td><td>Displays all object functions available for the current object.</td><td></td></tr><tr><td><strong>Type Scripts</strong></td><td>Displays the available type scripts for the current object.</td><td></td></tr><tr><td><strong>Plugins</strong></td><td>Displays the plugin functions for the current object.</td><td></td></tr></tbody></table>

The tabs at the top of the attribute area provide various ways to order the attributes.

<table><thead><tr><th>Function</th><th>What It Does</th><th data-hidden></th></tr></thead><tbody><tr><td><strong>Attributes</strong></td><td>Orders the attribute in alphabetical order.</td><td></td></tr><tr><td><strong>by <code>Objecttype</code></strong></td><td>Orders the attribute by type hierarchy.</td><td></td></tr><tr><td><strong>by Category</strong></td><td>(Classical dump) Orders the attribute by category.</td><td></td></tr></tbody></table>

The **connection area** contains more links to other objects, depending on the object type. If this connection is using another object, such as a `dm_relation` object, the link to this object is also provided in the **Via** column.

Predefined connections include, among others:&#x20;

* Relations
* Subscriptions
* Ownerships
* Memberships
* Virtual parents or children
* Lifecycles
* Workflows
* Folder links

The listed connections are usually limited to 50 for performance reasons. If all are needed, the context menu offers a function to execute the underlying query in the DQL window.

**Configuration**

The Object Navigator configuration is stored in the file *dqManObjectNavigator.xml* in *the /config* subdirectory of the dqMan home directory (***c:\program files\dqMan***).

The configuration is done in different sections within the file, as follows:&#x20;

* Section `<identifiers>`

Identifiers are used to uniquely identify objects by the value of an attribute (for example, an `acl_name` identifies a `dm_acl` object) and are used in the DQL result list or the Object Navigator itself.

The attributes can be either single or repeating. Identifiers consist of an attribute name (`columnname="acl_name"`) and a qualification (qualification="dm\_acl where object\_name='{\*}'”). The value of the attribute is represented by {\*}.

`<identifier columnname="acl_name"`\
`qualification="dm_acl where object_name='{*}'" />`

`<identifier columnname="a_content_type"`\
`qualification="dm_format where name='{*}'" />`

`<identifier columnname="content_type"`\
`qualification="dm_format where name='{*}'" />`

`<identifier columnname="r_accessor_name"`\
`qualification="dm_group where group_name='{*}' union select r_object_id from dm_user where user_name='{*}' and r_is_group=0" />`

* Section `<copy_attributes>`

Copy attributes fill the submenu of the *Copy Value of* function from the Attributes area. It is a simple list of all possible values. The submenu is filled with all attribute names that are valid for the currently loaded object.

`<copy_attributes>`\
&#x20; `<attribute name="r_object_id" />`\
&#x20; `<attribute name="object_name" />`\
&#x20; `<attribute name="group_name" />`\
&#x20; `<attribute name="user_name" />`\
`</copy_attributes>`

* Section `<translations>`

Translations are used to make cryptic attribute values more readable. (e.g. Boolean values can be translated to true or false). To take effect, translations have to be assigned to attribute values in the objecttypes section.

\<translation name="user:user\_state" bitwise="F">\
&#x20; \<value source="0">Active\</value>\
&#x20; \<value source="1">Inactive\</value>\
\</translation>

\<translation name="boolean" bitwise="F">\
&#x20; \<value source="T">True\</value>\
&#x20; \<value source="F">False\</value>\
\</translation>

* Section `<objecttypes>`

The objecttype section assigns translations to the attributes of an object type and defines queries for connections to other objects. Object types can inherit definitions from other object types.

The type `dm_cabinet` inherits all settings (translations and connections) from `dm_folder`. Additionally, the attribute `is_private` is assigned the translation named boolean:

`<objecttype name="dm_cabinet" extends="dm_folder">`\
&#x20; `<attributes>`\
&#x20;   `<attribute name="is_private" translation="boolean" />`\
&#x20; `</attributes>`\
`</objecttype>`

Connections are defined as a DQL query, whereas defined labels are used to assign the result to the **Object Navigator** columns.

`<relation name="packages" label="Workflow Packages" limit_to="50">`\
&#x20; `select`\
&#x20;   `r_object_id as relation_id,`\
&#x20;   `'dmi_package' as relation_label,`\
&#x20;   `r_component_id as target_id,`\
&#x20;   `r_component_name as target_label`\
&#x20; `from dmi_package`\
&#x20; `where r_workflow_id = '{r_object_id}'`\
&#x20; `order by 4`\
`</relation>`&#x20;

The number of results of a query can be limited by setting the `limit_to` value for the connection. This is useful to limit the loading time of an object.

Attributes in curved brackets reference the currently loaded object in the navigator.

The resulting values are displayed in the Object Navigator: `target_label` in the column To/From and `relation_label` in *via*. If the label is omitted, the `target_id` or `relation_id` will be displayed instead. If no relation value is queried, the column *via* remains empty.

This chapter describes only the basic principle of the Object Navigator configuration. There are many more examples to be found in the *dqManObjectNavigator.xml.*
