Commit d69ab181 authored by payno's avatar payno
Browse files

[add-on] add _BaseWorkflow whiwh should manage the add-on of the workflow

parent ac6d9542
......@@ -31,18 +31,37 @@ from pypushflow.PythonActor import PythonActor as ActorFactory
from pypushflow.StartActor import StartActor
from pypushflow.StopActor import StopActor
from pypushflow.JoinActor import JoinUntilStopSignal
from pypushflow.addon import utils
from pypushflow.addon.classes import BaseWorkflowAddOn
logger = logging.getLogger('pypushflow')
class Workflow(object):
#from pypushflow import UtilsMongoDb
class _BaseWorkflow:
def __init__(self, configuration):
self._configuration = configuration or {}
self._add_ons = []
for add_on_class in self._getAddOnsClasses():
def _getAddOnsClasses(self):
add_ons = []
for _, classes in utils.get_registered_add_ons_classes().items():
for class_ in classes:
import inspect
if BaseWorkflowAddOn in (inspect.getmro(class_)):
return add_ons
class Workflow(_BaseWorkflow):
def __init__(self, name):
super(Workflow, self).__init__() = name
self.listOnErrorActor = []
#self.mongoId = UtilsMongoDb.initMongo(name=name)
def connectOnError(self, actor):
logger.debug("In connectOnError in subModule {0}, actor name {1}".format(,
......@@ -58,8 +77,16 @@ class Workflow(object):
return '/' +
class ProcessableWorkflow:
def __init__(self, scheme):
class ProcessableWorkflow(_BaseWorkflow):
"""Define a workflow that can be executed
:param scheme: the workflow scheme
:param configuration: some configuration / settings that can be pass to
the add-on.
def __init__(self, scheme, configuration=None):
super(ProcessableWorkflow, self).__init__(configuration=configuration)
assert isinstance(scheme, Scheme)
self._representation = scheme
# first load node handlers if any
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment