We are using activiti 5.9 In our case we do not have scenario of populating parent_task_id_ column in ACT_RU_TASK. After having considerable volume in the activiti tables.
For any new signal/workflow change following query is fired before completing the task.
select * from ACT_RU_TASK where PARENT_TASK_ID_ = ?
As this column is null in all the records, query is taking unusally huge time doing full table scan.
In ACT_RU_TASK we have 1375k records with PARENT_TASK_ID_ as null.
The parent task id is used for sub tasks in Activiti. So we don't store the previous task in the parent task id, because in most cases there's no parent-child relationship there. By reading the BpmnModel representation of the BPMN XML you would be able to determine the previous task as well, and you could determine if there's parallel behaviour or not.