Projects:ARRA:SlicerEM:Developer:WorkflowManager
From NAMIC Wiki
Home < Projects:ARRA:SlicerEM:Developer:WorkflowManager
Contents
- 1 Summary
- 2 Previous workflow manager implementation in KWWidgets
- 3 Transition from KWWidgets state machines to Qt state machines
- 4 Transition from KWWidgets workflow manager to a workflow manager using Qt's state machines
- 5 GUI implementation in Qt
- 6 Considerations to keep in mind
- 7 Additional ideas and questions
Summary
- EMSegmenter has a fairly complicated workflow
- Need a mechanism to validate user input and transition appropriately between steps of the workflow
- Should be dependent on Qt only (and not VTK)
- Current plan (subject to change) = use Qt's state machine implementation, with our own workflow manager on top
Previous workflow manager implementation in KWWidgets
- Please see the documentation here, as it is already well described
Uses:
- KWWidgets state machines - incorporates states (ex. user interaction within a workflow step, validation of the user input within a workflow step), transitions (between states), and inputs (pushed onto a queue to trigger transitions)
- KWWidgets wizard workflow - provides additional functionality to manage workflow using a state machine (ex. bundles pairs of user interaction and validation states into a workflow "step", handles a navigation stack of steps encountered along the way that triggers updates of widgets and/or dialogs)
Transition from KWWidgets state machines to Qt state machines
- Core functionality in KWWidgets state machines that would be replicated for a "straight-forward" conversion:
- Representation of
Transition from KWWidgets workflow manager to a workflow manager using Qt's state machines
- Will likely need to reimplement the four KWWidget workflow manager classes:
- vtkKWWizardStep: a wizard step
- vtkKWWizardWorkflow : a wizard workflow
- vtkKWWizardWidget : a wizard widget, embedding UI (buttons) and a wizard workflow engine
- vtkKWWizardDialog : a wizard dialog, embedding a wizard widget in a toplevel/dialog window.
GUI implementation in Qt
- qStackedWidget and/or qTabWidget
- plus qDialog
Considerations to keep in mind
- Undo / redo and forward/back transitions
- Branching workflows / skipped states