Hi,
I agree with partizano, that's what a think: a simple user mistake, like two wrong mouse clicks, can lead to a user task becomes completed. In that case, without "undo", the whole process becomes wrong. I think it is a too common case, to be avoided. I can think in two strategies to face this problem:
1) A general 'go back', after each user task (task1), there will be a gateway with a path to the previous user task (parent of task1). Managing variables you can go back any task you want. I think this approach is very complicated, it requires to write this logic for each task, the diagram would be too confusing. The real model would be 'hidden' by all this. Also there would be more than one task of the same type completed, which I think it is not good for several reasons.
2) A complete delete, the actual process would be modeled as a subprocess, with a boundary signal. That signal would be the 'delete' signal triggered in case of user input error. This approach forces the user to create a new process, with the corrections. All the information about time completeness tasks, etc. would be lost. It is more manageable than the previous one, it is easier to implement. There should be user warnings for non-undoable changes.
Some variations of the ones above:
3) That after a delete like in 2, all the information significant to the process, the collection of all the forms, in a VO for example, there be used to build another process instance, automatically by the system, with the corrections included.
4) Also compensation does not really undo a completed user task, but I think it could be used to redo one task, also the current execution should be canceled. I am not still very acquainted about it, but when I studied it some weeks before, I could not find a good solution.
None of these approaches are good enough. Does anyone have other ideas? What should be the best approach to this problem?
I think that at least, it would be a good idea to provide a basic undo, to undo the last change, of the last user task. Maybe something similar to 1), but transparent to a bmpn designer.
Regards.