diff --git a/force_bdss/io/workflow_writer.py b/force_bdss/io/workflow_writer.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..05eff31f7bedfdd8ed9a4acab77122383bc52ac1 100644 --- a/force_bdss/io/workflow_writer.py +++ b/force_bdss/io/workflow_writer.py @@ -0,0 +1,35 @@ +import json +from traits.api import Instance, HasStrictTraits + +from ..bundle_registry_plugin import BundleRegistryPlugin + + +class WorkflowWriter(HasStrictTraits): + bundle_registry = Instance(BundleRegistryPlugin) + + def __init__(self, bundle_registry, *args, **kwargs): + self.bundle_registry = bundle_registry + + super(WorkflowWriter, self).__init__(*args, **kwargs) + + def write(self, workflow, f): + data = { + "version": "1", + } + + data["multi_criteria_optimizer"] = \ + workflow.multi_criteria_optimizer.__getstate__() + + kpic_data = [] + for kpic in workflow.kpi_calculators: + kpic_data.append(kpic.__getstate__()) + + data["kpi_calculators"] = kpic_data + + ds_data = [] + for ds in workflow.data_sources: + ds_data.append(ds.__getstate__()) + + data["data_sources"] = ds_data + + json.dump(data, f)