Skip to content

TaskTide - CoreLib

Provides the model entities for the TaskTide System, and their persistence to configured backend (ie embedded RocksDB/SQLite, Relational, NoSQL) through type constrained repository, and service ambassador pattern. The entity classes for TaskTide are summarized below, this Model View Controller complete served to simplify the design of the "TaskTide Engine Library", "TaskTide WebAPI", and "TaskTide Client Appilcation" views.




1). TaskTide Entities

TaskTide models a "Workflow" as a collection of "Steps" where each Step has a collection of work units to perform "WorkItem". In decoupling the units of work away from their meta-data (ie Step, Workflow), TaskTide supports both arbitrary and structured Task processing. Meaning, that not all work units to be orchestrated by TaskTide have to be explicitly defined under a Workflow-Step model.



A "WorkItem" is a hirearchal entity whose life-cycle is managed by TaskTide through its state "ToDo, Locked, Error, Done". It is composed of a "Workload" that is a map of work to perform "ItemTask", which enables TaskTide to support nested work units, if required. An "ItemTask" holds the work to peform as a task script string, and is composed of an embedded "TaskLogging" model which holds the operational data from task script execution (ie stderr/out logs, start/end time, CPU duration, execution status).



A "Workflow" is an entity that models a collection of related workloads as a map of "Steps". A "Step" is an entity that relates a collection of "WorkItems". Storing an alias for a Step in a WorkItem decouples meta-data from core data. TaskTides manager client through which WorkItems can imported/exported from user input.




2). TaskTide Repository

The TaskTide repositories were modelled as generic abstract interfaces constrained to "TaskTideModel", to separate the concerns from backend integration (ie Jakarta-NoSQL, JPA-Relational, and ItemStore-RocksDB/SQLite) from queries against the entity collection (ie "Workflow, Step, WorkItem"). Where the abstract "TemplateRepository" for Jakarta-NoSQL, "JpaRepository" for Relational Databases, and "ItemStoreRepository" classes all implement the logic for "Create, Read, Update, Delete" operations against their backend. Allowing the concrete implementations for Workflow, Step, WorkItem to apply this logic to their related target model. Allowing utilising interfaces to rely on the abstract typed interface, and a "RepositoryType" to strategically construct them.




3). TaskTide Service and Manager

A given "TaskTideService" instance (Workflow, Step, WorkItem) is composed with its corresponding "TaskTideRepository" which decouples the repository complexity (backend database) from the implementing class' business logic into a configurable singleton "TaskTideServiceManager" (ie configured once and reused). Which for the TaskTide Engine Client is task processing, and TaskTide Manager Client is task orchestration. The Manager package builds on this logic providing end-user facing interfaces for task import/export through its own "ManagerTask" model, which performs TaskTideModel conversion.