wrench::Workflow
-
class Workflow : public std::enable_shared_from_this<Workflow>
A workflow (to be executed by a WMS)
Public Functions
Create a control dependency between two workflow tasks. Will not do anything if there is already a path between the two tasks.
- Parameters:
src – the parent task
dst – the child task
redundant_dependencies – whether DAG redundant dependencies should be kept in the graph
- Throws:
std::invalid_argument –
-
std::shared_ptr<DataFile> addFile(const std::string &id, double size)
Add a file to the workflow.
- Parameters:
id – : file name
size – : file size in bytes
- Returns:
a file
-
std::shared_ptr<WorkflowTask> addTask(const std::string&, double flops, unsigned long min_num_cores, unsigned long max_num_cores, double memory_requirement)
Create and add a new computational task to the workflow.
- Parameters:
id – a unique string id
flops – number of flops
min_num_cores – the minimum number of cores required to run the task
max_num_cores – the maximum number of cores that can be used by the task (use INT_MAX for infinity)
memory_requirement – memory_manager_service requirement (in bytes)
- Throws:
std::invalid_argument –
- Returns:
the WorkflowTask instance
-
void clear()
Method that will delete all workflow tasks and all files used by these tasks.
-
void enableTopBottomLevelDynamicUpdates(bool enabled)
Enable dynamic top/bottom level updates.
- Parameters:
enabled – true if dynamic updates are to be enabled, false otherwise
-
double getCompletionDate()
Returns the workflow’s completion date.
- Returns:
a date in seconds (or a negative value If the workflow has not completed)
-
std::map<std::string, std::shared_ptr<WorkflowTask>> getEntryTaskMap() const
Get the list of exit tasks of the workflow, i.e., those tasks that don’t have parents.
- Returns:
A map of tasks indexed by their IDs
-
std::vector<std::shared_ptr<WorkflowTask>> getEntryTasks() const
Get the list of exit tasks of the workflow, i.e., those tasks that don’t have parents.
- Returns:
A vector of tasks
-
std::map<std::string, std::shared_ptr<WorkflowTask>> getExitTaskMap() const
Get the exit tasks of the workflow, i.e., those tasks that don’t have children.
- Returns:
A map of tasks indexed by their IDs
-
std::vector<std::shared_ptr<WorkflowTask>> getExitTasks() const
Get the exit tasks of the workflow, i.e., those tasks that don’t have children.
- Returns:
A vector of tasks
-
std::shared_ptr<DataFile> getFileByID(const std::string &id)
Get a file based on its ID.
- Parameters:
id – : file ID
- Returns:
a file
-
std::map<std::string, std::shared_ptr<DataFile>> &getFileMap()
Get the list of all files in the workflow/simulation.
- Returns:
a reference to the map of files in the workflow/simulation, indexed by file ID
-
std::map<std::string, std::shared_ptr<DataFile>> getInputFileMap() const
Retrieve the list of the input files of the workflow (i.e., those files that are input to some tasks but output from none)
- Returns:
a map of files indexed by file ID
-
std::vector<std::shared_ptr<DataFile>> getInputFiles() const
Retrieve the list of the input files of the workflow (i.e., those files that are input to some tasks but output from none)
- Returns:
a vector of files
-
unsigned long getNumberOfTasks()
Get the number of tasks in the workflow.
- Returns:
the number of tasks
-
unsigned long getNumLevels()
Returns the number of levels in the workflow.
- Returns:
the number of levels
-
std::map<std::string, std::shared_ptr<DataFile>> getOutputFileMap() const
Retrieve a list of the output files of the workflow (i.e., those files that are output from some tasks but input to none)
- Returns:
a map of files indexed by ID
-
std::vector<std::shared_ptr<DataFile>> getOutputFiles() const
Retrieve a list of the output files of the workflow (i.e., those files that are output from some tasks but input to none)
- Returns:
a vector of files
-
std::map<std::string, std::vector<std::shared_ptr<WorkflowTask>>> getReadyClusters()
Get a map of clusters composed of ready tasks.
- Returns:
map of workflow cluster tasks
-
std::vector<std::shared_ptr<WorkflowTask>> getReadyTasks()
Get a vector of ready tasks.
- Returns:
a vector of tasks
Get the shared pointer for this object.
- Returns:
a shared pointer to the object
-
std::shared_ptr<WorkflowTask> getTaskByID(const std::string &id)
Find a WorkflowTask based on its ID.
- Parameters:
id – a string id
- Throws:
std::invalid_argument –
- Returns:
a workflow task (or throws a std::invalid_argument if not found)
Get the list of children for a task.
- Parameters:
task – a workflow task
- Returns:
a vector of tasks
-
std::map<std::string, std::shared_ptr<WorkflowTask>> getTaskMap()
Get the list of all tasks in the workflow.
- Returns:
a copy of themap of tasks, indexed by ID
Get the number of children for a task.
- Parameters:
task – a workflow task
- Returns:
a number of children
Get the number of parents for a task.
- Parameters:
task – a workflow task
- Returns:
a number of parents
Get the list of parents for a task.
- Parameters:
task – a workflow task
- Returns:
a vector of tasks
-
std::vector<std::shared_ptr<WorkflowTask>> getTasks()
Get the list of all tasks in the workflow.
- Returns:
a vector of tasks
-
std::vector<std::shared_ptr<WorkflowTask>> getTasksInBottomLevelRange(int min, int max)
Returns all tasks with bottom-levels in a range.
- Parameters:
min – the low end of the range (inclusive)
max – the high end of the range (inclusive)
- Returns:
a vector of tasks
-
std::vector<std::shared_ptr<WorkflowTask>> getTasksInTopLevelRange(int min, int max)
Returns all tasks with top-levels in a range.
- Parameters:
min – the low end of the range (inclusive)
max – the high end of the range (inclusive)
- Returns:
a vector of tasks
Find which tasks use a file as input.
- Parameters:
file – : a file
- Returns:
a vector of tasks
Get the workflow task for which a file is an output.
- Parameters:
file – a file
- Returns:
at task (or nullptr)
-
bool isDone()
Returns whether all tasks are complete.
- Returns:
true or false
Determine whether a file is output of some task.
- Parameters:
file – a file
- Returns:
true or false
Determine whether one source is an ancestor of a destination task.
- Parameters:
src – the source task
dst – the destination task
- Returns:
true if there is a path from src to dst, false otherwise
Remove a control dependency between tasks (does nothing if none)
- Parameters:
src – the source task
dst – the destination task
Remove a file from the workflow.
- Parameters:
file – a file
- Throws:
std::invalid_argument –
Remove a task from the workflow.
- Parameters:
task – a task
- Throws:
std::invalid_argument –
-
void updateAllTopBottomLevels()
Update the top level of all tasks (in case dynamic top level updates had been disabled)