Skip to main content

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:

LabelKindKeyDescription
ConnectionsnumberCONNECTIONSSum of input and output systems connected to the system.
ViolationsnumberRED_FLAGSNumber of governance violations detected on the system.
Output PortsnumberCOMPONENTSNumber of consumable components exposed by the system.
ReviewsnumberREVIEWSNumber of reviews associated with the system.
Publication DatedatePUBLISHED_ATDate 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:

  1. Identify the field in the system descriptor you want to use as the data source.
  2. 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.
  3. Define a unique key for the layer (uppercase recommended).
  4. 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

PropertyDescription
labelThe name shown in the UI for this grouping option.
pathThe field extracted from the system descriptor used for grouping. Supports dot notation, arrays not supported.
warning

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.

warning

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:

  1. A "Group By" button appears in the Visual Discovery Graph interface.
  2. Clicking the button opens a drawer with available grouping options.
  3. Users can select one or more grouping dimensions from the drawer.
  4. Systems in the graph are visually clustered based on the selected grouping criteria.
  5. 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:

  1. Identify the field in the system descriptor you want to use for grouping.
  2. Choose a descriptive label that will be shown to users in the grouping drawer.
  3. Set the path to the correct metadata field using dot notation.
  4. 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'