Use a new rollback accumulator to collect which tasks need to be rolled back and use that in the ordered workflow code. Move the usage of provides/requires as functions and just let them be attributes of the flow objects.
Use a new rollback accumulator to collect which tasks need to be rolled back and use that in the ordered workflow code. Move the usage of provides/requires as functions and just let them be attributes of the flow objects.