Re: But then there is a concern where the two process will become separate process, and by looking at the original process we do not know the real time it takes to complete the process.
you can add some parameters to new process when start it:
boolean isRestarted = true;
List<Integer> previousProcessDurationSecond = [1,2...];
or you can keep InstanceId of aborted process. By this you can get Information when need it.