There is nothing available OOTB but two approaches come to my mind
Design it in a way that this case should be Resolved-Rejected (or Withdrawn since data is incorrect) and spun off a new Case since it is a fresh start
All the data that is getting updated in the process, maintain that as a embebbed page (property of type page) and when it needs to go back to fresh start : wipe of the data only in this embedded property by doing a property-remove
A little more clarity on business scenario would help us in providing better suggestions.
For current, we meet one requirement as below process:
1. Case status is open-draft with content1 in user1's handler, user1 updates fields and submit with content2(Content is updated)
2 Case status is status is pending- Confirm with content2 in user2's handler, user2 updates Fields and submit with content3(Content is updated)
2. Case status is pending-Approve with content3 in user3;s handler, and at the time, found some data is not correct (maybe the Employee name is wrong ) input by user1. so need to send back case to user2 with content2 first ,then user2 need to send back to user1 with content1.
As above scenario, so we need to find a way to fix two problems,
one is how to send case back? (the existing system includes so many processes and sub processes, so using connector maybe is not good choice)
two is how to save original data ?(the every work item includes a lot of properties. and the data is come from different classes)