Skip to content
Snippets Groups Projects
Commit 3a65cbaa authored by Stefano Borini's avatar Stefano Borini Committed by GitHub
Browse files

Merge pull request #3 from force-h2020/rename-kpc-to-datasource

Rename KeyPerformanceCalculator to DataSource
parents fa121b2c 7ff50920
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@
"multi_criteria_optimization": {
"name": "basic"
},
"key_performance_indicators": [
"data_sources": [
"viscosity", "price"
]
}
......
......@@ -3,8 +3,8 @@ from envisage.core_plugin import CorePlugin
from force_bdss.bdss_application import BDSSApplication
from force_bdss.core_mco_driver import CoreMCODriver
from force_bdss.kpi.key_performance_calculators_plugin import \
KeyPerformanceCalculatorsPlugin
from force_bdss.data_sources.data_sources_plugin import \
DataSourcesPlugin
from force_bdss.mco.multi_criteria_optimizers_plugin import \
MultiCriteriaOptimizersPlugin
......@@ -17,7 +17,7 @@ def run(evaluate, workflow_filepath):
plugins = [
CorePlugin(),
CoreMCODriver(),
KeyPerformanceCalculatorsPlugin(),
DataSourcesPlugin(),
MultiCriteriaOptimizersPlugin(),
]
......
......@@ -3,8 +3,8 @@ from envisage.plugin import Plugin
from traits.has_traits import on_trait_change
from traits.trait_types import List
from force_bdss.kpi.i_key_performance_calculator import (
IKeyPerformanceCalculator)
from force_bdss.data_sources.i_data_source import (
IDataSource)
from force_bdss.mco.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
......@@ -26,21 +26,21 @@ class CoreMCODriver(Plugin):
#: A list of the available Key Performance Indicator calculators.
#: It will be populated by plugins.
key_performance_calculators = ExtensionPoint(
List(IKeyPerformanceCalculator),
id='force_bdss.key_performance_calculators')
data_sources = ExtensionPoint(
List(IDataSource),
id='force_bdss.data_sources')
@on_trait_change("application:started")
def application_started(self):
workflow = self.application.workflow
if self.application.evaluate:
for kpi in workflow.key_performance_indicators:
kpc = self._find_kpc_by_computes(kpi)
if kpc:
kpc.run(self.application)
for requested_ds in workflow.data_sources:
data_source = self._find_data_source_by_computes(requested_ds)
if data_source:
data_source.run(self.application)
else:
raise Exception("Requested KPI {} but don't know how"
"to compute it.".format(kpi))
raise Exception("Requested data source {} but don't know "
"to find it.".format(requested_ds))
else:
mco_name = workflow.multi_criteria_optimization.name
mco = self._find_mco_by_name(mco_name)
......@@ -50,10 +50,10 @@ class CoreMCODriver(Plugin):
raise Exception("Requested MCO {} but it's not available"
"to compute it.".format(mco_name))
def _find_kpc_by_computes(self, computes):
for kpc in self.key_performance_calculators:
if kpc.computes == computes:
return kpc
def _find_data_source_by_computes(self, computes):
for ds in self.data_sources:
if ds.computes == computes:
return ds
return None
......
File moved
from traits.api import provides, HasStrictTraits, String
from force_bdss.kpi.i_key_performance_calculator import (
IKeyPerformanceCalculator)
from force_bdss.data_sources.i_data_source import (
IDataSource)
@provides(IKeyPerformanceCalculator)
@provides(IDataSource)
class Basic(HasStrictTraits):
computes = String("basic")
......
from envisage.plugin import Plugin
from traits.api import List
from force_bdss.data_sources.i_data_source import (
IDataSource)
from force_bdss.data_sources.basic import Basic
from force_bdss.data_sources.price import Price
from force_bdss.data_sources.viscosity import Viscosity
class DataSourcesPlugin(Plugin):
id = "force_bdss.data_sources_plugin"
data_sources = List(
IDataSource,
contributes_to='force_bdss.data_sources'
)
def _data_sources_default(self):
return [Basic(), Viscosity(), Price()]
from traits.api import Interface, String
class IKeyPerformanceCalculator(Interface):
class IDataSource(Interface):
computes = String()
def run(self):
......
from traits.api import provides, HasStrictTraits, String
from force_bdss.kpi.i_key_performance_calculator import (
IKeyPerformanceCalculator)
from force_bdss.data_sources.i_data_source import (
IDataSource)
@provides(IKeyPerformanceCalculator)
@provides(IDataSource)
class Price(HasStrictTraits):
computes = String("price")
......
from traits.api import provides, HasStrictTraits, String
from force_bdss.kpi.i_key_performance_calculator import (
IKeyPerformanceCalculator)
from force_bdss.data_sources.i_data_source import (
IDataSource)
@provides(IKeyPerformanceCalculator)
@provides(IDataSource)
class Viscosity(HasStrictTraits):
computes = String("viscosity")
......
from envisage.plugin import Plugin
from traits.api import List
from force_bdss.kpi.i_key_performance_calculator import (
IKeyPerformanceCalculator)
from force_bdss.kpi.basic import Basic
from force_bdss.kpi.price import Price
from force_bdss.kpi.viscosity import Viscosity
class KeyPerformanceCalculatorsPlugin(Plugin):
id = "force_bdss.key_performance_calculators_plugin"
key_performance_calculators = List(
IKeyPerformanceCalculator,
contributes_to='force_bdss.key_performance_calculators'
)
def _key_performance_calculators_default(self):
return [Basic(), Viscosity(), Price()]
......@@ -6,7 +6,7 @@ from .multi_criteria_optimization import MultiCriteriaOptimization
class Workflow(HasStrictTraits):
name = String()
multi_criteria_optimization = Instance(MultiCriteriaOptimization)
key_performance_indicators = List(String)
data_sources = List(String)
@classmethod
def from_json(cls, json_data):
......@@ -14,7 +14,7 @@ class Workflow(HasStrictTraits):
multi_criteria_optimization=MultiCriteriaOptimization.from_json(
json_data["multi_criteria_optimization"]
),
key_performance_indicators=json_data["key_performance_indicators"]
data_sources=json_data["data_sources"]
)
return self
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment