Custom Properties

Introduction

Custom properties in Blindata provide a way to personalize the Blindata model by allowing users to add their own specified properties. These properties offer a flexible and customizable approach to metadata management, enabling users to tailor the system to their specific needs and preferences. By defining custom properties, users can create a more relevant and efficient data environment that aligns with their unique workflows and requirements.

Every resource in Blindata can be enriched with these key-value properties, known as additional properties. These properties can hold various types of data, such as text, numbers, dates, and more, providing a robust mechanism to capture detailed and specific information about each resource. This enrichment allows for a more comprehensive and insightful representation of the data, making it easier to manage, analyze, and utilize.

Custom properties can also be grouped into sections, allowing for better organization and structure within the user interface. By grouping related properties together, users can create logical sections that make it easier to navigate and manage large sets of data. This grouping capability ensures that similar properties are displayed together, improving clarity and usability.

Once custom properties are defined, they can be used in various parts of Blindata:

  • User Interface: Custom properties appear in the user interface and can be used to provide additional information about resources.
  • Forms: Custom properties are included in forms, allowing users to input relevant data.
  • Filters: Custom properties can be used as filters to refine search results or data views. By utilizing custom properties, users can significantly enhance the functionality and personalization of the Blindata model to suit their specific needs.

Custom Properties Visualization

How To Define A Custom Property

Custom properties in Blindata can be defined and configured in the Settings section. This allows you to tailor the Blindata model to better fit your needs by adding custom properties to resources.

To define a custom property, provide the following details:

Field Description Example
Resource Type Specify the type of resource on which you want to apply the custom property. If you want to add a property to “Data Products” resources, select “DATA_PRODUCT”.
Group Provide a group name for the custom property. This helps to group related properties together. Use “Registration Information” for properties related to registration details.
Name Enter the technical name for this custom property. This name cannot be changed once set and is used internally. For a data product’s registration number, you might use “registrationDetails.registrationNumber”.
Order Specify the order of appearance for this custom property. This determines its position among other properties. Assign “1” to make it appear first, or “2” to appear second.
Label Provide the display name for the property. The Label is shown to users and can be changed as needed. Use “Registration Number” as the label for the “registrationDetails.registrationNumber” property.
Type Define the type of custom property, which determines the kind of data it will hold and how it will be represented. Choose “Enumeration” if it should hold a list of predefined values.
Domain Specify the domain or computation formula for this property, if applicable. For computed properties, this will be a formula using SpEL. For TABLE type, define the column structure as JSON. For an enumeration the list of predefined values will be ["value_1","value_2"]. For a computed property calculating a 1/0 flag if description is set, use a formula like resource.description != null ? 1 : 0. For TABLE type, define columns like {"columns": [{"name": "name", "label": "Name"}, {"name": "description", "label": "Description"}]}.
Rendering Rule Set a pattern matching rule to determine when the property should be displayed, based on other resource properties. Show the property only if “domain” is “finance”: {"domain":"finance"}.

Custom Properties Definition

By defining these attributes, you can effectively create and manage custom properties in Blindata, ensuring they meet your specific needs and are well-organized within your resources.

Types of Custom Properties

There are various types of custom properties available in Blindata:

Type Description
String Default type generally used for string
Integer Numeric property type for integer values.
Numeric Numeric property type for general numeric values.
Enumeration Allows users to define a set of predefined values that can be selected.
Autocomplete Provides an autocomplete feature that suggests values based on previously entered properties.
String List Allows users to create lists of string values.
Enumeration List Allows users to create lists of predefined values.
Autocomplete List Allows users to create lists with autocomplete features.
Computed Computed properties are defined using Spring Expression Language (SpEL) and operate locally on the resource. These properties do not require user input; instead, they are automatically calculated based on other fields within the resource.
Table Allows users to create structured table data with defined columns. This type enables the creation of complex, multi-column data structures that can be displayed as interactive tables in the user interface.

