OutputModules
Overview
A current problem with VisTrails is that the specification of a workflow is tied to the type of output produced. A user must, for example, produce a different version of a workflow to run a VTK pipeline that outputs in an interactive spreadsheet cell than the one used to produce a static image. In order to better support output that is execution-dependent, we propose using a generic "OutputModule" base class that other modules will subclass and define the types of outputs they can produce as well as the producedures to generate those outputs. The basic idea would be that the execution environment requests a specific output-type from the output module, and the output module returns content of that type, if available. A user could lock in a specific outupt-type (or order of preferred types) in the workflow specification if desired. Furthermore, we would allow single-session overrides (e.g. on the command-line) as well.
Objects
- OutputModule methods
- get_output_types: returns list of support output types
- has_output_type: returns boolean indicating whether a specific output_type is supported
- compute_output_type: new method that does the compute given the output_type as a parameter
- OutputConfig
- subclass of OutputModule should be paired with a subclass of OutputConfiguration which has any parameters for that type of output
- e.g. SpreadsheetConfig would have CellLocation, etc.
- Ideally, such config options would have global defaults
- e.g. SpreadsheetConfig has a default spreadsheet size, etc.
- e.g. ImageConfig has a default image type (png, jpeg, pdf)
- the options should be possible to override for a specific session (i.e. in the temp configuration)
- ideally, these options would have a general serialization (perhaps into the package's configuration?) that could be implemented in the base class
- subclass of OutputModule should be paired with a subclass of OutputConfiguration which has any parameters for that type of output
- OutputModule ports
- addConfiguration: a port for any configuration---we distinguish between configurations by their output-type so a user can set configurations for file-, spreadsheet-, etc. mode outputs and the config settings for that output type will be used when running with that output enabled
Questions
- Should the spreadsheet continue to be a package? Really, the important module bits can be OutputConfig settings now.
- Should thumbnails still be generated from the spreadsheet? Should this be package dependent?