RFC Name : TaskMonitorRefactoring |
Editor(s): ScooterMorris |
Status: Work in Progress |
<<TableOfContents: execution failed [Argument "maxdepth" must be an integer value, not "[2]"] (see also the log)>>
Proposal
The current TaskMonitor mechanism has a number of flaws and challenges. First, task monitors are managed by passing task monitor objects as arguments to various methods. This can be onerous, since it means that all routines which call routines that might need a task monitor must themselves either accept a task monitor as an argument, or create a task monitor. Second, as Cytoscape processing becomes more complex, a single progress bar is no longer sufficient. For example, BioPAX loading has several steps, and each step updates the progress bar. This provides the user with information about how long the current step might take, but gives them no feedback about how many steps there are.
Open Issues
Backward Compatibility
Expected growth and plan for growth
References
Implementation Plan
One proposal would be to:
- Enhance the current task monitor to provide two progress bars: an overall progress, and a progress within this step.
- Provide a singleton class that represents the "current" task monitor. Processing routines could use this to determine if a task monitor is available, and update it if it is. This would allow us to avoid having to pass task monitor objects to all routines.
Comments
MikeSmoot - 8/20/2007
Perhaps the TaskManager can keep track of Tasks that are associated with threads and then provide a getCurrentTask() method that returns the task associated with Thread.getCurrentThread(). We'd then have to add a getTaskMonitor() method to Task. Then, if a TaskMonitored was desired, code could do something like TaskManger.getCurrentTask().getTaskMonitor() and set the appropriate values instead of passing TaskMonitor objects to and fro. Thoughts?
How to Comment
Edit the page and add your comments under the provided header. By adding your ideas to the Wiki directly, we can more easily organize everyone's ideas, and keep clear records. Be sure to include today's date and your name for each comment. Try to keep your comments as concrete and constructive as possible. For example, if you find a part of the RFC makes no sense, please say so, but don't stop there. Take the extra step and propose alternatives.