[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
#
############################################################