MCPcopy
hub / github.com/sartography/SpiffWorkflow / serialize_task

Method serialize_task

SpiffWorkflow/serializer/xml.py:671–703  ·  view source on GitHub ↗
(self, task, skip_children=False)

Source from the content-addressed store, hash-verified

669 return workflow
670
671 def serialize_task(self, task, skip_children=False):
672 assert isinstance(task, Task)
673
674 if isinstance(task.task_spec, SubWorkflow):
675 raise TaskNotSupportedError(
676 "Subworkflow tasks cannot be serialized (due to their use of" +
677 " internal_data to store the subworkflow).")
678
679 # We are not serializing task.workflow; the deserializer accepts
680 # an already-deserialized Workflow instead.
681 elem = etree.Element('task')
682 if task.id is not None:
683 SubElement(elem, 'id').text = str(task.id)
684 if task.parent is not None:
685 SubElement(elem, 'parent').text = str(task.parent.id)
686
687 if not skip_children:
688 children_elem = SubElement(elem, 'children')
689 for child in task.children:
690 child_elem = self.serialize_task(child)
691 children_elem.append(child_elem)
692
693 SubElement(elem, 'state').text = TaskState.get_name(task._state)
694 if task.triggered:
695 SubElement(elem, 'triggered')
696 SubElement(elem, 'spec').text = task.task_spec.name
697 SubElement(elem, 'last-state-change').text = str(
698 task.last_state_change)
699 self.serialize_value_map(SubElement(elem, 'data'), task.data)
700 internal_data_elem = SubElement(elem, 'internal-data')
701 self.serialize_value_map(internal_data_elem, task.internal_data)
702
703 return elem
704
705 def deserialize_task(self, workflow, elem):
706 assert isinstance(workflow, Workflow)

Callers 1

serialize_workflowMethod · 0.95

Calls 3

serialize_value_mapMethod · 0.95
get_nameMethod · 0.45

Tested by

no test coverage detected