Measuring Business Process overhead
You can divide Business Process (BP) time parameters into 3 groups:
- Waiting for execution: a record is created on a step and waits for processing.
- Execution time: a bot or a human is processing a record.
- Record transition to other steps.
To check the time parameters in any of the three groups for particular BP instances grouped by steps, use the overhead query:
select r.uuid, r.title,
AVG(TIMESTAMPDIFF(SECOND,ah.creationTime,aha.acceptTime)) as avg_execution_start_overhead,
MAX(TIMESTAMPDIFF(SECOND,ah.creationTime,aha.acceptTime)) as max_execution_start_overhead,
AVG(TIMESTAMPDIFF(SECOND,ah.completionDate,ahNext.creationTime)) as avg_transition_overhead,
MAX(TIMESTAMPDIFF(SECOND,ah.completionDate,ahNext.creationTime)) as max_transition_overhead,
AVG(TIMESTAMPDIFF(SECOND,aha.acceptTime,aha.submitTime)) as avg_execution_time,
MAX(TIMESTAMPDIFF(SECOND,aha.acceptTime,aha.submitTime)) as max_execution_time
from Run r
join CampaignMap cm on cm.id = r.campaignMap_id
join AwsHit ah on ah.run_id = r.id
join HitSubmissionDataItem hsdi on hsdi.hit_id = ah.id
join AwsHitAssignment aha on ah.id = aha.hit_id
join Run next on r.childrenRunUUID LIKE CONCAT('%', next.uuid, '%')
join HitSubmissionDataItem hsdiNext on hsdiNext.originalItemId = hsdi.originalItemId
join AwsHit ahNext on hsdiNext.hit_id = ahNext.id and ahNext.run_id = next.id
where r.rootRunUUID = '<bp-instance-uuid>'
group by r.uuid
order by r.startDate;
::note The query does not provide accurate estimates for a step in case of record split. :::