Table Type

The TABLE type enables the creation of structured, tabular data within Blindata resources.

TABLE type properties store data as JSON arrays of objects, where each object represents a row in the table. The structure is defined by the Domain field, which specifies the column configuration.

Creating a TABLE Property

  1. Set Type to TABLE: In the custom property definition form, select “TABLE” as the property type.

  2. Define Domain Structure: In the Domain field, specify the column structure using JSON format:

    {
      "columns": [
        {"name": "name", "label": "Name"},
        {"name": "description", "label": "Description"},
        {"name": "channel", "label": "Channel"},
        {"name": "address", "label": "Address"}
      ]
    }
    

    Note: If you don’t specify a Domain, the system will automatically use the keys from your JSON array as column names. For example, if your data is [{"name": "John", "age": 30}], the columns will be “name” and “age”.

  3. Column Configuration:

    • name: Technical identifier for the column (used internally)
    • label: Display name shown to users in the interface

Table Property Data Format

TABLE properties store data as JSON arrays. For example, a “Contact Point” property might contain:

[
  {"name": "Support", "description": "Technical support", "channel": "Email", "address": "support@company.com"},
  {"name": "Sales", "description": "Sales inquiries", "channel": "Phone", "address": "+1-555-0123"}
]

TABLE Property Rendering

Domain Configuration

The Domain field is crucial for TABLE type custom properties as it defines the structure and appearance of the table. This field accepts JSON configuration that specifies the columns, their properties, and how they should be displayed.

Domain Editor Modal

Domain Field Format

The Domain field must contain valid JSON with the following structure:

{
  "columns": [
    {
      "name": "column_identifier",
      "label": "Display Name"
    }
  ]
}

Column Properties

Each column in the columns array supports the following properties:

  • name (required): Technical identifier for the column used internally by the system. This should be a unique, lowercase string without spaces (e.g., “user_name”, “email_address”, “phone_number”).

  • label (required): Human-readable display name shown to users in the interface. This appears as the column header and can contain spaces and special characters (e.g., “User Name”, “Email Address”, “Phone Number”).

Domain Configuration Examples

Simple Contact List:

{
  "columns": [
    {"name": "name", "label": "Name"},
    {"name": "email", "label": "Email"},
    {"name": "phone", "label": "Phone"}
  ]
}

Detailed Configuration:

{
  "columns": [
    {"name": "contact_type", "label": "Contact Type"},
    {"name": "full_name", "label": "Full Name"},
    {"name": "email_address", "label": "Email Address"},
    {"name": "phone_number", "label": "Phone Number"},
    {"name": "department", "label": "Department"},
    {"name": "role", "label": "Role"}
  ]
}

Configuration Parameters:

{
  "columns": [
    {"name": "param_name", "label": "Parameter Name"},
    {"name": "param_value", "label": "Parameter Value"},
    {"name": "description", "label": "Description"},
    {"name": "required", "label": "Required"},
    {"name": "default_value", "label": "Default Value"}
  ]
}

Data Products - Contact Points

Blindata automatically provides certain TABLE properties for specific resource types:

All Data Products automatically include a “Contact Points” TABLE property with the following structure:

  • Name: Contact point identifier
  • Description: Description of the contact point
  • Channel: Communication channel (email, phone, etc.)
  • Address: Contact information

This property allows data product owners to maintain a list of contact information for stakeholders, support teams, and other relevant parties.

TABLE Property Editor

The TABLE property editor provides a user-friendly interface for managing table data:

TABLE Property Editor

  • Adding Rows

    • Click the “+” button to create new table entries
    • Fill in the required fields for each column
    • Save the entry to add it to the table TABLE Property Editor
  • Editing Rows

    • Click on any cell to edit its content
    • Click on “Save” button to save the new values
  • Deleting Rows

    • Use the delete button (🗑️) to remove unwanted entries