Workflow: come si fa a scatenare una transizione di stato da codice python?
Up to Table of Contents
Qual è la modalità corretta per effettuare in sicurezza transizioni di workflow da codice (utilizzando il metodo isActionSupported)?
Supponiamo di dover cambiare lo stato dell'oggetto obj: non basta controllare solo che nello stato attuale in cui si trova l'oggetto sia definita la transizione desiderata che porta al nuovo stato. Ciò perchè salteremmo la valutazione dell'espressione Expression, il controllo dei permessi che possono essere definiti su ogni transizione e potrebbe quindi generarsi un'eccezione inaspettata.
Ecco il codice:
portal_workflow = getToolByName(self, 'portal_workflow')
wf_list = portal_workflow.getWorkflowsFor(obj)
if wf_list:
wf = wf_list[0]
if wf.isActionSupported(obj, 'publish'):
p_wf.doActionFor(obj, 'publish')