def doActionFor(self, ob, action, wf_id=None, *args, **kw):
    """Execute the given workflow action for the object.

    Invoked by user interface code.
    The workflow object must perform its own security checks.
    """
    # Don't recurse for initial transitions! # XXX urgh
    
    #isproxyfolderishdoc = isinstance(ob, ProxyFolderishDocument) or \
    #                      isinstance(ob, ProxyBTreeFolderishDocument)
    #if isproxyfolderishdoc and not kw.has_key('dest_container'):
    #    return self._doActionForRecursive(ob, action, wf_id=wf_id,
    #                                      *args, **kw)
    #else:
    
    #import pdb;pdb.set_trace()
     
    return self._doActionFor(ob, action, wf_id=wf_id, *args, **kw)

from Products.CPSWorkflow.workflowtool import WorkflowTool
WorkflowTool.doActionFor = doActionFor