Task Execution

Tasks are executed on background using Celery – function ppc_robot_worker.tasks.tasks.run_job(). Task execution is described by the following diagram:

Before the task is executed, job definition is retrieved from the database – this is not described in the diagram, as the worker uses standard Django models.

When the definition is ready, run_job calls method ppc_robot_lib.tasks.task_factory.TaskFactory.create_task() (1). TaskFactory then selects appropriate taskType (given by the task_type_name and version parameters) and creates a new instance of the report type (1.1). The factory then creates a new ppc_robot_lib.tasks.task.Task instance with reference to the given task and parameters (1.2) and returns it (1.3).

run_job then passes the Task instance to ppc_robot_lib.tasks.task_executor.TaskExecutor.execute() (2). TaskExecutor calls the ppc_robot_lib.tasks.abstract_task_type.AbstractFunctionTaskType.execute() (2.1).

After the execute() method completes, run_job updates the job status and sends notification to the user.