51 lines
2.5 KiB
Markdown
51 lines
2.5 KiB
Markdown
# Base Object and Actor Backend
|
||
|
||
This is Hero’s backend, designed around the concept of base objects and actors to enable modular, domain-specific operations.
|
||
|
||
## Base Object
|
||
|
||
Base objects are digital representations of real-world entities. Examples include projects, publications, books, stories (agile), and calendar events. These objects:
|
||
• Serve as the primary data units that actors operate on.
|
||
• Contain indexable fields for efficient retrieval.
|
||
• Share a common base class with attributes like:
|
||
• Name: The object’s identifier.
|
||
• Description: A brief summary of the object.
|
||
• Remarks: A list of additional notes or metadata.
|
||
|
||
Base objects are stored, indexed, retrieved, and updated using OSIS (Object Storage and Indexing System).
|
||
|
||
## Actor
|
||
|
||
Actors are domain-specific operation handlers that work on base objects. For instance, a Project Manager Actor might manage operations on stories, sprints, or projects.
|
||
|
||
Key Features of Actors:
|
||
• Domain-Specific Languages (DSLs): Actor methods form intuitive, logical DSLs for interacting with base objects.
|
||
• Specification-Driven:
|
||
• Actors are generated from specifications.
|
||
• Code written for actor methods can be parsed back into specifications.
|
||
• Code Generation: Specifications enable automated boilerplate code generation, reducing manual effort.
|
||
|
||
## Modules
|
||
|
||
### OSIS: Object Storage and Indexing System
|
||
|
||
OSIS is a module designed for efficient storage and indexing of root objects based on specific fields. It enables seamless management of data across various backends, with built-in support for field-based filtering and searching.
|
||
|
||
#### Key Components
|
||
|
||
**Indexer:**
|
||
* Creates and manages SQL tables based on base object specifications.
|
||
* Enables indexing of specific fields, making them searchable and filterable.
|
||
|
||
**Storer**:
|
||
* Handles actual data storage in different databases.
|
||
* Supports diverse encoding and encryption methods for secure data management.
|
||
|
||
By integrating OSIS, the backend achieves both high-performance data querying and flexible, secure storage solutions.
|
||
|
||
### Example Actor Module
|
||
|
||
The Example Actor module is a reference and testable example of a generated actor within Baobab. It demonstrates the structure of actor modules generated from specifications and can also be parsed back into specifications. This module serves two key purposes:
|
||
|
||
1. Acts as a reference for developers working on Baobab to understand and program against actor specifications.
|
||
2. Provides a compilable, generatable module for testing and validating Baobab’s code generation tools. |