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

Florent Guillaume fg@nuxeo.com
Tue, 5 Mar 2002 13:43:06 -0500


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

Added Files:
      Tag: Zope-3x-branch
	IWorkflowWorkitem.py WorkflowWorkitem.py 
Log Message:
tres+florent: Initial cut of workflow items.

=== Added File Zope3/lib/python/Zope/App/Workflow/IWorkflowWorkitem.py ===
"""
Interface for workitems
"""

from Interface import Interface


INIT = 0
BEGUN = 1
COMPLETED = 2
FAILED = 3

class WorkflowWorkitemException(Exception):
    """
    Exception for workitems.
    """

class IWorkflowWorkitem(Interface):
    """
    Base interface for workitems.
    """

    def getProcessInstance():
        """
        Get the process instance this workitem is about.
        Returns a IWorkflowProcessInstance.
        """

    def begin(data):
        """
        Begin work on a workitem.
        Can raise WorkflowWorkitemException.
        """

    def complete(data):
        """
        Complete work on a workitem.
        Can raise WorkflowWorkitemException.
        """

    def fail(data):
        """
        Abort work on a workitem.
        Can raise WorkflowWorkitemException.
        """

    def assign(assignee, data):
        """
        Assign a workitem to a principal.
        assignee implements IPrincipal.
        Can raise WorkflowWorkitemException.
        """

    def getState():
        """
        Get the internal state of the workitem.
        Returns one of INIT, BEGUN, COMPLETED, FAILED.
        """

    def getAssignee():
        """
        Get the assignee.
        Returns a IPrincipal or None.
        """


=== Added File Zope3/lib/python/Zope/App/Workflow/WorkflowWorkitem.py ===
from Zope.App.Workflow.IWorkflowWorkitem import IWorkflowWorkitem, \
     WorkflowWorkitemException, \
     INIT, BEGUN, COMPLETED, FAILED

class WorkflowWorkitem:

    __implements__ =  IWorkflowWorkitem

    def __init__(self, process_instance):
        self._process_instance = process_instance
        self._assignee = None
        self._state = INIT

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

    def getProcessInstance(self):
        '''See interface IWorkflowWorkitem'''
        return self._process_instance

    def begin(self, data=None):
        '''See interface IWorkflowWorkitem'''
        if self._state is not INIT:
            raise WorkflowWorkitemException
        self._state = BEGUN

    def complete(self, data=None):
        '''See interface IWorkflowWorkitem'''
        if self._state is not BEGUN:
            raise WorkflowWorkitemException
        self._state = COMPLETED

    def fail(self, data=None):
        '''See interface IWorkflowWorkitem'''
        if self._state is not BEGUN:
            raise WorkflowWorkitemException
        self._state = FAILED

    def assign(self, assignee, data=None):
        '''See interface IWorkflowWorkitem'''
        if self._state in (COMPLETED, FAILED):
            raise WorkflowWorkitemException
        self._assignee = assignee

    def getState(self):
        '''See interface IWorkflowWorkitem'''
        return self._state

    def getAssignee(self):
        '''See interface IWorkflowWorkitem'''
        return self._assignee

    #
    ############################################################