- In IDEs - and many more technical RCP applications - most task is controlled by creativity. E.g. you get a task - create this or change that - and then it is more or less up to you how you want to solve it. You might have a number of large-scope processes - like you have to check in your work and change the state of issue reports - but nothing on the smaller scale.
- In many enterprise RCP application most tasks are controlled by processes. E.g. you have an exact description of how to perform most tasks - like create new account or change the payment plan. Processes are here centered on the smaller scale as well on the larger scale - like in which sequence data must be entered when making a new credit agreement.
That does not match well with many enterprise applications where the user must be able to 1) service phone calls in the middle of an on-going task and 2) alternate between a number of tasks...
The current wizard interface has a number of other problems as well:
- The interface for a wizard page (IWizardPage) assumes that a page cannot be "stale" compared with the model - which of cause is fine as long as wizards are modal... Note that this is actually solved in another similar interfaces used in the Forms UI API (IFormPart).
- The interface for a wizard page also makes the different pages aware of the previous and next pages as well as the actual control of the page which is a little peculiar when doing screen flows, where you might want a high degree of reuse of pages between processes.
- The use of WizardPage.setControl() seems to be one of the major sources of problems when developing pages - people just forget :-(
Until now we have implemented the needed processes as needed, but now are going to implement a rather large number of processes - of which many will be quite similar, so we want to implement some framework to ease the work and to make the result more maintainable.
The question is now: what would you do here? Implement a new wizard viewer in a view that can show multiple concurrent wiards or implement a new (simplified) flow interface that matches the requirements exactly? For those of you that have implemented RCP applications already, what have you done in these?