A Task starts in New status, then progresses to BeingHandled status, then WaitingForApproval and then it can either be moved to Finished or NotApproved which is essentially back to BeingHandled with additional info, saying that it is back from WaitingForApproval.
As others have mentioned, the Finite State Machine (FSM) approach is a way to model the behavior you desire. The states are basically the statuses you mentioned, but you also need to define the transitions that get the Task from one state to the next.
Before you start coding, I suggest you sketch the FSM and show it to your colleagues (or customers) to confirm that the states and transitions are consistent with how things work in the problem you're trying to solve. It's easier to change the diagram on a whiteboard than to change the code. I use PlantUML with PlantText.com to produce diagrams quickly, but a whiteboard is even quicker.
I took the liberty of starting something (I added somewhat arbitrary transitions) but it should make some sense. You might be able to remove some states, e.g., New
and BeingHandled
might be the same state if you can't really think of a transition that get the system from one to the other. Similarly, BeingHandled
and WaitingForApproval
could also be the same state if all you're doing is approving/rejecting tasks. Try to keep it as simple as possible.

Finally, when you're going to code this up, you don't have to use the State Pattern (as some have suggested). It adds complexity to your solution since every state is a separate class (sometimes that can be useful, but if you have a lot of states or transitions, it gets hard to maintain). FSMs have been around a long time, and can easily be coded using a two-dimensional array. Check the question at How to implement a FSM - Finite State Machine in Java or ask Google.