-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Queue Manager #286
Comments
Components OverviewWorkflowQueueManager:The main interface to manage the task queue. WorkflowQueue:Manages a queue of WorkflowJob tasks. WorkflowJob:Represents individual workflow tasks that execute based on attributes. WorkflowFactory:Creates specific workflows based on the Analysis Mode provided in the task's attributes. Concrete Workflow Implementations:Rasterize Layer Workflow would be a concrete workflows created by the factory. Example usage:
classDiagram
class WorkflowQueueManager {
+add_task(attributes: dict): void
+start_processing(): void
+cancel_processing(): void
}
class WorkflowQueue {
+add_job(job: WorkflowJob): void
+start_processing(): void
+process_queue(): void
}
class WorkflowJob {
+run(): bool
+feedback(): QgsFeedback
}
class WorkflowFactory {
+create_workflow(attributes: dict, feedback: QgsFeedback): Workflow
}
class SpatialAnalysisWorkflow {
+execute(): bool
}
class TemporalAnalysisWorkflow {
+execute(): bool
}
WorkflowQueueManager --> WorkflowQueue : "Manages"
WorkflowQueue --> WorkflowJob : "Processes"
WorkflowJob --> WorkflowFactory : "Uses"
WorkflowFactory --> SpatialAnalysisWorkflow : "Creates"
WorkflowFactory --> TemporalAnalysisWorkflow : "Creates"
WorkflowJob --> QgsFeedback : "Uses for Progress and Cancellation"
|
…e over them for processing. WIP for #286
Improve gpkg creation for project Fixes #286
Writing attributes to layers for study area Fixes #286
For iterating over the tree the plan is to implement a Queue that runs QgsTasks.
We will then iterate over all the layer objects in the tree and queue them up to be processed.
Each layer will have a workflow instance created for it based on the layer properties:
We need different workflows based on which 'Use' option the user has chosen for each layer. For example if the layer has clicked the radio button for 'Use Point per Cell' in the UI, there should be a point_per_cell workflow that perfoms the needed steps to generate a liekert scale raster from the point layer, grid layer, bbox and parameters set in the dictionary (e.g. layer source for points)
The approach will be as per the following diagram:
The text was updated successfully, but these errors were encountered: