Visual Discovery Graph overview
The Visual Discovery Graph is a powerful feature in the Witboost Marketplace that allows users to explore relationships between systems in a visual and interactive way.
It provides an intuitive representation of key metadata dimensions, helping users to discover connections across the assets.
Built-in heatmap layers
By default, the Visual Discovery Graph includes several predefined heatmap layers that provide insights into the structure and governance of systems. These layers are available without additional configuration:
Label | Kind | Key | Description |
---|---|---|---|
Connections | number | CONNECTIONS | Sum of input and output systems connected to the system. |
Violations | number | RED_FLAGS | Number of governance violations detected on the system. |
Output Ports | number | COMPONENTS | Number of consumable components exposed by the system. |
Reviews | number | REVIEWS | Number of reviews associated with the system. |
Publication Date | date | PUBLISHED_AT | Date the system was published. |
These built-in layers are computed dynamically based on internal system metadata and can be used alongside custom layers defined via configuration.
Configure custom heatmap layers
In addition to the built-in layers, organizations can configure custom heatmaps to reflect business-specific dimensions of the data catalog.
Custom layers are defined under the ui.appConfig.mesh.marketplace.ui.visualDiscoveryGraph.layers
property as an array of objects, where each object describes a single layer.
Here’s an example of how to configure them:
# inside your values.yaml
ui:
appConfig:
# ... other configurations ...
mesh:
marketplace:
ui:
visualDiscoveryGraph:
layers:
- label: 'Kind'
description: 'Reference to the system type this system is instance of.'
kind: list
key: 'KIND'
path: 'kind'
- label: 'Maturity'
description: 'Indicates the system’s level of maturity within its lifecycle or strategic importance.'
kind: list
key: 'MATURITY'
path: 'maturity'
- label: 'Status'
description: 'Reflects the current lifecycle status of the system.'
kind: list
key: 'STATUS'
path: 'status'
Layer properties
Each custom layer supports the following properties:
label
: The name shown in the UI for this layer.description
: A description suggesting what heatmap represents.kind
: The type of visualization. Allowed values are:list
: for categorical values (e.g., kind, status, maturity)number
: for numeric values (e.g., count, size)date
: for temporal values (e.g., publication date)
key
: A unique identifier for the layer. Should be written in uppercase.path
: The field extracted from the system descriptor. For nested fields, you can use dot notation to access them, but arrays are not supported.
How to add a new custom layer
To add a new layer:
- Identify the field in the system descriptor you want to use as the data source.
- Choose the appropriate
kind
for how the value should be visualized:- Use
list
for distinct string values. - Use
number
for numeric data. - Use
date
for timestamps.
- Use
- Define a unique
key
for the layer (uppercase recommended). - Set the
path
to the correct metadata field using dot notation.
Configure custom grouping options
The Visual Discovery Graph supports custom grouping functionality that allows users to organize and cluster systems based on different metadata dimensions. When grouping options are configured, a "Group By" button appears in the graph interface, opening a drawer where users can select how to group the systems.
Custom grouping options are defined under the ui.appConfig.mesh.marketplace.ui.visualDiscoveryGraph.groups
property as an array of objects, where each object describes a single grouping dimension.
Here's an example of how to configure them:
# inside your values.yaml
ui:
appConfig:
# ... other configurations ...
mesh:
marketplace:
ui:
visualDiscoveryGraph:
groups:
- label: 'Owner'
path: 'spec.owner'
- label: 'System Type'
path: 'kind'
- label: 'Lifecycle Status'
path: 'status'
Group properties
Property | Description |
---|---|
label | The name shown in the UI for this grouping option. |
path | The field extracted from the system descriptor used for grouping. Supports dot notation, arrays not supported. |
The domain
grouping is reserved and will always be included as one of the available grouping options. This means that users will always have the ability to group systems by their domain, regardless of the custom grouping options configured.
The field specified in the path
property must resolve to a string value. Grouping functionality does not support object or array values. Ensure that the metadata field used for grouping contains meaningful and distinct string values to avoid unexpected behavior.
How grouping works
When grouping options are configured:
- A "Group By" button appears in the Visual Discovery Graph interface.
- Clicking the button opens a drawer with available grouping options.
- Users can select one or more grouping dimensions from the drawer.
- Systems in the graph are visually clustered based on the selected grouping criteria.
- The grouping order can be adjusted to create hierarchical organization of systems.
How to add a new custom grouping option
To add a new grouping option:
- Identify the field in the system descriptor you want to use for grouping.
- Choose a descriptive
label
that will be shown to users in the grouping drawer. - Set the
path
to the correct metadata field using dot notation. - Ensure the field contains categorical values that make sense for grouping systems.
Example configuration for grouping options
Here’s an example of how to configure custom grouping options:
# inside your values.yaml
ui:
appConfig:
# ... other configurations ...
mesh:
marketplace:
ui:
visualDiscoveryGraph:
groups:
- label: 'Maturity'
path: 'maturity'
- label: 'Lifecycle Status'
path: 'status'