[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/Workflow - IWorkflowService.py:1.1.2.1 WorkflowService.py:1.1.2.1

Vincenzo Di Somma e.disomma@icube.it
Wed, 6 Mar 2002 05:49:55 -0500


Update of /cvs-repository/Zope3/lib/python/Zope/App/Workflow
In directory cvs.zope.org:/tmp/cvs-serv4731

Added Files:
      Tag: Zope-3x-branch
	IWorkflowService.py WorkflowService.py 
Log Message:
Workflow Service added

=== Added File Zope3/lib/python/Zope/App/Workflow/IWorkflowService.py ===

"""
    Interfaces for Workflow Service.
"""

from Interface import Interface


class IWorkflowService( Interface ):
    """
        Interface for workflow service.
    """

    def listEngine():
        """
           Return the list of engine and their interfaces
        """
        pass


    def getEngine(IWorkflowEngine):
        """
           Return a workflow engine giving its interface
        """
        pass


    def addEngine(WorkflowEngine):
        """
           Add a workflow engine
        """

    def removeEngine(WorkflowEngine):
        """
           Remove Workflow engine from the system
        """
        pass


    def listWorkflowEngineActions():
        """
           Return an aggregation of the actions provided
           by the present engines
        """

    


=== Added File Zope3/lib/python/Zope/App/Workflow/WorkflowService.py ===
from Zope.App.Workflow.IWorkflowService import IWorkflowService

class WorkflowService:

    __implements__ =  IWorkflowService

    ############################################################
    # Implementation methods for interface
    # Zope.App.Workflow.IWorkflowService

    engines = ()

    def removeEngine(self, engine):
        '''See interface IWorkflowService'''
        self.engines = tuple(filter(lambda x: x != engine, self.engines))

    def listWorkflowEngineActions(self):
        '''See interface IWorkflowService'''
        result = []
        for engine in self.engines:
            result.extend(engine.listActions())
        return result
    
    def listEngine(self):
        '''See interface IWorkflowService'''
        return self.engines

    def addEngine(self, engine):
        '''See interface IWorkflowService'''

        self.engines = self.engines + (engine,)

    def getEngine(self, interface):
        '''See interface IWorkflowService'''

        result = []
        for engine in self.engines:
            if interface.isImplementedBy(engine):
                result.append(engine)
        return result
    
    #
    ############################################################