2.2.3. Step 3: System Visualization
Admin Console makes it easy to visualize not only the elements found during the discovery process, but also the underlying DDS architecture of the system. In this step, we will navigate through the different system views that display how the system is organized:
System View
Domain View
Topic View
Process View
2.2.3.1. How Entities are Represented
First it’s important to understand the various elements you will see in the graphical views. Each node represents an entity in the system.
For example:
![Example graph view](../../_images/tut3_exampleView.png)
We will visit the graphical nodes that are common to all the views. The graph is composed of different nodes and elements that provide all the interaction and navigation mechanisms required to understand the underlying DDS system.
Every node in the System View represents an Entity in the DDS system. The nodes on the sides of the graph represents Hosts, Processes, DomainParticipants, Publishers, Subscribers, DataWriters and DataReaders. The elements in the center are the connection nodes; they represent Domains (in the System View) or Topics (in the other views).
Each node is represented by a specific color, an icon, and a label. The icon indicates what kind of Entity is represented by the node. The label allows you to differentiate the Entities from each other. The following table shows the different kinds of entities you will see:
Icon |
Description |
---|---|
Host |
|
Process |
|
DomainParticipant |
|
Publisher |
|
Subscriber |
|
DataWriter |
|
DataReader |
|
Connection node, which represents a Domain or a Topic depending on the view |
2.2.3.2. System View
The System View is displayed the first time you open Admin Console, or when you select the System in the DDS Logical View. For example, the System View for the scenario prepared in Step 1: System Setup should look similar to this:
![System view scenario](../../_images/tut3_SystemView.png)
This view is a high-level representation of your DDS system. It shows Domains as connection nodes in the center, with Hosts and Process nodes on the sides.
Each edge that connects a Process with a Domain connection node represents a DomainParticipant created by that Process. For example, if a Process has 2 edges, that means it created 2 DomainParticipants. Each edge has a label that shows how many DataWriters and DataReaders were created by that DomainParticipant.
In the prepared scenario, Admin Console should be connected to Domains 0 and 1. These are the Domains on which Admin Console discovered processes communicating through DDS.
Connecting with those two Domain nodes, we should be able to see one host containing all the different applications. Those applications should be:
Shapes Demo connecting with Domain 0. This instance of Shapes Demo should have three DataWriters and no DataReaders.
Shapes Demo connecting with Domain 1. This instance of Shapes Demo should have no DataWriters and three DataReaders.
One process for the Direct Usage Example, connecting with Domain 0.
One Routing Service Process, connected both with Domain 0 and Domain 1. This instance of Routing Service should have three connections with Domain 0 and only one connection with Domain 1. This means that it has three DomainParticipants in Domain 0 and only one DomainParticipant in Domain 1.
One Recording Service Process, with three DomainParticipants connected with Domain 0.
Now open a new Shapes Demo instance, connected to Domain 1.
The System view will update and show, in your Host node, the newly discovered Process, with its process ID, and an edge between the Process node and the “Domain 1” connection node. There is no label on the edge because there are no DataReaders or DataWriters.
Using the new Shapes Demo instance you just created, create a new Publisher for Squares. After creating it, text should appear in the edge that connects the Shapes Demo application with Domain 1 and the “DW” count should be 1. If you create more Publishers and Subscribers for any of the available shapes, when Admin Console discovers the new Square topic in Domain 0, the edge between the Process and the “Domain 0” connection node will be updated.
For example, in the following image, a Shapes Demo application was created with two DataWriters and one DataReader.
![System view tutorial step 1](../../_images/tut3_systemViewStep1.png)
Now close the last created Shapes Demo application. When Admin Console discovers that the application has been closed, the Process node will be removed from the graph.
Notice the updated metrics in the Entity Info tab.
Now let’s see how to interact with the graph. You should have two Shapes Demos: one publishing to Domain 0 and one subscribing to Domain 1. Both of them use the same Host. Additionally, the Routing Service, Recorder and Direct Usage Example should be in that host too.
From this view, you can update the match analysis for any of the nodes. There are two ways to choose a node: you can hover over it or you can click on it. These actions cause different behavior. First we’ll just hover over a node to highlight it and see what happens. Later we will see what happens differently when you click on a node to select it.
Place your mouse on top of the Shapes Demo connected to Domain 0. Leave the mouse there for at least half a second. That is, just hover over the Process node - don’t click on it.
This causes the match analysis for that specific process to be updated.
The node for which the match analysis is performed now has a shadow.
The other nodes will be updated.
The other Shape Demo application node connected to Domain 1 should be updated, indicating that the process is not relevant for the Match Analysis with the highlighted node.
The Domain 1 node should change its style too, indicating that the process is not connected with Domain 1.
Now instead of hovering over that Process node, let’s select it by clicking on it. This will make that node become selected. Then if you move the mouse to other nodes in the graph, this will not update the match analysis status.
When a node is highlighted or selected, two things happen in the graphical views. The graph is updated to perform the match analysis, and the Entity Info tab is updated to show relevant information about the entity represented by that node. You can see an example of this in the following image.
![System view interaction](../../_images/tut3_systemViewInteraction1.png)
To remove the current selection, simply click on a blank space in the graph, or click on the same node that was selected. When no node in the graph is selected or highlighted, the Entity Info tab will show information about the DDS entity that was used to generate the graph (in this case, the System).
Next we’ll explore the Domain View.
Double-click on the Domain 0 connection node in the System View. This will open the Domain View for Domain 0.
Tip
Another way to open a Domain View is to click on a Domain in the DDS Logical View.
2.2.3.3. Domain View
In the Domain View, you should see three Topics, one for each created shape. The Host, Processes and DomainParticipant nodes will be on the left side of the graph. The Entity Info tab shows information about Domain 0 (since no other node is highlighted or selected). Your Domain View should look similar to this:
![Domain view tutorial image](../../_images/tut3_DomainView.png)
In this view, we can interact with the elements of the graph in the same manner we used in the System View. We can highlight nodes, select nodes, and navigate to other views by double-clicking on the nodes.
Create a new Shapes Demo application connected with Domain 0. This will create a new Shapes Demo Process. This node will not be connected with any topic, but the DomainParticipant is visible, indicating that the there is a DomainParticipant connected with Domain 0, which did not create any Publisher or Subscriber.
Using the last created Shapes Demo, subscribe to the topic Circle. This will create a new connection node for the Topic Circle and the new Process in our Host.
One of the Shapes Demo Process nodes will be connected to the three topics connection nodes, and the new Process that we created will only be connected to Circle.
The Domain View should look similar to this:
![Domain view interaction image](../../_images/tut3_domainViewInteraction1.png)
Now let’s check the interaction with the Connection nodes. If you hover over the Circle node for more than half a second, you will see that all the DDS Entities in the graph are updated based on their connection with that topic.
Let’s see how to filter the data in our graph.
On the right side panel, select the Data Filtering tab.
Here, you can see that the three topics in the graph also appear in the list of topics.
Uncheck the topics Square and Triangle.
This will update the graph to show only the entities that are connected with those topics. The graph should show only one Connection node.
Note that the DomainParticipants that are not connected with any topic are always visible in this view, to make sure that you are aware of those DomainParticipants.
![Domain view interaction part 2](../../_images/tut3_domainViewInteraction2.png)
When the connection nodes are filtered out from the graph, you will
see the icon in the top right corner of the view.
2.2.3.4. Topic View
Next we’ll explore the Topic View.
Open the Topic view for Squares by double-clicking on the Square connection node.
Tip
Another way to open a Topic View is to double-click a Topic in the DDS Logical View.
![Topic view image](../../_images/tut3_TopicView.png)
The Topic View will show only the selected Topic as a connection node. Around the Topic node are all the nodes that represent DDS Entities with at least one DataWriter or DataReader connected to that Topic.
In this view, the match analysis will help you understand which DataWriters and DataReaders are matching. In the current status, if all the DataWriters and DataReaders for Square were created using the default QoS, all of them would be in matching status, as shown in the previous image.
In this view, you can see the status for each DataWriter or DataReader. Possible statuses are:
Matching status: Green background. This indicates that a specific DataWriter or DataReader is matching with all the opposing DataReaders or DataWriters.
Unmatching status: Red background. This indicates that a specific DataWriter and DataReader does not have a match.
Partially matching status: Orange backgound. This indicates that the DataWriter or DataReader is matching with at least one endpoint and not matching with another one.
Not relevant for match analysis: White background. The DataWriter or DataReader is not related to the entity that was selected to perform the match analysis.
Selected for match analysis: This indicates that the DataWriter or DataReader has been selected to perform the match analysis. The rest of the nodes will be updated according to the selection.
Now let’s cause a mismatch between some DataWriters and DataReaders.
In any of your Shapes Demo applications connected to Domain 0, create a subscription for Squares with Durability set to TRANSIENT LOCAL. In this tutorial we created the subscription in the last Shapes Demo application that we created, which only subscribed to circle.
The new DataReader will appear in the graph, with an unmatching status. This new DataReader also causes our DataWriter’s status to change from matching to partially matching.
![Topic view unmatched interaction](../../_images/tut3_TopicViewInteraction1.png)
Select or highlight one specific DataWriter or DataReader node in the graph.
Now you can see its matching status with all the other DataReaders and DataWriters in the graph. For example, in the following image, you can see that after selecting the mismatching DataReader, one partially matched DataWriter changes to not-matching. You can also see the Processes, DomainParticipant, Publisher and DataWriter that are not relevant for the current match analysis.
![Topic view unmatched interaction 2](../../_images/tut3_TopicViewInteraction2.png)
In the Topic View, there is no Data Filtering tab on the side panel. This is because in this graph, we will always have one, and only one connection node, which represents the selected Topic.
2.2.3.5. Process View
The last graphical view to examine is the Process View, which shows information about one specific Process.
Select a Process in the Physical View or double-click on a Process node in any of the previous views.
The main objective of the Process View is to provide all the relevant information related to a specific Process and all the entities that can potentially communicate with that Process.
![Process view image](../../_images/tut3_ProcessView.png)
The Process view organizes the nodes in a different way than the other graphical views. On the left side of the graph, you will always have only the Process node and all the entities that are in the same hierarchy as this process. The connection nodes are those Topics with which the Process is connected, regardless of the Domain where that Topic is registered. The right side of the graph will show all the Entities that are suitable to communicate with any DataWriter or DataReader created by the Process on the left.
Try scrolling up and down in the graph. Notice that the Process node moves, so it is always visible.
Another unique thing about the Process view is that it is the only graphical view in which the same Entity may appear twice in the same graph. You may see the same Host node twice. First, you will see it on the left because it’s the host for the selected Process. If that Process is communicating with another Process on the same host, you will see that the host again on the right. This is true for our example, since all our applications are communicating with each other on the same host.
Something else to notice about the Process View is that it shows all the information that we have. That might include some nodes that are not relevant to the selected Process. In our example, there are some DomainParticipants, Publishers and Subscribers that are not connected to any node in the graph.
To hide these non-relevant nodes, go to the Data filtering tab and use the checkbox to Hide unconnected endpoints. This will update the graph and hide all the non-relevant DDS Entities that are shown by default. In our example, if you hide the unconnected endpoints, the graph will look similar to this image:
![Process view interaction](../../_images/tut3_ProcessViewInteraction1.png)
Before continuing with the tutorial, please close the last Shapes Demo application connected to Domain 0 that is not publishing all the Shapes, since it will not be used in the rest of the tutorial.
Relevant reference topics: