Skip to content
Snippets Groups Projects
workflow.py 1002 B
Newer Older
from traits.api import HasStrictTraits, Instance, String, List
from force_bdss.workspecs.data_source import DataSource
from force_bdss.workspecs.kpi_calculator import KPICalculator
from .multi_criteria_optimizer import MultiCriteriaOptimizer


class Workflow(HasStrictTraits):
    name = String()
    multi_criteria_optimizer = Instance(MultiCriteriaOptimizer)
    data_sources = List(DataSource)
    kpi_calculators = List(KPICalculator)

    @classmethod
    def from_json(cls, json_data):
        self = cls(
            multi_criteria_optimizer=MultiCriteriaOptimizer.from_json(
                    json_data["multi_criteria_optimizer"]
            data_sources=[
                DataSource.from_json(data_source_data)
                for data_source_data in json_data["data_sources"]],
            kpi_calculators=[
                KPICalculator.from_json(kpi_calculator_data)
                for kpi_calculator_data in json_data["kpi_calculators"]]
        )