def METHOD_NAME(self):
    self.do_next_exclusive_step("Review Action", choice='Approve')
    self.workflow.do_engine_steps()
    self.assertEqual(1, len(self.workflow.get_tasks(TaskState.WAITING)))
    self.assertEqual(1, len(self.workflow.get_tasks(TaskState.READY)))
    self.assertEqual('Cancel Action (if necessary)', self.workflow.get_tasks(TaskState.READY)[0].task_spec.bpmn_name)
    time.sleep(self.START_TIME_DELTA)
    self.workflow.refresh_waiting_tasks()
    self.workflow.do_engine_steps()
    self.assertEqual(2, len(self.workflow.get_tasks(TaskState.WAITING)))
    self.assertEqual(2, len(self.workflow.get_tasks(TaskState.READY)))
    self.do_next_named_step("Start Work")
    self.workflow.do_engine_steps()
    self.assertEqual(2, len(self.workflow.get_tasks(TaskState.WAITING)))
    self.assertEqual('Finish Time', self.workflow.get_tasks(TaskState.WAITING)[1].task_spec.bpmn_name)
    time.sleep(self.FINISH_TIME_DELTA)
    self.workflow.refresh_waiting_tasks()
    self.workflow.do_engine_steps()
    self.assertEqual(3, len(self.workflow.get_tasks(TaskState.WAITING)))
    self.assertNotEqual('Finish Time', self.workflow.get_tasks(TaskState.WAITING)[0].task_spec.bpmn_name)
    overdue_escalation_task = [
        t for t in self.workflow.get_tasks() if t.task_spec.bpmn_name == 'Overdue Escalation']
    self.assertEqual(1, len(overdue_escalation_task))
    overdue_escalation_task = overdue_escalation_task[0]
    self.assertEqual(TaskState.COMPLETED, overdue_escalation_task.state)
    self.assertEqual('ACTION OVERDUE', overdue_escalation_task.get_data('script_output'))
    self.do_next_named_step("Complete Work", choice="Done")
    self.workflow.do_engine_steps()
    self.assertTrue(self.workflow.is_completed())