Newer
Older
class WorkflowWriter(HasStrictTraits):
"""A Writer for writing the Workflow onto disk.
"""
"""Writes the workflow model object to a file f in JSON format.
Parameters
----------
workflow: Workflow
The Workflow instance to write to file
f: File
A file object on which to write the workflow, properly serialized
into JSON.
"""
data["workflow"] = self._workflow_data(workflow)
json.dump(data, f)
def _workflow_data(self, workflow):
workflow_data = {
"mco": self._mco_data(workflow.mco),
"kpi_calculators": [
self._bundle_model_data(kpic)
for kpic in workflow.kpi_calculators],
"data_sources": [
self._bundle_model_data(ds)
for ds in workflow.data_sources]
return workflow_data
def _mco_data(self, mco):
"""Extracts the data from the MCO object and returns its dictionary.
If the MCO is None, returns None"""
if mco is None:
return None
data = self._bundle_model_data(mco)
for param in data["model_data"]["parameters"]:
{
"id": param.factory.id,
"model_data": param.__getstate__()
}
)
data["model_data"]["parameters"] = parameters_data
return data
def _bundle_model_data(self, bundle_model):
"""
Extracts the data from a bundle model and returns its dictionary
"""
return {
"id": bundle_model.bundle.id,
"model_data": bundle_model.__getstate__()
}