def METHOD_NAME(self):
    ready_tasks = self.workflow.get_tasks(TaskState.READY)
    # If value == '', we cancel
    ready_tasks[0].update_data({'value': ''})
    ready_tasks[0].run()
    self.workflow.do_engine_steps()
    # If the subprocess gets cancelled, verify that data set there does not persist
    self.assertNotIn('value', self.workflow.last_task.data)
    # Check that we completed the Cancel Task
    cancel_task = self.workflow.get_tasks_from_spec_name("Cancel_Action")[0]
    self.assertEqual(cancel_task.state, TaskState.COMPLETED)
    # And cancelled the remaining tasks
    error_1_task = self.workflow.get_tasks_from_spec_name("Catch_Error_1")[0]
    self.assertEqual(error_1_task.state, TaskState.CANCELLED)
    error_none_task = self.workflow.get_tasks_from_spec_name("Catch_Error_None")[0]
    self.assertEqual(error_none_task.state, TaskState.CANCELLED)
    # We should not have this task, as we followed the 'cancel branch'
    print_task = self.workflow.get_tasks_from_spec_name("Activity_Print_Data")
    self.assertEqual(len(print_task), 1)
    self.assertEqual(print_task[0].state, TaskState.CANCELLED)