type=ForeignKey('TaskTypeChoice',null=False,on_delete=PROTECT,help_text='Type of task (f.e. pipeline)')
start_time=DateTimeField(help_text='Time at which the task is scheduled to start (UTC, real-time tasks only)')
stop_time=DateTimeField(help_text='Time at which the task is scheduled to stop (UTC, real-time tasks only)')
state=ForeignKey('TaskStateChoice',null=False,on_delete=PROTECT,related_name='task_states',help_text='Task progress with respect to scheduling and running')
requested_state=ForeignKey('TaskStateChoice',null=False,on_delete=PROTECT,related_name='task_requested_states',help_text='State to which the user requests this task to go')
specification=JSONField(help_text='Specification details of the task')
work_request_blueprint=ForeignKey('WorkRequestBlueprint',null=True,on_delete=SET_NULL,help_text='Parent Work Request')
template=ForeignKey('TaskTemplate',null=False,on_delete=PROTECT,help_text='Schema for "specification" field')
# resource_claim = ForeignKey("ResourceClaim", null=False, on_delete=PROTECT) # todo <-- how is this external reference supposed to work?