@Override
  public void handle (TaskExecution aTaskExecution) {
    SimpleTaskExecution mtask = SimpleTaskExecution.of(aTaskExecution);
    mtask.setStatus(TaskStatus.COMPLETED);
    taskExecutionRepo.merge(mtask);
    long tasksLeft = counterRepository.decrement(aTaskExecution.getParentId());
    if(tasksLeft == 0) {
      taskCompletionHandler.handle(taskExecutionRepo.findOne(aTaskExecution.getParentId()));
      counterRepository.delete(aTaskExecution.getParentId());
    }
  }
<p>A {@link TaskCompletionHandler} implementation which handles completions 
of parallel construct tasks.</p>

<p>This handler keeps track of how many tasks were completed so far and 
when all parallel tasks completed for a given task it will then complete
the overall <code>parallel</code> task.</p> 

@author Arik Cohen
@since May 12, 2017
@see ParallelTaskDispatcher
src/main/java/com/creactiviti/piper/core/task/ParallelTaskCompletionHandler.java