Blueprint Structure and Examples

Blueprint structure

A blueprint must follow a specific directory structure:

repository/
|-- <BlueprintRootDirectory>/
|---- (blueprint content) ...
|-- (other content) ...
|-- params.json
  • Blueprint Root Directory.

    This is the root-level directory containing the actual template. When a blueprint is instantiated, only the contents of this directory (and its children) will be included in the target repository.

  • Other Content. Any files or directories outside <BlueprintRootDirectory> will be ignored and not processed as part of the template.

  • params.json.

    A JSON file that defines the parameters used for templating. It follows this structure:

    [
      {
        "name": "parameterName",
        "description": "Parameter description",
        "defaultValue": "Parameter default value"
      }
    ]
    

    Every parameter in the blueprint must follow the naming convention: ${parameterName}.

    Restrictions: parameter names cannot contain special characters such as [, . - _ ….]

Example

Let’s consider the following params.json file:

[
  {
    "name": "dirName"
  },
  {
    "name": "fileName"
  },
  {
    "name": "fileContent"
  }
]

Given the following blueprint structure:

repository/
|-- blueprintDirectory/
|---- ${dirName}/
|------ ${fileName}.json

Where the content of ${fileName}.json is:

{
  "content": "${fileContent}"
}

If the values given to the parameter are:

  • dirName = renamedDirectory
  • fileName = renamedFile
  • fileContent = test

then the compiled blueprint will be:

<your_target_repository>/
|-- renamedDirectory/
|---- renamedFile.json

With renamedFile.json containing:

{
  "content": "test"
}

For more information refer to the ODM Platform website .

Blindata custom parameters

When using Blindata, the params.json file should contain at least the following parameters:

[
  {
    "name": "BD_domain",
    "description": "The domain within which the data product exists.",
    "defaultValue": ""
  },
  {
    "name": "BD_displayName",
    "description": "The name of the data product in human readable format.",
    "defaultValue": ""
  },
  {
    "name": "BD_name",
    "description": "The name of the data product.",
    "defaultValue": ""
  },
  {
    "name": "BD_fullyQualifiedName",
    "description": "Fully Qualified Name (FQN) that uniquely identifies the data product.",
    "defaultValue": ""
  },
  {
    "name": "BD_description",
    "description": "A brief description of the data product.",
    "defaultValue": ""
  },
  {
    "name": "BD_version",
    "description": "The version number of the data product.",
    "defaultValue": "1.0.0"
  }
]

This allows to integrate the parameters with the Blindata forms, when instantiating e new Data Product from a Blueprint.