Structure of CLOE¶
Building Blocks of CLOE¶
CLOE is structured around three types of building blocks, each serving distinct purposes to facilitate development and integration across projects. These building blocks ensure modularity, reusability, and efficiency in our development processes.
Type 1: Foundational Building Blocks¶
Type 1 building blocks are technical components designed to be used by other packages rather than directly in projects. These blocks provide fundamental functionalities that serve as stepping stones for developing new packages. They do not directly impact a project but are crucial for building other tools and applications.
Examples:
- Database Connectors: Facilitate connections to various databases, handling authentication and communication protocols.
- Git Clients: Provide basic functionalities to interact with local Git repositories, such as retrieving files from specific tagged commits.
Key Benefits:
- Centralized Updates: Ensures that security updates or new authentication methods require changes in only one package. Other dependent packages merely need to update their dependencies.
- Consistency: Promotes consistent usage of functionalities across different tools.
Usage Diagram:
graph TD
    A[Project] --> B[Package 1]
    A --> C[Package 2]
    B --> D[Type 1 Block]
    C --> DType 2: Intermediary Building Blocks¶
Type 2 building blocks can be used directly within projects or by other packages. These blocks offer functionalities that are more specific than Type 1 but still versatile enough to be utilized in multiple contexts.
Examples:
- Database Crawlers: Used to crawl databases and store metadata either on disk or in a Git repository. They can be utilized directly by projects or as part of other packages.
Key Benefits:
- Versatility: Can be employed directly in project contexts or as part of other building blocks.
- Extended Functionality: Provides specific capabilities that enhance the functionalities of projects and other packages.
Usage Diagram:
graph TD
    A[Project] --> E[Type 2 Block]
    B[Package 1] --> E
    E --> F[Database]Type 3: Project-Specific Building Blocks¶
Type 3 building blocks are intended to be used directly by projects. They solve specific problems or automate tasks within a project, making them highly specialized.
Examples:
- Access Control: Manages access permissions within a project.
- Data Masking: Automates data masking in a data warehouse based on configurations provided by the project team.
Key Benefits:
- Specialization: Tailored to address specific project needs.
- Automation: Streamlines processes within projects, reducing manual effort.
Usage Diagram:
graph TD
    A[Project] --> G[Type 3 Block]
    G --> H[Access Control]
    G --> I[Data Masking]Common Metadata Format¶
To ensure seamless integration and communication between different building blocks, we use a common metadata format defined using JSON. This standardized format simplifies the exchange of information and ensures compatibility across various blocks.
Key Benefits:
- Interoperability: Facilitates easy data exchange between different building blocks.
- Consistency: Ensures all blocks adhere to a central definition of metadata, promoting uniformity.
Metadata Diagram:
graph LR
    C[Type 2 Block] <--> B[Common Metadata JSON]
    D[Type 3 Block] <--> B
    A[Type 1 Block] --> C
    A --> D
    B --> E[Project]This chapter provides an overview of the three types of building blocks in CLOE, highlighting their roles and interactions. The diagrams illustrate how these blocks work together to form a cohesive and efficient toolbox, enabling our technical consultants to leverage these resources effectively.