redo
Undoes and the redoes (re-applies) an expression identified by a tag.
pdef = Ruote.process_definition do sequence :tag => 'kilroy' do alpha _redo :ref => 'kilroy', :unless => '${f:ok} == true' end end
will redo at tag ‘kilroy’ if the field ‘ok’ is not set to true.
(redo is escaped as _redo not to conflict with the “redo” Ruby keyword)
Maybe this case is better served by a cursor/rewind combination
pdef = Ruote.process_definition do cursor do alpha rewind :unless => '${f:ok} == true' end end
(There is a big difference though, a redo will restart with the workitem
as it was when the workitem entered the tagged region, while the rewind
keeps the workitem as is)