Skip to content
Snippets Groups Projects
Commit db1c4628 authored by Stefano Borini's avatar Stefano Borini
Browse files

Creates a first trivial prototype using envisage

parent 01d5fcf9
No related branches found
No related tags found
1 merge request!2Prototype using envisage plugins
FORCE BDSS
----------
This repository contains the implementation of the Business Decision System. It is implemented
under the FORCE project (Horizon 2020/NMBP-23-2016/721027).
from force import * from force_bdss import *
wf=Workflow() wf=Workflow()
wf.set_mco(Dakota()) wf.set_mco(Dakota())
......
File moved
# Enthought library imports.
from envisage.api import Application
# Application entry point.
from force_bdss.multi_criteria_optimizers_plugin import \
MultiCriteriaOptimizersPlugin
from force_bdss.workflow_plugin import WorkflowPlugin
from force_bdss.key_performance_calculators_plugin import \
KeyPerformanceCalculatorsPlugin
def run():
application = Application(
id='force',
plugins=[
WorkflowPlugin(),
MultiCriteriaOptimizersPlugin(),
KeyPerformanceCalculatorsPlugin(),
]
)
# Run it!
application.run()
from traits.api import provides, HasStrictTraits
from force_bdss.i_key_performance_calculator import IKeyPerformanceCalculator
@provides(IKeyPerformanceCalculator)
class BasicKeyPerformanceCalculator(HasStrictTraits):
def run(self):
print("Computing basic key performance indicator")
from traits.api import provides, HasStrictTraits
from force_bdss.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
@provides(IMultiCriteriaOptimizer)
class BasicMultiCriteriaOptimizer(HasStrictTraits):
def run(self):
print("Basic multicriteria optimizer in action")
from traits.api import Interface
class IKeyPerformanceCalculator(Interface):
def run(self):
pass
from traits.api import Interface
class IMultiCriteriaOptimizer(Interface):
def run(self):
pass
from traits.api import List
from envisage.plugin import Plugin
from force_bdss.basic_key_performance_calculator import \
BasicKeyPerformanceCalculator
from force_bdss.i_key_performance_calculator import IKeyPerformanceCalculator
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 [BasicKeyPerformanceCalculator()]
from traits.api import List
from envisage.plugin import Plugin
from force_bdss.basic_multi_criteria_optimizer import \
BasicMultiCriteriaOptimizer
from force_bdss.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
class MultiCriteriaOptimizersPlugin(Plugin):
id = "force_bdss.multi_criteria_optimizers_plugin"
multi_criteria_optimizers = List(
IMultiCriteriaOptimizer,
contributes_to='force_bdss.multi_criteria_optimizers'
)
def _multi_criteria_optimizers_default(self):
return [BasicMultiCriteriaOptimizer()]
from envisage.extension_point import ExtensionPoint
from traits.api import List
from envisage.plugin import Plugin
from traits.api import on_trait_change
from force_bdss.i_key_performance_calculator import IKeyPerformanceCalculator
from force_bdss.i_multi_criteria_optimizers import IMultiCriteriaOptimizer
class WorkflowPlugin(Plugin):
id = "force_bdss.workflow_plugin"
key_performance_calculators = ExtensionPoint(
List(IKeyPerformanceCalculator),
id='force_bdss.key_performance_calculators')
multi_criteria_optimizers = ExtensionPoint(
List(IMultiCriteriaOptimizer),
id='force_bdss.multi_criteria_optimizers')
@on_trait_change("application:started")
def application_started(self):
for mco in self.multi_criteria_optimizers:
mco.run()
for kpc in self.key_performance_calculators:
kpc.run()
from setuptools import setup
VERSION="0.1.0.dev0"
setup(
name="force_bdss",
version=VERSION,
entry_points={
'console_scripts': [
'force_bdss = force_bdss.application:run',
]},
install_requires=[
"envisage >= 4.6.0"
]
)
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