Configuration
Breadcrumbs

Metamodel - Entities and Relationships

The metamodel configuration in Anjana Data allows adapting and extending the structure of entities and relationships beyond the native metamodel. Through the Configuration Panel, the administrator can define new entity subtypes (for example, BUSINESS TERM, AI SYSTEM, AI MODEL) and relationship subtypes (for example, TRAINED_WITH, GOVERNS, USED_BY) that represent the reality of the organization.

The following image shows an example of an extended metamodel, in which native entities and relationships are combined with customized ones, reflecting the complexity of data assets and their links within the organization:


image-20250827-111218.png
Example metamodel including native entities and relationships from the Anjana Data Platform

These entity and relationship subtypes form the basis for:

  • Consistently documenting the different data assets.

  • Establishing dependency, hierarchy and governance relationships between them.

  • Integrating governance processes with configurable workflows for creation, modification, transfer, deprecation and validation of such assets.

Table Object Sub-types in the Configuration Panel (Administrator view)

The Object Sub-types table is the central point where the entities and relationships of the metamodel are configured. Each registered object subtype is characterized by the following fields:

image-20250901-144141.png
Object Sub-Types table for adding entities and relationships

Structure of the Object Sub-types table

Each entity or relationship to be governed is characterized by the following fields:

  • id: unique identifier of the object subtype.

    • It is assigned automatically from the Configuration Panel, based on database sequences.

  • name: name of the object subtype.

    • This value must be unique within the module and cannot be repeated among existing entities or relationships.

Important:

  • The name attribute of the object subtype:

    • Must not contain :, #, ( or ).

    • Must not contain spaces so as not to interfere with the internal identifiers of Anjana Data.

    • Must be written in uppercase.

  • The name cannot match the names of the native relationships (STRUCTURE, DSA_CONTENT…) except for ADHERENCE, which must be declared to enable the Marketplace.

  • module: module to which the object belongs.

    • "BG"Business Glossary

    • "DC"Data Catalog

Important:

Native entities (DATASET, DATASET_FIELD, SOLUTION, PROCESS, INSTANCE, DSA and ADHERENCE) must have DC as their module value

  • typeObject: indicates whether the subtype corresponds to an entity or a relationship.

    • "ENTITY" → Metamodel entity (example: DATASET, REPORT, DOCUMENT).

    • "RELATIONSHIP" → Relationship between entities (example: TRAINED_WITH, USED_BY, GOVERNS).

Important:

  • Native entities (DATASET, DATASET_FIELD, SOLUTION, PROCESS, INSTANCE and DSA) must have ENTITY as their typeObject value

  • The native relationship ADHERENCE must have RELATIONSHIP as its typeObject value

  • activate_workflow: name of the identifier of the activation workflow for non-native entities or relationships.

  • create_workflow: name of the identifier of the creation workflow.

  • deactivate_workflow: name of the identifier of the deactivation workflow for non-native entities or relationships.

  • modify_workflow: name of the identifier of the editing or modification workflow.

  • transfer_workflow: name of the identifier of the workflow that manages the transfer (change of organizational unit) of entities.

  • deprecate_workflow: name of the identifier of the deprecation workflow for native Data Catalog entities.

  • wf_role_dependent: indicator that defines whether differentiated workflows by role exist for the same action.

    • When this flag is enabled, for each of the actions configured in the previous fields (create_workflow, modify_workflow, transfer_workflow, deprecate_workflow, etc.) it is necessary to define a role-specific workflow that has permissions to trigger that action.

    • The identifier of each role-specific workflow is constructed from the base workflow identifier, concatenated with the role name in the Roles table using the format:

      <id_workflow_base>_-<role_name>
      
    • Example: if the base creation workflow identifier is CREATE_DATASET and the role name is DataSteward, the identifier will be CREATE_DATASET_-DataSteward.

  • parental: applies only in case of a relationship.

    • If the value is true, the relationship is considered a parent-child relationship and will be represented vertically (top-bottom) in the lineage.

    • If false, the relationship is considered an input-output relationship, represented horizontally (left-right).

Important note: Do not confuse the workflow identifier (value indicated in the Id field of the General section of the BPM editor) with the workflow name (value indicated in the Name field).

image-20250901-145822.png
BPM Editor of the Configuration Panel for workflow editing

Important notes:

  • To enable Marketplace capabilities, the native ADHERENCE relationship must be included in the Object Subtypes table.

  • Object subtype names do not support translation (internationalization)

Adding an entity to the Object Sub-types table

Adding a new entity to the metamodel involves registering a new record in the Object Sub-types table with type ENTITY.

image-20250902-150517.png
Example of adding a new entity in the Object Sub-Types wizard

To add a new entity:

  1. Click the New button in the top right corner. This will open a wizard with the fields defined in the Structure of the Object Sub-types table section.

  2. Fill in the corresponding fields:

    • name: name of the entity (example: AI_MODEL).

    • module: module in which it will be used (example: DC).

    • object_type: select ENTITY.

    • Define the identifier names of the workflows associated with the actions:

      • create_workflow: Identifier of the creation workflow (example: WF_AI).

      • modify_workflow: Identifier of the modification workflow (example: WF_AI).

      • activate_workflow: Identifier of the activation workflow, does not apply to native entities (example: WF_AI).

      • activate_workflow: Identifier of the activation workflow, does not apply to native entities (example: WF_AI).

      • deactivate_workflow: Identifier of the deactivation workflow, does not apply to native entities (example: WF_AI).

      • transfer_workflow: Identifier of the organizational unit change workflow (example: WF_AI).

      • deprecate_workflow: Identifier of the deprecation workflow, does not apply to non-native entities (example: left empty as it is a non-native entity)

    • wf_role_dependent: check only if you want to configure different workflows for each of the above workflows.

  3. Click Save to save the entity or Cancel to discard it.

Adding a relationship to the Object Sub-types table

Adding a new relationship to the metamodel involves registering a new record in the Object Sub-types table with type RELATIONSHIP.

image-20250902-154143.png
Example of adding a new relationship in the Object Sub-types wizard

To add a new relationship:

  1. Click the New button in the top right corner. This will open a wizard with the fields defined in the Structure of the Object Sub-types table section.

  2. Fill in the corresponding fields:

    • name: name of the relationship (example: COMPOSED_OF).

    • module: module in which it will be used (example: DC).

    • object_type: select RELATIONSHIP.

    • Define the identifier names of the workflows associated with the actions:

      • create_workflow: Identifier of the creation workflow (example: WF_AI).

      • modify_workflow: Identifier of the modification workflow (example: WF_AI).

      • activate_workflow: Identifier of the activation workflow, does not apply to native relationships (example: WF_AI).

      • deactivate_workflow: Identifier of the deactivation workflow, does not apply to native relationships (example: WF_AI).

      • transfer_workflow: Identifier of the organizational unit change workflow (example: WF_AI).

      • deprecate_workflow: Identifier of the deprecation workflow, does not apply to non-native relationships (left empty in that case).

    • wfRoleDependent: check only if you want to configure different workflows for each of the above workflows based on the user's role (left unchecked in the example).

    • parental: check if the relationship should be represented in the lineage as a parent-child relationship (parent-child, vertical). Leave unchecked if the relationship is of input-output type (horizontal). (Left unchecked in the example)

  3. Click Save to save the relationship or Cancel to discard it.

Modifying an entity or relationship in the Object Sub-types table

Modifying an object subtype (whether an entity or a relationship) is managed directly from the Object Sub-types table in the Configuration Panel.

When editing a subtype, the following considerations are important:

  • Fields that can be modified:

    • The workflow identifiers (create_workflow, modify_workflow, transfer_workflow, deprecate_workflow, etc.).

    • The parental and wf_role_dependent flags, which can be enabled or disabled at any time depending on lineage display needs or differentiated workflow management by role.

Note: any change in these identifiers implies that the corresponding workflows in the BPM must be updated as well, to maintain consistency.

  • Fields that cannot be modified once objects governed in the Data Portal exist associated with that subtype:

    • typeObject (ENTITY or RELATIONSHIP).

    • name of the subtype.

Procedure if changes to typeObject or name are needed:

  1. It will be necessary to first perform a Clear data from the Actions > Clear data menu in the Configuration Panel, to delete the objects already created in the portal.

  2. Once the deletion is done, the information must be reindexed from the Actions > Force indexing menu to ensure data consistency.

In summary:

  • Workflow identifiers and flags can be adjusted at any time.

  • Changing name or typeObject is not possible if governed objects exist in the Data Portal; it requires clearing data (Actions > Clear data) and reindexing (Actions > Force indexing).

Configuring object subtypes via direct database access (Developer view)

The database (DB) table that contains the parameters for the entities and relationships of the metamodel (anjana.object_subtype) has this structure:

Column

Data type

Constraints / Notes

id_object_subtype

int4 (INTEGER)

PRIMARY KEY. Unique identifier of the object subtype. Managed via sequences.

activate_workflow

varchar(255)

Optional. Activation workflow identifier (does not apply to native entities/relationships).

create_workflow

varchar(255)

Optional. Creation workflow identifier.

deactivate_workflow

varchar(255)

Optional. Deactivation workflow identifier (does not apply to native entities/relationships).

deprecate_workflow

varchar(255)

Optional. Deprecation workflow identifier (applies only to native entities).

modify_workflow

varchar(255)

Optional. Modification workflow identifier.

module

varchar(255)

NOT NULL. Module in which it is used: "BG" (Business Glossary) or "DC" (Data Catalog).

name

varchar(255)

NOT NULL. Unique name of the object subtype. UNIQUE constraint (object_subtype_name_key).

object_type

varchar(255)

NOT NULL. Object type: "ENTITY" or "RELATIONSHIP".

transfer_workflow

varchar(255)

Optional. Transfer workflow identifier (change of organizational unit).

wf_role_dependent

bool

Optional. Indicates whether workflows depend on the role of the user triggering the action.

is_parental

bool

Optional. Default false. Indicates whether a relationship is of parental type (parent-child).

Below is a sample script for configuring the AI_MODEL entity:

SQL
INSERT INTO anjana.object_subtype
(id_object_subtype, activate_workflow, create_workflow, deactivate_workflow, deprecate_workflow, modify_workflow, "module", "name", object_type, transfer_workflow, wf_role_dependent, is_parental)
VALUES(32, 'WF_AI', 'WF_AI', 'WF_AI', 'WF_AI', 'WF_AI', 'DC', 'AI_MODEL', 'ENTITY', 'WF_AI', false, false);

Below is a sample script for configuring the COMPOSED_OF relationship:

SQL
INSERT INTO anjana.object_subtype
(id_object_subtype, module, name, object_type, create_workflow, modify_workflow, activate_workflow, deactivate_workflow, wf_role_dependent, is_parental)
VALUES
(102, 'DC', 'COMPOSED_OF', 'RELATIONSHIP', 'WF_AI', 'WF_AI', 'WF_AI', 'WF_AI', false, false);

Important:

  • Once the insert is executed, run the sequence update for the table. (From the Configuration Panel under Actions > Reset DQ sequences the sequences of all tables, including this one, can be updated).

  • The full weight of the configuration logic falls on the developer who executes the SQL queries directly on the tables. It is recommended to carefully review the Table Structure section.