def METHOD_NAME(self):
    specs = self.get_all_specs('correlation.bpmn')
    proc_1 = specs['proc_1']
    workflow = BpmnWorkflow(proc_1, specs)
    workflow.do_engine_steps()
    for idx, task in enumerate(workflow.get_ready_user_tasks()):
        task.data['task_num'] = idx
        task.run()
    workflow.do_engine_steps()
    ready_tasks = workflow.get_ready_user_tasks()
    waiting = workflow.get_tasks_from_spec_name('get_response')
    # Two processes should have been started and two corresponding catch events should be waiting
    self.assertEqual(len(ready_tasks), 2)
    self.assertEqual(len(waiting), 2)
    for task in waiting:
        self.assertEqual(task.state, TaskState.WAITING)
    # Now copy the task_num that was sent into a new variable
    for task in ready_tasks:
        task.data.update(init_id=task.data['task_num'])
        task.run()
    workflow.do_engine_steps()
    # If the messages were routed properly, the id should match
    for task in workflow.get_tasks_from_spec_name('subprocess_end'):
        self.assertEqual(task.data['task_num'], task.data['init_id'])