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.
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"} . |
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
-
Set Type to TABLE: In the custom property definition form, select “TABLE” as the property type.
-
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”. -
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"}
]
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 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:
-
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
-
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